Category: Development
Current page:

Building a Learning Management System in SharePoint

By: Will Cooper | Comments [0] | Category: Development | 2/23/2017

Almost all organizations prioritize training their employees. SharePoint is a great place to build and manage your training related information.

Here is an example of how you can build a dynamic solution easily by just using Infowise Ultimate Forms in SharePoint.

This solution allows for management of courses and classes and lets users see individual dashboards and calendars which show only the filtered information that is relevant.

It is easy to get started with a basic system that you can build according to your own organization's needs and then add extra functionality after your system is live.

Let me know if you have any questions on how to go about making a system like this. I'd love your feedback - please send questions to



The Power of Conditions

By: Vladi Gubler | Comments [0] | Category: Development | 11/28/2016


When you use Ultimate Forms, conditions are everywhere. Many components use conditions to determine when an alert needs to be sent when an action needs to run or what columns to show on a form. Conditions are a great way of pinpointing the exact cases when the component should run, giving you precise control over your solution.

Here are some of the fantastic features that make conditions in Ultimate Forms so useful:


We will check the value you enter in a condition and make sure it's valid both in terms of syntax and expected data type. For example, when you miss a bracket, your syntax is invalid. And when you try to compare a number field to a date value, there is a data type mismatch. Note that you can compare text columns to any value, it will simply be automatically converted to text. Yes/no columns should be compared to the textual representation of yes/no in your language (for instance, yes, yeah, sure, approved, true, 1 and so on), signature columns behave just as yes/no. Using our Value Builder you don't need to memorize anything, both column names and functions are available for you to just double-click and use.


You can compare column values to typed-in values or to values of other columns, but the real power comes with the use of functions. Functions allow you to manipulate values and even perform calculations, based on your own logic. For example, use $Year to return the year part of a date or use $Extract to return a part of text according to a pattern. There is a wide selection of functions available. You can even combine multiple functions together!

After Change Conditions

Sometimes it's worth knowing not only what is the current value of a column, but also what was the previous value. For example, you only want to send an alert about a request being approved when the approval status changes to Approved. The item might get updated again in the future, while still approved, but we don't want to send any more alerts. That's when you use our "after change" condition property to make sure the condition is only passed when the column's current value satisfies the condition and the previous value does not. It's also a great way of determining if a column has been changed at all.

Data Type-specific Operators

Depending on the data type of the column involved you will see a different set of operators. For example, text columns will show operators such as Equals or Contains, while number columns will show such operators as Greater than or Less than. The correct set of operators is presented automatically.


Combining multiple conditions together you create even more sophisticated solutions. You are able to combine using either And or Or. We use a simple, yet effective system, where the current conditions is evaluated in conjunction with the result of all previous conditions. This allows you to develop complex logic without the need for parenthesis.

Internal Column Names

Conditions are stored using internal column names. These names are assigned when a column is the first creator and do not change when you rename a column or display your site in a different language. Nevertheless, when editing conditions, you always see the display names of the columns, exactly as you know them. Rename a column, and the conditions keep working without any need for updates.

In summary, conditions help make your solution smarter, use them whenever you can and explore their power to the fullest.


Integrating applications using REST

By: Vladi Gubler | Comments [0] | Category: Development | 10/19/2016


In today's world it's important to make your applications talk to each other and exchange data. But in today's cloud-based world, some of the applications you use don't even belong to you! Fortunately, there is an industry-standard way of gluing the pieces together. REST is a simple but powerful protocol that modern applications expose to allow you to fetch, add, update and delete information over the web, without the need for direct programmatic access.

Today I'm going to show you how to leverage this protocol to be able to link together two applications:

  1. Your SharePoint (on-premises or in Office 365)
  2. Mailgun - an incredibly powerful, but simple mass mailing service

Basically, what we are going to do is create a mailing list in Mailgun for our partners and add the partner email to the list automatically whenever a partner is added to a Partners list in SharePoint. So next time you want to send your newsletter to partners, this new partner will already be on the list.

We are going to be using Ultimate Forms app (yes, this example is based on Office 365), but you can also use the on-premises version. We are going to be using just the Actions component, so you can also get it separately if you prefer.

  1. First, create a list of partners in your SharePoint site. It can be any type of list, as long as it contains text columns for the partner name and email.
  2. Set up your free Mailgun account here. They even allow you to send up to 10,000 emails per month for free! Mailgun with provide you with an API key that will need for the following steps. You can find the API key under Domains -> <your production domain>
  3. In Mailgun set up a mailing list called Partners, with an email such as
  4. From your Partners list in SharePoint click on Design button in the ribbon to enter Ultimate Forms, and then under Configure Business Logic click on Actions
  5. Select Call web service as your action type and choose New as your event.
  6. Switch to Action Settings tab
  7. Switch to REST mode under Service type.
  8. Enter the URL for the REST endpoint. It will be<your mailling list URL>/members
  9. Under Authentication choose Credentials.
  10. Under User name enter api.
  11. Under Password enter your API key.
  12. Set Method to POST.
  13. Map paramers name and address to the columns containing your partner name and email address respectively.
  14. Save the action.

This is it, when you add your next partner to the SharePoint list, their details will be automatically added to the mailing list in Mailgun!


More design examples

By: Vladi Gubler | Comments [0] | Category: Development | 10/3/2016


UPDATE (206-11-14): you can now import styles directly through a file!

We got great response for my previous example of form design that can be easily achieved using Ultimate Forms. Today I've create a couple more designs to help our customers create great looking forms.

The first design is dark and modern:

Download the style here and then import into your list:


The second design is very pink and cheerful :)

Download this style here and then import it into your list

Shouldn't take you more than just a minute to apply it, feel free making any modification to suit your needs!


How to preserve tab width across tabs

By: Vladi Gubler | Comments [3] | Category: Development | 6/15/2015


By default Smart List Pro tabs adapt to the content width. So depending on type and number of columns, each tab can be a little bit wider or narrower. Some users would prefer to have a constant width to their tabs.

Fortunately, it's very easy to do:

  1. Go to your list and click on Design (under List ribbon)
  2. Click on Tabs and tab permissions
  3. Scroll down to Styles section
  4. If you already have a style, edit it, otherwise you can create a new one
  5. Under Custom Styles add the following:
    1. Selector: .iwslp-maintable
    2. Value: width: 1000px - you can enter any width you find suitable. Note that if the width is too small to accomodate your content, you will not achieve the desired effect
  6. Add your custom style, add/update style and save the tab settings (don't forget to save all 3).
  7. Go to your form, your tabs should have the same width now