BMC Service Desk Express has awesome customisation tools that allow you create complete new tables (modules) for storing custom information in your Service Desk Express database. These custom modules can be presented in Self Service as well for end-users but here is the catch…
Out of the box you can’t restrict entries created by one client from another client.
Thankfully, with a little (well quite a lot actually) custom scripting it is possible. I should stress however, that if you are going to do this, MAKE SURE YOU BACK UP EVERYTHING (DB and Self-Service directories) FIRST!!!
So let’s say that you want to create a new custom module to record feedback such that your clients can log Complaints, Compliments and Observations. The design of our custom module is as follows:
|Table Name||View Name||Display Name|
|Alias Name||Column Name||Details|
|Sequence||SEQUENCE||INT, Primary Key, Created by Default|
|Last Modified||LASTMODIFIED||DATETIME, Created by Default|
|Last User||LASTUSER||STRING(30), Created by Default|
|Seq.Group||_GROUP_||INT, Created by Default|
|InActive:||_INACTIVE_:||SMALLINT, Created by Default|
|Seq.Client||SEQ_CLIENT||INT, Foreign Key to Clients, NOT NULL|
|Feedback Type||FEEDBACK_TYPE||Validated Field (Compliment, Complaint, Observation), NOT NULL|
|Statement||STATEMENT||STRING(Unlimited), NOT NULL|
|Seq.Incident||SEQ_INCIDENT||INT, Foreign Key to Incidents, NULL|
|Status||STATUS||Validated Field (O,C), NOT NULL|
We then create a form in for Self-Service, an appropriate popup, and modify the navigation bar such that the new custom module can be accessed as shown below:
If Client ABARBER (that’s me by the way) submits a feedback record all appears to work perfectly. However, when SBARBER (that’s Sarah my wife) logs in, she can see my feedback and if she were to submit feedback, I would be able to see her’s as shown below:
First run the following SQL command against your SDE DB and store the results somewhere:
SELECT BVD.TBLSEQ, COLSEQ, VIEWCOLNAME FROM dbo.SMSYSBASEVIEWDATA BVD JOIN dbo.SMSYSTABLES T ON T.TBLSEQ =
BVD.TBLSEQ WHERE T.VIEWNAME = ‘Feedback’ ORDER BY COLSEQ
My result looks like the table shown below but yours will look different depending on what you named your fields and how many custom modules you already have:
Download RestrictingCustomSelfServiceModuleByClient.zip containing the files that need to replace the existing BMC files.
In the recurring_hd.asp and recurring_hd.htm files you need to do a find/replace replacing:
- All occurrences of JOATIT_TBLSEQ with the TBLSEQ number returned in the table above (so in my case 1002).
- All occurrences of JOATIT_SEQ_CLIENT with the SEQ_CLIENT number returned in the table above (so in my case 1006).
- All occurrences of JOATIT_STATUS with the STATUS number returned in the table above (so in my case 1013).
In the 1_common_label_message.js file you need to scroll right down the bottom and replace the “My Whatever Your Custom Module Is Called” with in my case “My Feedback”
Save the files and use them to overwrite the existing files in their appropriate directories.
Run the following script against your SDE DB…
INSERT INTO dbo.NAMSYSCSMESSAGES ([SEQUENCE], [LANGSEQ], [MESGNO], [MESGTYPE], [MESG]) VALUES (3224, 1, 1597, 2, ‘My Feedback’)
…and IISRESET you application server.
Hope this helps. Remember to backup everything as it is very easy to make a typo. Also remember, as this is custom code you may well have to reapply it after every patch release from BMC. Who knows, perhaps Service Desk Express 10 will make this post obselete…
As always, comments (positive or negative) are always very welcome and very much appreciated. I do try and answer every single one.
Always looking for your innovations…..
Unfortunately its not working with me
I am using SDE 10.0.123
I need to do the same thing but with a little difference.
I need to restrict by company.
Alan, do you know how to do it?