We are currently experiencing intermittent login issues on Community.  The team is actively working on a fix.

survey

ShubhangiA77524
Tera Contributor

i have a catalog order guide named psra certificate request which when requested generates four ritm for security, vendor,privacy,software so i have a survey and trigger condition is when states changes to closed complete and item is psra certificate request or isdp general inquiry the survey should tigger but it is triggering only for isdp not for psra certificate request and survey should trigger for request on psra

15 REPLIES 15

(function executeRule(current, previous) {

    // Only run when a RITM changes to Closed Complete
    if (current.state != 3 || previous.state == 3)
        return;

    // Get the parent Request
    if (!current.request)
        return;

    var req = current.request.getRefRecord();

    // --- Detect if this request belongs to PSRA or ISDP ---
    var isPSRA = false;
    var isISDP = false;

    // Check if any RITM in this request belongs to PSRA-related items
    var checkRitm = new GlideRecord('sc_req_item');
    checkRitm.addQuery('request', req.sys_id);
    checkRitm.query();
    while (checkRitm.next()) {
        var itemName = checkRitm.cat_item.name.toString();
        if (itemName.indexOf('Security Risk Assessment for Globe Projects and Initiatives') > -1 ||
            itemName.indexOf('Vendor Risk Assessment for Globe Projects and Initiatives') > -1 ||
            itemName.indexOf('Privacy Impact Assessment for Globe Projects and Initiatives') > -1 ||
            itemName.indexOf('Software Assessment Request for Globe Projects and Initiatives') > -1) {
            isPSRA = true;
        }
        if (itemName.indexOf('ISDP - General Inquiry') > -1) {
            isISDP = true;
        }
    }

    // --- Count Closed Complete RITMs under the same Request ---
    var ritm = new GlideRecord('sc_req_item');
    ritm.addQuery('request', req.sys_id);
    ritm.query();

    var total = 0;
    var closed = 0;

    while (ritm.next()) {
        total++;
        if (ritm.state == 3)
            closed++;
    }

    // --- If all are Closed Complete ---
    if (total > 0 && total == closed) {
        gs.info('All RITMs under Request ' + req.number + ' are Closed Complete.');

        // Update Request to Closed Complete
        req.state = 3;
        req.request_state = 'closed_complete';
        req.stage = 'closed_complete';
        req.update();

        // Trigger survey only for ISDP or PSRA
         try {
            var surveySysId = '1408df6247d4fed0e9e31e1f116d438e'; // Replace with your survey sys_id
            var asmt = new SNC.AssessmentCreation();
            asmt.createAssessments(
                surveySysId,
                'sc_request',
                req.sys_id,
                req.requested_for
            );
            gs.info('Survey triggered successfully for Request ' + req.number);
        } catch (e) {
            gs.error('Error triggering survey for ' + req.number + ': ' + e);
        }
    }

})(current, previous);