Disable ZZ_YY prefix from attachment when added through record producer

Chenab Khanna
Tera Expert

Hi,

I have a 'attachment' type variable in my record producer which i have made mandatory. When the user uploads any attachment, i want the attachment to get saved in the record created. But instead, it is hiding it.

I can see the entry created in sys_attachment but under table name field, a prefix ZZ_YY is getting added which is making the attachment hidden.

Please find the field below - 

find_real_file.png

 

Record in sys_attachment - 

find_real_file.png

Can anyone help me get this attachment added in the record as it happens when add any attachment from here - 

find_real_file.png

1 ACCEPTED SOLUTION

@Chenab Khanna 

This worked well for me

1) I created Async After Insert BR on the target table

2) Script as this

a) Remove the ZZ_YY

b) Then use the Copy Attachment

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var gr = new GlideRecord("sys_attachment");
	gr.addQuery("table_name", "ZZ_YY" + current.getTableName());
	gr.addQuery("table_sys_id", current.sys_id);
	gr.query();
	if (gr.next()) {
		gr.table_name = current.getTableName();
		gr.update();
		new global.VariableUtil().copy(gr.sys_id, current.getTableName(), current.sys_id); 
	}

})(current, previous);

Output:

1) The file added to the record

find_real_file.png

2) The file present on the attachment variable

find_real_file.png

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

56 REPLIES 56

Hi Ankur, I tried this but it's not working. Here are the steps I followed - 

1. Created a cross application scope record (sn_compliance_policy_exception to sys_attachment)

2. On the policy exception table, copied your code in the BR

- when to run: Async, Insert

- script:

(function executeRule(current, previous /*null when async*/) {
    var gr = new GlideRecord("sys_attachment");
    gr.addQuery("table_name", "ZZ_YY" + current.getTableName());
    gr.addQuery("table_sys_id", current.sys_id);
    gr.query();
    if (gr.next()) {
        gr.table_name = current.getTableName();
        gr.update();
        new global.VariableUtil().copy(gr.sys_id, current.getTableName(), current.sys_id);
    }
})(current, previous);
 

3. Created a new exception request on the portal, submitted it. 

 

Result:

1. Attachment available on the sys_attachment table with the ZZ-YY prefix

2.  Checked the exception record - no attachment

 

what am I missing here?

I got this to work. I removed the script where the table name is getting updated as I only wanted the attachment to show on the record. So my new script is as follows - 

(function executeRule(current, previous /*null when async*/) {
    var gr = new GlideRecord("sys_attachment");
    gr.addQuery("table_name""ZZ_YY" + current.getTableName());
    gr.addQuery("table_sys_id", current.sys_id);
    gr.query();
    if (gr.next()) {
               new global.VariableUtil().copy(gr.sys_id, current.getTableName(), current.sys_id);
    }
})(current, previous);

Hi @sayalisheth 

for me table sys id is showing empty in attachment table. So gr.query is returning 0 . As the table is scoped application table im assuming table sys id empty . Please help here

Hi @Ankur Bawiskar 

im facing similar issue. In my case table sys id showing empty in sys attachment table so business rule is not working . Please help that im not sure why table sys id is empty. Im unable to copy attachment from attachment variable type to the record