Making Dashboard Available for Non Itil Users
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-26-2020 06:14 AM
Hi,
Hope that you all are staying safe during these difficult times.
I have a requirement but i am not sure how to approach this one, hope that you guys can assist me with this.
Our Service Delivery Managers has created dashboards for our Daughter Company's and want to share them with a specific person within that company. Each company has an own dashboard.
What i did:
* Created a new Group
* Created new role and added a test user
*Created new ACL on Incident table with Read access
*Added Role to ACL
*Added Role to Group
*Shared the dashboard with the testuser
I imitated the the testuser and i can see the dashboard but he sees only his own data. How can he see alll tickets within his own company ? Did i configure the ACL wrong ? Or are there roles available out of the box which he can use ?
Help me out...
Thanks in advance!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-26-2020 06:43 AM
There is a query business rule on Incident called "incident query" that would limit what incidents a user can see to those that they have opened, are the caller, or are a member of the watch list. You would need to modify this business rule as well.
You probably don't want all users to be able to see all incidents, so you would want to check for the role that you have assigned for your dashboard, over ride the BR if they have that role, but otherwise do what it does now if not.
Hope this helps!
If this was helpful or correct, please be kind and click appropriately!
Michael Jones - Proud member of the CloudPires Team!
Michael D. Jones
Proud member of the GlideFast Consulting Team!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-26-2020 06:52 AM
Hello,
We had a similar requirement in our organization and with the help of our (former) system integrator, we managed to achieve what you are looking for.
We have, what we call, service groups. For example:
- Service 1
- Service 2
- Service 3
- etc.
Users are added in the different groups according to their needs.
We have a business rule which auto-populates the the "Watch list" of every incident that is logged. The rule works like that:
- It checks the service assigned to the incident (for example Service 1)
- It checks the company of the caller
- It searches through all our users and picks up the users from the same company that are in the group Service 1 and adds them to watch list
By doing that, those users are able to see all the tickets logged by their organisation with a second layer based on the service.
I hope it helps.
This is the script used by our Service Integrator.
(function executeRule(current, previous /*null when async*/) {
var serviceGroupType = gs.getProperty('bdo.service.group.type');
var grCurrentUser = current.caller_id.getRefRecord();
var currentUserCompany = '' + grCurrentUser.getValue('company');
var grIncidentService = current.business_service.getRefRecord();
var incidentServiceGroup = grIncidentService.getValue('user_group') || '';
if(gs.nil(incidentServiceGroup) || gs.nil(currentUserCompany)){
if(!gs.nil(current.watch_list)){
current.watch_list = '';
}
return;
}
var serviceUsers = [];
var grMembership = new GlideRecord('sys_user_grmember');
grMembership.addQuery('group', 'IN' , incidentServiceGroup);
grMembership.query();
while(grMembership.next()){
serviceUsers.push(grMembership.getValue('user'));
}
if(!serviceUsers.length){
if(!gs.nil(current.watch_list)){
current.watch_list = '';
}
return;
}
var companyServiceUsers = [];
var grUser = new GlideRecord('sys_user');
grUser.addActiveQuery();
grUser.addQuery('company', currentUserCompany);
grUser.addQuery('sys_id', 'IN', serviceUsers);
grUser.query();
while(grUser.next()){
companyServiceUsers.push(grUser.getValue('sys_id'));
}
if(!companyServiceUsers.length){
if(!gs.nil(current.watch_list)){
current.watch_list = '';
}
return;
}
current.watch_list = '' + companyServiceUsers;
})(current, previous);