attachment from related list table to parent table
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-20-2024 09:25 PM - edited 05-20-2024 10:16 PM
hi all
we have one custom table under incident related list , we have business rules to update worknotes , requester has to update for customer table from incident table.
when we change worknotes , its update in custom table
now we want to attach any attachment in incident that has to update in related list custom table form.
kindly help me code , i tried in businessrule in sys_attachment table but not working
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-20-2024 09:44 PM
Hi,
Since you cannot trigger a BR when attachment is added to incident table, you have to create a BR on sys_attachment table.
When to Run: After, Insert.
Condition: Table name is incident
In script use the GlideSysAttachment API.
This link provides details on how to use this API with examples.
Regards,
Karthik Nagaramu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-20-2024 10:03 PM
To achieve the requirement of attaching an attachment to an incident and having that attachment automatically updated in a related custom table, you need to create a script that will copy the attachment from the incident to the related record in your custom table. This can be accomplished using a Business Rule and a Script Include.
Step 1: Create a Script Include to Handle Attachment Copying
var AttachmentUtils = Class.create();
AttachmentUtils.prototype = {
initialize: function() {},
copyAttachments: function(sourceTable, sourceSysId, targetTable, targetSysId) {
var grAttachment = new GlideRecord('sys_attachment');
grAttachment.addQuery('table_name', sourceTable);
grAttachment.addQuery('table_sys_id', sourceSysId);
grAttachment.query();
while (grAttachment.next()) {
var attachmentSysId = grAttachment.sys_id.toString();
var newAttachment = new GlideSysAttachment();
var newSysId = newAttachment.copy(sourceTable, sourceSysId, targetTable, targetSysId);
}
},
type: 'AttachmentUtils'
};
Step 2: Create a Business Rule to Trigger Attachment Copy
Navigate to System Definition > Business Rules.
Click New to create a new Business Rule.
Configure the Business Rule with the following:
- Name: Copy Attachment to Custom Table
- Table: Incident
- Advanced: Checked
- When to run:
- When: After
- Insert: Checked
- Update: Checked
- Delete: Unchecked
(function executeRule(current, previous /*null when async*/) {
if (current.operation() === 'insert' || current.operation() === 'update') {
// Your custom table name and reference field
var customTableName = 'u_custom_table'; // Change this to your custom table name
var customTableRefField = 'u_incident'; // Change this to your custom table's reference field to incident
var grCustomTable = new GlideRecord(customTableName);
grCustomTable.addQuery(customTableRefField, current.sys_id);
grCustomTable.query();
var attachmentUtils = new AttachmentUtils();
while (grCustomTable.next()) {
attachmentUtils.copyAttachments('incident', current.sys_id, customTableName, grCustomTable.sys_id);
}
}
})(current, previous);
Please Mark ✅Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.
Thanks