This article should help you when to use what when creating a business application using Teamsware.
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.
·
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 Teamsware 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.
·
Disable
alternative languages on source and target sites, because we can only package
and publish the base language and it leads to confusion
·
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 Teamsware 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
Teamsware
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 Teamsware
GetFirstValueForQuery function? (What's CAML?)
Using the Teamsware 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 Teamsware 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 (https://solutions.Teamsware.com).
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 Teamsware 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.
·
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 Teamsware Placeholders (e.g.
[[@Web.ServerRelativeUrl]] or [[@Form.ListId]]) to make it dynamic.
Or if you have deployed
items in a list (list content activated for package & publish) you want
reference/get it in an Expression use one of the Teamsware Query Functions in combination with a custom
unique column value since the ID is most likely not the same in another site
after deployment.
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 Teamsware
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 Teamsware 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 Teamsware Form (classic or
modern) there is a visible expression configuration on each control, not just
on fields. In the Teamsware 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
https://www.Teamsware.com/hubfs/docs/o365/webframe.html#LookupFiltering.html
· 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 -> Handwriting
· 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
· Use console.log(); or debugger; in Execute Code Expressions in Teamsware Expression Builder to check variable values during development
· DO...
·
Disable the out-of-the-box full text search box
of views when using a Teamsware 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.
https://www.Teamsware.com/hubfs/docs/o365/webframe.html#RuntimeMode.html
· DO...
· check out our Learning and Community section for help
· post your improvement Ideas and vote ideas from others to give it a higher priority in our development backlog
·
follow places you are interested in (e.g. Release Notes Solution Studio Online)
· if you have configuration questions ask them in the Community or book our expert services
· DON'T...
· use our support (support@Teamsware.eu) for configuration questions. Ask them in the discussions. only submit a ticket for installation issues or bugs