Auto generate PDF of RITM with related list and attach to the RITM itself

mr18
Tera Guru

I want to auto generate a PDF whenever the request is completed and auto attach the PDF to the actual RITM.

The PDF should contain all variable information along with the Approver related list

3 REPLIES 3

BhavaniYamsani
Giga Contributor

Hi @mr18 ,
A few Questions before I answer to the above requirement

  • Which ServiceNow release are you on (e.g., Washington, Vancouver, Utah)?
  • Do you have the Document Generation plugin (and prefer a template‑driven approach), or should we go with the code approach?

1) DocGen is a ServiceNow no‑code/low‑code feature that lets you:

  • Create a Word template
  • Fill it with dynamic data (fields, variables, related lists, approvals)
  • Auto-generate PDF or DOCX
  • Attach or email the output

How it works

  1. Create a Word template
  2. Create a Data Source (drag‑and‑drop or scripted)
  3. Create a Flow Designer action to generate the document
  4. Generate output as PDF

Basically if Document Generation plugin is installed then it is easy to achieve the requirement.
2) There is a developer‑built solution using:

  • Business Rules / Script Includes / Flow Designer Script step
  • HTML to PDF API (PDF Generation Utils plugin or custom library) //make sure this plugin is active
  • Code to fetch variables, approvals, MRVS, etc.
  • Code to build the HTML
  • Code to convert HTML → PDF
  • Code to attach it to the record

 

Please mark as helpful if this gives you some guidance to achieve the requirement.

Thanks & Regards
Yamsani Bhavani

Ankur Bawiskar
Tera Patron

@mr18 

check this link which has script from Piyush

Generate PDF file for catalog variables and attach it to RITM 

also check this link

When catalog item is submitted, attach variables to RITM as a PDF 

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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

Aditya_hublikar
Kilo Sage

Hello @mr18 ,

 

This can acheived using After update business rule .

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

    // Add your code here
    var v = new sn_pdfgeneratorutils.PDFGenerationAPI();

    var gr = new GlideRecord("sc_req_item");
    var html = "";

    if (gr.get(current.sys_id)) {
        var ga = new GlideRecord('sysapproval_approver');
        var app = [];
        ga.addQuery('sysapproval', current.sys_id);
        ga.query();
        while (ga.next()) {
            app.push(ga.getDisplayValue('approver'));
        }

        html += "<h2>RITM Details</h2>";
        html += "<b>RITM Number:</b> " + gr.number + "<br/>";
        html += "<b>Requested For:</b> " + gr.getDisplayValue('requested_for') + "<br/>";
        html += "<b>Requested By:</b> " + gr.getDisplayValue('opened_by') + "<br/>";
        html += "<b>Catalog Item:</b> " + gr.getDisplayValue('cat_item') + "<br/>";
        html += "<b>State:</b> " + gr.getDisplayValue('state') + "<br/>";
        html += "<b>Priority:</b> " + gr.getDisplayValue('priority') + "<br/>";
        html += "<b>Assignment Group:</b> " + gr.getDisplayValue('assignment_group') + "<br/>";
        html += "<b>Assigned To:</b> " + gr.getDisplayValue('assigned_to') + "<br/>";
        html += "<b>Short Description:</b> " + gr.short_description + "<br/>";
        html += "<b>Description:</b> " + gr.description + "<br/>";
        html += "<b>Approval List:</b> " + 
        (app.length > 0 ? app.join(', ') : 'No Approvers') 
        + "<br/>";


    }

    var result = v.convertToPDF(html, "sc_req_item", current.sys_id, "RITM_PDF");

    gs.info(JSON.stringify(result));


})(current, previous);

 

Aditya_hublikar_0-1771166690046.pngAditya_hublikar_1-1771166706518.png

 

If you want to some styling   so you can also add that using css .

 

If this helps you then you can mark it as helpful and accept as solution.

Regards,

Aditya,

Technical Consultant