skybow Best Practice - Do's and don'ts

Document created by Matthias_Walter Employee on Sep 18, 2019Last modified by Matthias_Walter Employee on Nov 8, 2019
Version 3Show Document
  • View in full screen mode

This article should help you when to use what when creating a business application using skybow.

Please let us know in the comment section below if you have other/different best practices you would like to share with us. We really appreciate every kind of contribution.


Solution Management

  • DO...
    • Create Site Collections for staging
      It is highly recommended to build the solution in a dev/test environment before deploying it into production. You don't have to use a different tenant for this, but a dedicated site collection is sufficient. The skybow Solution Studio offers the possibility to easily roll out complete solutions from dev to test to production step by step and update them later with ease.
    • Create only one solution per site.
      If needed create sub-sites for connected solutions.
    • Add existing lists to your solution to get them enhanced and/or packaged
      If you create a solution in a site where lists already exist and you want to extend them with skybow functionality or just package and roll them out, you can easily make them part of your solution. In the Dossier/List creation wizard select the option 'Use an existing list from SharePoint site'. This will add it as a solution element. Only lists and libraries listed in the Solution Studio will be packaged.
    • Create packages from time to time (
      A solution package is like a version of your solution. Create a package if you did a major change at least. You can start from a package version to create another solution or if you or someone else accidentally deletes your site or site collection there is a chance to recreate it based on your latest package. Without a package there is nothing for us to restore since it is all stored in your site.
      Don't forget to give it a helpful description that you know what you've added or changed later on.
    • Update your solution (features) and deployments from time to time
      skybow is releasing Solution Studio updates twice a month. Find all the Release Notes Solution Studio Online here. An update can include Solution Studio improvements or feature updates. Solution Studio is updated automatically, but if there are updates for the features you've used in your solution, there will be an update option in the lower left corner below the solution elements. If you click on update, this will only update the features used in the current site, but not the deployments. To bring the feature updates to your deployments as well, create a new package version after your Solution Studio is up-to-date, and update the deployments with the latest package.
    • Package Quick Launch navigation links
      To package quick launch navigation links go to your SharePoint site and configure the left navigation to your needs. Then go back to your solution in Solution Studio -> Other Assets -> Navigation and select the navigation links you want to get packaged and deployed. If there are different links in the target site, they will remain, as there are not links deleted during deployment.
    • Use lookup fields if the user is to make customizations/extensions independently
      If you want to give the user the possibility to extend a drop down list manually after deployment, choose a lookup column and a corresponding lookup list which allows them to add their own values.
    • Use choice fields for fixed values only
      For a selection of fixed values e.g. to be used in your process like a status or phase use choice fields. They are packaged and therefore you can always rely on their existence.
    • Need a CAML query e.g. in a skybow GetFirstValueForQuery function? (What's CAML?)
      Using the skybow Expression Language you have those powerful functions in the context objects in the right panel to query a list.

      One parameter is the CAML query, but there is no Query Builder like on other places. Of course you could install one of the available CAML Query Builder tools out there, but there is a much easier way by using the built-in Query Builder in the Scheduled Actions wizard.
      In Solution Studio click on the list/library you want to query and navigate to 'Things in background' -> 'Scheduled Actions' and add a Scheduled Action. In this wizard click on the Filter icon to open up the query builder.

      Configure the desired filter and click 'Save'. This will write the appropriate CAML query into the filter field. From there you can copy the CAML and cancel the Scheduled Action wizard again.
      For the query to be used in an expression function like GetFirstValueForQuery you have to crop it to have the <Where>...</Where> part only and remove the ProviderType property (which is only used in the query builder case)
    • Use the promise pattern
      How to execute an asynchronous function in skybow actions or any other expression configuration?
    • Use icons on tabs and actions to improve user guidance and usability
    • Share your solutions with others (How to share a solution?)
      Each solution has a solution owner who created it initially. In it's default state the solution is only visible to it's owner on their Solution Studio dashboard ( To make sure the solution can be edited if you are on holiday or you leave the company, create a generic dev Solution Studio user to share with or simply share it with your deputy. Another option would be to create each solution with this generic dev account and share it from there with yourself. Make sure the email address you share the solution with has a skybow Solution Studio account and is owner on your SharePoint site to make changes.
      Once you have accepted a shared solution by clicking on the corresponding link in the sharing email, you will find the solution in your "Shared Solutions" section.

  • DON'T...
    • Do not use hard-coded URLs or IDs
      e.g. If you have to add a list URL or ID somewhere use out-of-the-box or skybow Placeholders (e.g. [[@Web.ServerRelativeUrl]] or [[@Form.ListId]]) to make it dynamic. Always keep in mind that those things will change when you deploy a solution to another place and it won't work anymore if they are hard-coded.
    • Do not use spaces or special characters when creating columns or lists
      The initial name will be used as internal name which cannot be changed later on. When adding business logic using the skybow Expression Language the internal names are used. If you've used spaces or special characters these expressions are not easy to write and it's not very legible.
      You can change the display name later if you click on edit again.




  • DO...
    • Use Regex to validate form inputs (What is Regex?)
      In a skybow Validation Expression you can use Regex to validate form inputs
      Field Validation Examples using Regex
    • Show/hide something on a form based on a group membership
      Using a skybow Form (classic or modern) there is a visible expression configuration on each control, not just on fields. In the skybow Expression Builder there is a powerful function in the Context Objects -> User section that can be used to check if a user is in a specific SharePoint Group (AD Groups cannot be supported). The result of this function can be used to show/hide a control on a form.

    • Cascading lookups
    • Visualize the current process status or phase using an image in a rich text control
    • Hide fields on NewFor/EditForm when they are calculated in the background
    • Rich Forms: Signature field ->
    • Rich Forms (classic): After export/import from NewForm to an EditForm, add the toolbar again, as there are additional placeholders (ct, version, author, editor) on an EditForm, which are empty if they are not loaded



  • DO...
    • Create your custom action type if you need an action which does not exist over and over again instead of using an execute script action
      Custom Action setup (create your own action type)
    • Indicate to the user what actions are being executed using show message actions in between


  • DO...
    • Disable the out-of-the-box full text search box of views when using a skybow List View Search
      It does not make sense to have two different search boxes. Therefore edit the list view webpart and uncheck the "Display search box" option in the Miscellaneous section
    • Pass default values as URL parameters
      If you want to open a list view having LVS automatically populated with a filter value, there is an option to pass them using the following format: s[InputName]=[Value]
      To execute this filter immediately add s_runImmediate=true to the URL.