
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-15-2018 05:08 PM
Hi All,
I'm trying to implement some code to automatically set the assignee of an Incident. I have created a Before Business Rule called 'Set Assignee to Auto-Follow', on the 'Incident' table, run on 'insert' and 'update', order 100, condition 'active=true'. Code for this is below:
(function executeRule(current, previous /*null when async*/) {
//Auto add user as a follower of record
var gp = new GlideRecord('live_group_profile');
gp.addQuery('document', current.sys_id);
gp.addQuery('table', current.getTableName());
gp.query();
if (gp.next()) {
gs.info('Profile record == ' + gp.short_description);
addMember(gp.sys_id, current.assigned_to);
}
function addMember(id, user) {
//first need to check if assigned to user has live feed profile
var lpUser = checkLiveFeedProfile(user);
//now to check to see if user is in group already, if not, add
var gr = new GlideRecord('live_group_member');
gr.addQuery('group.sys_id', id);
gr.addQuery('member.sys_id', lpUser);
gr.query();
if (gr.next() && (gr.state == 'active' || gr.state == 'admin')) { //need to make sure user wasn't already following.
gs.info('user =' + gr.member.name + ' already a member as ' + gr.state);
} else {
//this will handle if user was in group already but inactive(meaning they unfollow record) and will just create member if not in group already
gs.info('User = ' + user.name + ' was added/reactivated to live group');
gr.state = 'active';
gr.group = id;
gr.member = lpUser;
gr.update();
}
}
function checkLiveFeedProfile(user) {
var lp = new GlideRecord('live_profile');
lp.addQuery('document', user);
lp.query();
if (lp.next()) {
//user already has live profile
gs.info('User ' + lp.name + ' had an live feed account');
return lp.sys_id;
} else {
//create one
gs.info('user ' + user.name + ' did not have live feed profile account. creating now...');
lp.table = 'sys_user';
lp.document = user.sys_id;
lp.type = 'user';
lp.name = user.name;
return lp.update();
}
}
})(current, previous);
The code was used from another post which is Make a user a follower via a script - but I can't get it working - although others appear to have it working successfully...
The debug below shows it's running, see below - but when I impersonate the user assigned to a ticket they aren't automatically set to 'following'.
13:51:14.103: Global ==> 'Set Assignee to Auto-Follow' on incident:INC0044360
13:51:14.104: Execute before query business rules on live_group_profile:
13:51:14.104: Global ==> 'LiveFeed Group Profile Visibility' on live_group_profile:
13:51:14.104: Global <== 'LiveFeed Group Profile Visibility' on live_group_profile:
13:51:14.104: Global ==> 'LiveFeed Group Profile Visibility 2.0' on live_group_profile:
13:51:14.105: Global <== 'LiveFeed Group Profile Visibility 2.0' on live_group_profile:
13:51:14.105: Finished executing before query business rules on live_group_profile:
13:51:14.107: Global <== 'Set Assignee to Auto-Follow' on incident:INC0044360
I'm hoping I've just forgotten something simple - any help is appreciated!
I will also need to do this for HR Cases, but once I have the above working I'll be able to transfer this across.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-16-2018 01:55 PM
Hi Carl,
Made one update to the script. Please try this and let me know if it works.
(function executeRule(current, previous /*null when async*/) {
//Auto add user as a follower of record
var gp = new GlideRecord('live_group_profile');
gp.addQuery('document', current.sys_id);
gp.addQuery('table', current.getTableName());
gp.query();
if (gp.next()) {
gs.addInfoMessage('Profile record == ' + gp.short_description);
addMember(gp.sys_id, current.assigned_to);
}
else
{
gp.initialize();
gp.setWorkflow(false);
gp.name = current.number;
gp.short_description = current.short_description;
gp.document = current.sys_id;
gp.document_group = "true";
gp.table = current.getTableName();
gp.visible_group = "false";
gp.public_group = "false";
var gpid = gp.insert();
addMember(gpid, current.assigned_to);
}
function addMember(id, user) {
//first need to check if assigned to user has live feed profile
var lpUser = checkLiveFeedProfile(user);
//now to check to see if user is in group already, if not, add
var gr = new GlideRecord('live_group_member');
gr.addQuery('group.sys_id', id);
gr.addQuery('member.sys_id', lpUser);
gr.query();
if (gr.next() && (gr.state == 'active' || gr.state == 'admin')) { //need to make sure user wasn't already following.
gs.addInfoMessage('user =' + gr.member.name + ' already a member as ' + gr.state);
} else {
//this will handle if user was in group already but inactive(meaning they unfollow record) and will just create member if not in group already
gs.addInfoMessage('User = ' + user.name + ' was added/reactivated to live group');
gr.state = 'active';
gr.group = id;
gr.member = lpUser;
gr.update();
}
}
function checkLiveFeedProfile(user) {
var lp = new GlideRecord('live_profile');
lp.addQuery('document', user);
lp.query();
if (lp.next()) {
//user already has live profile
gs.addInfoMessage('User ' + lp.name + ' had an live feed account');
return lp.sys_id;
} else {
//create one
gs.addInfoMessage('user ' + user.name + ' did not have live feed profile account. creating now...');
lp.table = 'sys_user';
lp.document = user.sys_id;
lp.type = 'user';
lp.name = user.name;
return lp.update();
}
}
})(current, previous);
Please mark this response as correct or helpful if it assisted you with your question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-15-2018 06:42 PM
Not sure if this will work, but try the below code.
(function executeRule(current, previous /*null when async*/) {
//Auto add user as a follower of record
var gp = new GlideRecord('live_group_profile');
gp.addQuery('document', current.sys_id);
gp.addQuery('table', current.getTableName());
gp.query();
if (gp.next()) {
gs.addInfoMessage('Profile record == ' + gp.short_description);
addMember(gp.sys_id, current.assigned_to);
}
else
{
gp.initialize();
gp.name = current.number;
gp.short_description = current.short_description;
gp.document = current.sys_id;
gp.document_group = "true";
gp.table = current.getTableName();
gp.visible_group = "false";
gp.public_group = "false";
var gpid = gp.insert();
addMember(gpid, current.assigned_to);
}
function addMember(id, user) {
//first need to check if assigned to user has live feed profile
var lpUser = checkLiveFeedProfile(user);
//now to check to see if user is in group already, if not, add
var gr = new GlideRecord('live_group_member');
gr.addQuery('group.sys_id', id);
gr.addQuery('member.sys_id', lpUser);
gr.query();
if (gr.next() && (gr.state == 'active' || gr.state == 'admin')) { //need to make sure user wasn't already following.
gs.addInfoMessage('user =' + gr.member.name + ' already a member as ' + gr.state);
gs.eventQueue("live_feed.team_member.invited", gr, user, gs.getUserDisplayName());
} else {
//this will handle if user was in group already but inactive(meaning they unfollow record) and will just create member if not in group already
gs.addInfoMessage('User = ' + user.name + ' was added/reactivated to live group');
gr.state = 'active';
gr.group = id;
gr.member = lpUser;
gr.update();
gs.eventQueue("live_feed.team_member.invited", gr, user, gs.getUserDisplayName());
}
}
function checkLiveFeedProfile(user) {
var lp = new GlideRecord('live_profile');
lp.addQuery('document', user);
lp.query();
if (lp.next()) {
//user already has live profile
gs.addInfoMessage('User ' + lp.name + ' had an live feed account');
return lp.sys_id;
} else {
//create one
gs.addInfoMessage('user ' + user.name + ' did not have live feed profile account. creating now...');
lp.table = 'sys_user';
lp.document = user.sys_id;
lp.type = 'user';
lp.name = user.name;
return lp.update();
}
}
})(current, previous);
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-21-2018 03:16 AM
Hi Sanjiv,
Apologies for replying to an old post of yours but you seem to be very knowledgeable about the workings of the Connect Chat.
Is there any way that I can create a custom message like the Italicised "Ian Rumble has been added to the group" above?
I would like to send an Italicised message to the chat to give the appearance of being system generated, and so it also does not post a Comment/Work note into the related record eg Incident.
Thanks,
Mark

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-21-2018 10:59 AM
How are you going to post the message. Did you try adding html tags for ex <i>Your text</i>
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2018 09:56 AM
... I haven't decided yet.
I'm still looking into my options, been combing the Community trying to find the best method. Currently leaning towards:
new SNC.LiveFeedApi().addMessage('message text', liveGroupProfileID)
I'd love to find out more about the LiveFeedApi (in fact the SNC.* as a whole) but my understanding is that that code has not been made public so it isn't documented?
I'd also like to see the code behind 'GlideappLiveFeedUIAction()' but I believe that is not public either. 'new GlideappLiveFeedUIAction().follow(current);' is the line called when you click follow on a record.
Unfortunately the LiveFeedApi processes the message provided as a string so adding HTML tags doesn't work. If I could get at the code they're calling when that button is clicked I could see how they're firing it, very frustrating

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-23-2018 02:58 PM
Not sure, if I can help you with that. May be you should open a new thread. I haven't worked on Connect Chat much. I did have sometime to explore few months back, so I was able to help. But now I am completely occupied.
Please mark this response as correct or helpful if it assisted you with your question.