Since the EWS API requires the user’s login name and password to execute the web service, the broker needs to run under SSO authentication mode. The selected authentication mode must be an AD security provider.
The email address will be retrieved via the System.DirectoryService.AccountManagement API, so make sure the user has a valid email address in AD.
As the broker requires the user’s login name and password to execute the EWS call, the service instance must be set up to use SSO Authentication Method and and AD security provider (by default, K2) must be selected.
The following are the description for the service keys:
UseAutoDiscover – Whether to lookup the URL using the Auto Discover service.
RequireHTTPS – Whether to enforce that the Exchange server’s URL needs to use the HTTPS scheme.
EwsURLFallback – The Exchange server’s EWS URL to be used when the broker fails to get a valid response from the Auto Discover service or when the UseAutoDiscover key is set to false.
Available Methods in K2 Exchange OOFSettings broker
This is the list of methods available:
Get OOF Settings
This method grabs the current selected user’s out of office settings from the Exchange server.
Turn On OOF Notification with Schedule
This method allows the user to turn on the out of office notification, set the reply email content and most importantly set the start and end date/time.
Turn On OOF Notification Permanently
Well, this method is the same as the previous one, except that there is no start and end date/time defined. It will be turned on as long as required.
Turn Off OOF Notification
This method will turn off the out of office notification.
In this article, I’m going to describe how to add a K2 smartforms custom control icon. The official article is located at help.k2.com but it is not 100% accurate and contains mistakes in the CSS sample. Here’s the step by step guide:
Create the icon
The basic requirements of the K2 smartforms custom control icon is that it needs to be a 16×16 pixel image. In this sample, I’ll be using the Microsoft Paint application to create it.
Search for your Paint application in your Windows Start menu and launch it.
In your Paint application, click on Files > Properties.
Set the Width and Height of the image to 16 and click OK.
Draw your icon and save it. In my sample, I’ve saved my image in PNG format.
Adding the icon to your custom control
Now, here are the steps to add your K2 smartforms custom control icon:
Add the icon to your VS project.
You will need to set the icon as a Embedded Resource. So right click on the icon, click on Properties and select Embedded Resource under Build Action.
Add the icon as a WebResource in your control code file. Do take note that your resource name starts with the [Project Name], [Folder Name] and ends with the [Icon File Name], separated by a full stop (.). You should update the resource type, if you are not using a PNG file like me in this sample.
You will need to add the K2 smartforms custom control icon styling in your control’s CSS file now. In the style sample below, you will need to replace a) the control name from “digital signature” to your control’s name and b) update the icon’s WebResource URL to the one you just created in the section above. Note: The CSS style provided at help.k2.com does not include spaces that separates the css class name. This causes the style to not function in your browser.
.tree li.digitalsignature-control > a,
.tree li.digitalsignature-control > span,
.tree li.digitalsignature-control.children > a,
.tree li.digitalsignature-control.children.open > a,
.tree li.digitalsignature-control.children.closed > a,
But, the catch here is the dashboard that we are used to are gone. Parse is not releasing the dashboard along with the source code and the analytics portion. Ok, they heard all the developers and are trying to release the code, but in the mean time this tutorial still works!
Now, today I am going to show how we can leverage and alternative dashboard to connect to Parse.
In this article, I will be using the Parse Server Example and deploy to Heroku using the free tier. This will apply if you are hosting this on your on VPS as well.
Follow the instruction provided by the Parse team, set it up on Heroku free tier ( I am not covering this but if there’s a need, I am happy to provide the instruction).
What does the List Sequence Number custom control do?
It helps you print running numbers on the first column of your List View.
But I can already do that with a SQL View or SQL Stored Procedure…
Well, yes you can, but can your solution:
Add running numbers without altering the original data source?
Can it be do the same for data sources other than SQL?
Can it keep the numbering across different pages? (i.e. pagination)
Can it keep the numbering after a executing sort? (i.e. click on the column headers)
Can it update the numbering adding a new record row? (i.e. adding a new row in a editable list)
So, if you solution can’t do it, then go on and try the List Sequence Number Display custom control! =)
Some things I’ve learned while developing the List Sequence Number Display control
Just to share some of the things I’ve learned from developing this custom control
The parent grid’s html entity ID is always the first set of Guid of my control’s Guid combination
If you look at the generated custom control’s ID via a browser’s Developer Tool, you will see something similar to the following:
In my sample here, the div tag’s ID is “b113bc00-d8f7-4ce5-ae81-be2a0ecfe68d_5a10bfd9-f955-41b2-87f7-17e88cd158db”. So if I want to find the Grid which my control resides in, I just need to get the first set of GUID (b113bc00-d8f7-4ce5-ae81-be2a0ecfe68d), separated by the underscore symbol (‘_’) and look for the GUID combination in the ID of a “div” tag with the class name “grid”.
This is the piece of JQuery I use to get my grid handle.
If you notice, it also checks if the parentIDString found starts with “00000000-“. This is to handle case where by the grid’s View is not within a Form.
So what are the changes I’m listening to?
Based on my first set of observations for display-only view:
On the grid’s div tag, the “pagesize” attribute will be changed whenever a column sort occurs.
On the grid’s div tag, the “listrefreshed” attribute will be written and changes when a list refresh occurs.
On the grid’s div tag, the “actiontype” attribute will change when a row editing event occurs.
With these information, my first observer looks like this:
The “pagesize” attribute will not be written in the grid’s tag. So I can use this to confirm whether the current grid is an editable view.
Since there’s no paging in an editable list view, the usual attributes in my first observation cannot be used to trigger the observer. From subsequent testing, I also found that there’s no other usable attributes to observe for change. My solution then is to listen to the “Column Headers” change by inserting my own custom attribute. It seems that when changes occur on an editable list view, it will refresh the column headers as well.
Well, as the section header says, that’s all I have learned from developing the List Sequence Number Display control. If you are interested in the codes, you can download it from the project from the link at the top of this post. Enjoy!
K2 SmartObject can read and store files into SQL table via its File property. Files to be stored into SQL table will be automatically converted to base64 encoded string and when retrieved from SQL, it will be automatically converted back to binary.
In this article, we will see how to setup and use SmartObject upload file to SQL and test the function in K2 smartforms.
Use SmartObject upload file to SQL
We start by setting up the SQL table. The column that will be storing the file content will be created as a nvarchar(max) type.
If the Service Instance to the SQL database (in this case “FileUploadTest”) has not been created yet, create it. If the Service Instance already exists, refresh the Service Instance. Make sure the new table and its properties are available.
Right-click on the [dbo].[FileUpload] Service Object and select Create SmartObject.
Give the new SmartObject an appropriate Name and click on Publish SmartObject.
You should find the SmartObject at the Category it is created above.
Next, find the SmartObject in K2 Designer and Edit it.
Select the property that is supposed to hold the file content (i.e. fileContent in this case) and click on the Edit button.
Now, this is the most important step. Change the Type to File and click OK.
Lastly, Click Finish to complete editing the SmartObject and you are done.
Now, to test the SmartObject, we will use the Generate View feature. Right-click on the SmartObject and select Generate Views.
Select the checkbox under Item and click OK. This will generate an Item View.
Select the newly created Item View and click on Run.
In the form, fill in the file Name, select a file in file Content field and click Create. This will create the record in SQL.
Take note of the generated ID field value and check against the SQL table created earlier. You will find the newly created record with the file content.
To verify that the file was indeed saved successfully into the table, refresh the View used earlier, fill in the ID field value and click on Read button to load the file. Click on the file to download it and make sure it can be open in the appropriate application.
And that’s all on how to use SmartObject to upload file to SQL.
K2 Smartform is a rapid development tool that provide a WYSIWYG interface. There’s a lot of plus point to this as this closely resemble the visual studio designer or even dreamweaver and K2 have place alot of thought in the Smartform product design and a whole lot of controls are available out of the box.
However, the downside here is that since the K2 Smartform only work within the K2’s technology ecosystem, to extend the capability of the Smartform such as cooking your own controls or even using those commercially available (e.g. Telerik) are limiting.
In this article, we will be writing a mulit part series to show you guys how to build your own custom control.
The K2 Smartform is design such that its almost similar to any custom user control on ASP.NET or Sharepoint Webpart in terms of architecture.
To get started building a K2 Smartform custom control, head over to the following url and install the template that the community have release to help everyone get started.
In K2 blackpearl workflow, you can specify “Run As” credentials on your Server Events. During workflow execution, the event will be ran using the specified account instead of the K2 Service Account (Note: All Server Events are ran using the service account by default). This feature is available in the K2 Studio and K2 Designer in Visual Studio and it is particularly useful when you need to run critical tasks like create create new AD account, provision Exchange mailbox etc. You do not want the K2 Service Account to have all these critical rights and no Developer should create these critical workflows without the K2 Administrator’s knowledge.
Now, the problematic part comes when the Development environment is running on the Development AD whereas the UAT and Production running on the Production AD. It is not possible to embed the credentials in the Server Events now and the only other option is to set it in the K2 Workspace (See article). Setting the credentials in K2 Workspace requires the Administrator to update it on every deployment since it is version specific. Things could get worst when there are multiple events to update in a workflow. To make things simple, we can write a console application that makes use of the workflow management api to update the credentials.