Empowering the business to modify business rules

Service Desk Express ships with a comprehensive, if somewhat clunky, business rules manager that allows the system administrator(s) to view, create, update and delete business rules based on data changes in the Service Desk Express database. Whilst this tool is fit for purpose only system administrators and group administrators are able to use the tool due to permissions and furthermore, require training to do so. This is generally a good idea but there are occasions when you might want someone else in the business to be able to change a setting in a rule such that, for example, an email goes somewhere else.

In these scenarios the risk associated with making this change is minimal and allowing the business to make this change would appear sensible. That said, we don’t want to make everyone a system or group administrator. So what’s the solution.

System Parameters

What we need is a way of storing system parameters that can be used in business rules, calculated fields, emails etc. and we need our support staff to be able to modify those system parameters they own. We can do this by creating a new module in Service Desk Express using the DB Admin Tool.

Example:

Table Name – TBL_PARAMS; Display Name – System Parameters

Property Field 1 Field 2 Field 3 Field 4
Alias Name Param Name Param Value Seq.Owner Owner ID
Display Name Param Name Param Value Seq.Owner Owner ID
Column Name PARAM_NAME PARAM_VALUE SEQ_OWNER CODE
Status Real Real Foreign Key (Support Staff) Restrict Virtual (Support Staff)
Primary Key No No No No
Nullable No Yes No No
Index Yes No Yes No
Unique Yes No No No
Data Entry Type Text Text Numeric Text Upper Case
Database Type nvarchar nvarchar int nvarchar
Length 255 255 4 30
Default <none> <none> <none> <none>

So let’s say that we want to create a business rule that sends an email to a bunch of people whenever an incident goes past its due date and time. The rule might look something like:

Incident – Due Date Exceeded
Conditions
when an Incident

Create
Update occurs with

Expression 1 Comparison Operator Expression 2 Logical Operator
{DB,Incident,State:,”Incident #” = {TR,Incident #}} Equals {TR,Incident #} None

Actions
Action 1

Method Module Form
Create Notifications Notifications
Field Name Value
Subject Incident #{TR,Incident #} has exceeded its due date and time
Body Incident #{TR,Incident #} has exceeded its due date and time. Please do something
Type SMTP Email
Address jbloggs@company.com;fflintstone@company.com

The problem here is that when someone wants to add or remove someone from the mailing you have to get a group or system administrator to do so. What we need to do is modify the rule as follows:

Incident – Due Date Exceeded
Conditions
when an Incident

Create
Update occurs with

Expression 1 Comparison Operator Expression 2 Logical Operator
{DB,Incident,State:,”Incident #” = {TR,Incident #}} Equals {TR,Incident #} None

Actions
Action 1

Method Module Form
Create Notifications Notifications
Field Name Value
Subject Incident #{TR,Incident #} has exceeded its due date and time
Body Incident #{TR,Incident #} has exceeded its due date and time. Please do something
Type SMTP Email
Address {DB,System Parameters,Param Value,”Param Name” = ‘Incident Email Distribution List’}

Additionally, we need to open our new System Parameters form and add a parameter called Incident Email Distribution List with a value of jbloggs@company.com;fflintstone@company.com as per the figure below:

System Parameters

The result of doing this is absolutely nothing! The rule does exactly what it used to. The difference here however, is that you don’t have to be a group or system administrator to update the parameter value. What I would then suggest is that you create a client side business rule that says:

System Parameters – Control Updates
Conditions
On Save in module System Parameters

Expression 1 Comparison Operator Expression 2 Logical Operator
{TR,Owner ID} NotEqual {MAGICUSER} None

Actions
Action 1

Method Module Form
Display Message System Parameters <Current Form>
Field Name Value
Message Box Type OK
OK (True) Button Text OK
Exit Rule if OK clicked True
Window close button (x) should function as Exit Rule
Message You can’t update a record you don’t own.

Now you have a situation where, as a system administrator, you can grant every support staff user select and update permissions to this module; insert permissions to, for example, EXTERNAL_SUPPORT (on the grounds that there is no point in inserting a system parameter without some use for it and only system/group administrators will be creation functionality based on these parameters), and delete permissions to no-one. Add a version of the form to their navigator bar that has the Parameter Name and Owner ID as display only and your good to go.

In the next post I will show another use for this system parameters table when it comes to calculated fields…