
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-13-2019 01:16 PM
Hi,
I am trying to create a UI Action that copies an Agile Story and all associated Scrum tasks. I can get the Story to create with no issue, but can't seem to generate the scrum tasks. I have tried several variations of this script (I am new to javascript). This is essentially a copy from SN guru (just changing the table names).
//copy Story is working
var chgID = current.sys_id.toString();
gs.addInfoMessage('sysid ' + chgID + ' copy story.');
var newChange = new GlideRecord('rm_story');
newChange.initialize();
newChange.short_description = current.short_description;
newChange.assignment_group = current.assignment_group;
newChange.description = current.description;
newChange.insert();
//Copy attachments for this change - this is working
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_story', chgID, 'rm_story', newChange.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_story', chgID, 'rm_story', newChange.sys_id);
copyTask();
//copyCI(); don't need
gs.addInfoMessage('Story ' + newChange.number + ' created.');
action.setRedirectURL(newChange);
//copy scrum tasks is not working
function copyTask() {
//Find the current scrum tasks and copy them
var tasks = new GlideRecord('rm_scrum_task');
tasks.addQuery('rm_story', chgID);
gs.addInfoMessage('sysid ' + chgID + ' copyTask.');
tasks.query();
while (tasks.next()) {
var taskID = tasks.sys_id.toString();
//Copy the task record to a new task record
var newTask = new GlideRecord('rm_scrum_task');
newTask.initialize();
newTask.story = newChange; //this is a reference - is this correct?
newTask.short_description = tasks.short_description;
newTask.description = tasks.description;
newTask.assignment_group = tasks.assignment_group;
newTask.assigned_to = tasks.assigned_to;
newTask.insert();
//Copy attachments for this task - this is not working since scrum tasks are not copying
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
}
}
//turning off all the below
//function copyCI() {
//Copy over the affected CI list
//var currentCI = new GlideRecord('task_ci');
//currentCI.addQuery('task', current.sys_id);
//currentCI.addNullQuery('u_ci_group'); //Added to ensure that copying does not duplicate Group CIs
//currentCI.query();
//while(currentCI.next()){
//var newCI = new GlideRecord('task_ci');
//newCI.initialize();
//newCI.task = newChange.sys_id;
//newCI.ci_item = currentCI.ci_item;
//newCI.insert();
//}
//}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2019 07:40 AM
Hi Stan,
Did the same on my pdi, adjusted result below;
//copy Story is working
var chgID = current.sys_id.toString();
var newChange = new GlideRecord('rm_story');
var newStorySysId;
newChange.initialize();
newChange.short_description = current.short_description;
newChange.assignment_group = current.assignment_group;
newChange.description = current.description;
newStorySysID = newChange.insert();
//newChange.insert();
if (newStorySysID){
//Copy attachments for this change - this is working
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_story', chgID, 'rm_story', newStorySysID);
else
Packages.com.glide.ui.SysAttachment.copy('rm_story', chgID, 'rm_story', newStorySysID);
copyTask(newStorySysID,chgID);
//copyCI(); don't need
gs.addInfoMessage('Story ' + newChange.number + ' created.');
action.setRedirectURL(newChange);
}
//copy scrum tasks is not working
function copyTask(ID,chgID) {
//Find the current scrum tasks and copy them
var tasks = new GlideRecord('rm_scrum_task');
tasks.addQuery('story', chgID);
tasks.query();
while (tasks.next()) {
var taskID = tasks.sys_id.toString();
gs.addInfoMessage('task sys_id ' + taskID + ' task.');
//Copy the task record to a new task record
var newTask = new GlideRecord('rm_scrum_task');
newTask.initialize();
newTask.story = ID;
newTask.short_description = tasks.short_description;
newTask.description = tasks.description;
newTask.assignment_group = tasks.assignment_group;
newTask.assigned_to = tasks.assigned_to;
newTask.insert();
//Copy attachments for this task - this is not working since scrum tasks are not copying
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2019 01:27 AM
Hi Stan,
The error is in your query (at least if I look at Madrid version);
tasks.addQuery('rm_story', chgID);
should be;
tasks.addQuery('story', chgID);
On top of that i would use a variable on the insert;
var newStorySysId;
newStorySysId = newChange.insert();
and use that when creating task;
newTask.story =newStorySysId;
Regards Roel

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2019 07:24 AM
Hi Roel,
Thank you for the help! I am on Madrid and testing this in my PDI.
I made the suggested changes, though I am not sure I have the syntax correct. I still see the same behavior in that the Story is created but not the child scrum tasks.
/copy Story is working
var chgID = current.sys_id.toString();
gs.addInfoMessage('sysid ' + chgID + ' copy story.');
var newChange = new GlideRecord('rm_story');
var newStorySysId;
newChange.initialize();
newChange.short_description = current.short_description;
newChange.assignment_group = current.assignment_group;
newChange.description = current.description;
newStorySysID = newChange.insert();
//newChange.insert();
//Copy attachments for this change - this is working
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_story', chgID, 'rm_story', newChange.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_story', chgID, 'rm_story', newChange.sys_id);
copyTask();
//copyCI(); don't need
gs.addInfoMessage('Story ' + newChange.number + ' created.');
action.setRedirectURL(newChange);
//copy scrum tasks is not working
function copyTask() {
//Find the current scrum tasks and copy them
gs.addInfoMessage('copy task.');
var tasks = new GlideRecord('rm_scrum_task');
gs.addInfoMessage('scrum task.');
tasks.addQuery('story', chgID);
//gs.addInfoMessage('scrum query.');
gs.addInfoMessage('sysid ' + chgID + ' copyTask.');
tasks.query();
while (tasks.next()) {
var taskID = tasks.sys_id.toString();
gs.addInfoMessage('task sys_id ' + taskID + ' task.');
//Copy the task record to a new task record
var newTask = new GlideRecord('rm_scrum_task');
newTask.initialize();
newTask.story = newStorySysId;
newTask.short_description = tasks.short_description;
newTask.description = tasks.description;
newTask.assignment_group = tasks.assignment_group;
newTask.assigned_to = tasks.assigned_to;
newTask.insert();
//Copy attachments for this task - this is not working since scrum tasks are not copying
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
}
}
//turning off all the below
//function copyCI() {
//Copy over the affected CI list
//var currentCI = new GlideRecord('task_ci');
//currentCI.addQuery('task', current.sys_id);
//currentCI.addNullQuery('u_ci_group'); //Added to ensure that copying does not duplicate Group CIs
//currentCI.query();
//while(currentCI.next()){
//var newCI = new GlideRecord('task_ci');
//newCI.initialize();
//newCI.task = newChange.sys_id;
//newCI.ci_item = currentCI.ci_item;
//newCI.insert();
//}
//}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2019 07:40 AM
Hi Stan,
Did the same on my pdi, adjusted result below;
//copy Story is working
var chgID = current.sys_id.toString();
var newChange = new GlideRecord('rm_story');
var newStorySysId;
newChange.initialize();
newChange.short_description = current.short_description;
newChange.assignment_group = current.assignment_group;
newChange.description = current.description;
newStorySysID = newChange.insert();
//newChange.insert();
if (newStorySysID){
//Copy attachments for this change - this is working
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_story', chgID, 'rm_story', newStorySysID);
else
Packages.com.glide.ui.SysAttachment.copy('rm_story', chgID, 'rm_story', newStorySysID);
copyTask(newStorySysID,chgID);
//copyCI(); don't need
gs.addInfoMessage('Story ' + newChange.number + ' created.');
action.setRedirectURL(newChange);
}
//copy scrum tasks is not working
function copyTask(ID,chgID) {
//Find the current scrum tasks and copy them
var tasks = new GlideRecord('rm_scrum_task');
tasks.addQuery('story', chgID);
tasks.query();
while (tasks.next()) {
var taskID = tasks.sys_id.toString();
gs.addInfoMessage('task sys_id ' + taskID + ' task.');
//Copy the task record to a new task record
var newTask = new GlideRecord('rm_scrum_task');
newTask.initialize();
newTask.story = ID;
newTask.short_description = tasks.short_description;
newTask.description = tasks.description;
newTask.assignment_group = tasks.assignment_group;
newTask.assigned_to = tasks.assigned_to;
newTask.insert();
//Copy attachments for this task - this is not working since scrum tasks are not copying
if (typeof GlideSysAttachment != 'undefined')
GlideSysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
else
Packages.com.glide.ui.SysAttachment.copy('rm_scrum_task', taskID, 'rm_scrum_task', tasks.sys_id);
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2019 07:57 AM
Roel,
Thank you very much! This did the trick. I appreciate the assist.
Stan