Jaspal Singh
Mega Patron
Mega Patron

Bookmarks/Favourites can be defaulted on basis of roles/groups any other condition if required & can be pushed for all existing Users in one go. Thus helping Users with a specific role/group to get default set of favourites added instead of Users going & getting it created for themselves.

For instance Users with ITIL role can be defaulted with below favourites. 

1. SLA for My Group Tasks

2. SLA for Ny Tasks

3. Tasks Assigned to Me

3. My approvals

Since, Bookmarks (sys_ui_bookmark)  table holds the favourites below fix script/background script can be used for pushing favourites as mentioned above in one go for all Users with ITIL role. A scheduled job also can be written if required with appropriate condition to avoid duplication of favourites being added to same set of Users.

For Fix Script/Background script

var jsonFavList = {
  "SLA for My Group Tasks": "task_list.do?sysparm_query=assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744&sysparm_first_row=1&sysparm_view=",
  "SLA for My Tasks": "task_list.do?sysparm_query=%5Eassigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe&sysparm_first_row=1&sysparm_view=",
  "Tasks Assigned to Me": "stateNOT INclosed_complete,closed_abandoned^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
  "My approvals": "sysapproval_approver_list.do?sysparm_query=approverDYNAMIC90d1921e5f510100a9ad2572f2b477fe&sysparm_first_row=1&sysparm_view="
};

var g = new GlideRecord("sys_user_has_role");
g.addEncodedQuery("role=282bf1fac6112285017366cb5f867469");//considering sys_id for ITIL role is 282bf1fac6112285017366cb5f867469
g.query();
while (g.next()) {
	for (var fav in jsonFavList) {
		var grBookMark = new GlideRecord("sys_ui_bookmark");
		grBookMark.addEncodedQuery("user=" + g.user + "^title=" + fav + "^url=" + jsonFavList[fav]);
		grBookMark.query();
		if (!grBookMark.next()) {
			grBookMark.initialize();
			grBookMark.pinned = true;
			grBookMark.title = fav;
			grBookMark.url = jsonFavList[fav];
			grBookMark.user = g.user;
			grBookMark.insert();
		}
	}
}

 

For Scheduled job

var jsonFavList = {
  "SLA for My Group Tasks": "task_list.do?sysparm_query=assignment_groupDYNAMICd6435e965f510100a9ad2572f2b47744&sysparm_first_row=1&sysparm_view=",
  "SLA for My Tasks": "task_list.do?sysparm_query=%5Eassigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe&sysparm_first_row=1&sysparm_view=",
  "Tasks Assigned to Me": "stateNOT INclosed_complete,closed_abandoned^assigned_toDYNAMIC90d1921e5f510100a9ad2572f2b477fe",
  "My approvals": "sysapproval_approver_list.do?sysparm_query=approverDYNAMIC90d1921e5f510100a9ad2572f2b477fe&sysparm_first_row=1&sysparm_view="
};

var g = new GlideRecord("sys_user_has_role");
g.addEncodedQuery("role=282bf1fac6112285017366cb5f867469^sys_created_onONYesterday@javascript:gs.beginningOfYesterday()@javascript:gs.endOfYesterday()");
//considering sys_id for ITIL role is 282bf1fac6112285017366cb5f867469 & created on yesterday
g.query();
while (g.next()) {
	for (var fav in jsonFavList) {
		var grBookMark = new GlideRecord("sys_ui_bookmark");
		grBookMark.addEncodedQuery("user=" + g.user + "^title=" + fav + "^url=" + jsonFavList[fav]);
		grBookMark.query();
		if (!grBookMark.next()) {
			grBookMark.initialize();
			grBookMark.pinned = true;
			grBookMark.title = fav;
			grBookMark.url = jsonFavList[fav];
			grBookMark.user = g.user;
			grBookMark.insert();
		}
	}
}

Script above adds favourites as listed in same order as required. If there is something that is to be added it can be added in the array list value for variable jsonFavList.

Once above script is executed condition specified in the GlideRecorded table  (in case above User Role) will be satisfied & will push the favourites to that set of Users. The script above covers for Users with ITIL role. This can again be altered as required so as to push favourites & defatult it as per business requirements.

 

Hope it helps!

 

Thanks,

Jaspal Singh