Getting "Action not authorized" message when ui action is clicked to copy risk assessment data

SK41
Giga Guru

Hi,

 

I have a requirement where i need to copy the previous completed risk assessment data into the new risk assessment on click of UI Action " Copy". The data is getting successfully copied but when this ui action is clicked it shows "Action not authorized" info message.

 

The Action name i used is unique, it is not clashing with other ui action. 

On click of copy button the risk assessment moves from "ready to assess" state to "monitor" directly and copies all the data in between.

Please suggest what could be the issue here?

 

Below is the code i wrote:

Script include

FullCopyRiskAssessments.prototype = {
initialize: function() {},

_generateResponsesForReTriggeredAsmts: function(previousAsmt, currentAsmt) {
var previousAsmtResponse = new GlideRecord('sn_risk_advanced_risk_assessment_instance_response');
previousAsmtResponse.addQuery('assessment_instance_id', previousAsmt);
previousAsmtResponse.addQuery('factor.sys_class_name', 'sn_risk_advanced_manual_factor');
previousAsmtResponse.query();

/* Store Previous assessment responses in object,
key is factor plus control plus a constant factorResponse if assesment response is individual control asmt response
else key is factor plus assessment type plus constant factorResponse. Similar is the case with storing comments */
var responses = {};
while (previousAsmtResponse.next()) {
//gs.info('previous asmnt response');
this._storeResponsesOfPreviousAsmt(previousAsmtResponse, responses);
}

var currentAsmtResponse = new GlideRecord('sn_risk_advanced_risk_assessment_instance_response');
currentAsmtResponse.addQuery('assessment_instance_id', currentAsmt);
currentAsmtResponse.addQuery('factor.sys_class_name', 'sn_risk_advanced_manual_factor');
currentAsmtResponse.query();

//Copy previous assesment responses to current re triggered assessment
while (currentAsmtResponse.next()) {
//gs.info('current asmnt response');
this._copyResponsesToCurrentAsmt(currentAsmtResponse, responses);
}

//Copy opt out flags
this._copyOptOutFlags(previousAsmt, currentAsmt);

 var currentDateTime = new GlideDateTime();
 
 
        var prevAsmnt1 = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
        prevAsmnt1.addEncodedQuery('sys_id=' + previousAsmt + '^risk_responseISNOTEMPTY');
        prevAsmnt1.query();
        if (prevAsmnt1.next()) {
            var currAsmnt1 = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
            currAsmnt1.addQuery('sys_id', currentAsmt);
            currAsmnt1.query();
            if (currAsmnt1.next()) {
                currAsmnt1.setValue('risk_response', prevAsmnt1.getValue('risk_response'));
                currAsmnt1.setValue('asmt_start_date', currentDateTime);
                //currAsmnt1.setValue('state', 7);
                currAsmnt1.update();
            }
        }
 
 
 
        var mitigate = new GlideRecord('sn_risk_mitigation_task');
        mitigate.addEncodedQuery('risk_assessment_instance.sys_id=' + previousAsmt);
        mitigate.query();
        if (mitigate.next()) {
 
            var mitigate1 = new GlideRecord('sn_risk_mitigation_task');
            mitigate1.addEncodedQuery('risk_assessment_instance.sys_id=' + currentAsmt);
            mitigate1.query();
            if (mitigate1.next()) {
                mitigate1.setValue('state', mitigate.getValue('state'));
                mitigate1.setValue('assigned_to', mitigate.getValue('assigned_to'));
                mitigate1.setValue('u_business_lead2', mitigate.getValue('u_business_lead2'));
                mitigate1.setValue('due_date', mitigate.getValue('due_date'));
                mitigate1.setValue('u_overdue_days', mitigate.getValue('u_overdue_days'));
                mitigate1.setValue('u_rescheduled_due_date', mitigate.getValue('u_rescheduled_due_date'));
                mitigate1.setValue('u_action_type', mitigate.getValue('u_action_type'));
                mitigate1.setValue('priority', mitigate.getValue('priority'));
                mitigate1.setValue('u_status_choice', mitigate.getValue('u_status_choice'));
                mitigate1.setValue('u_mitigation_implemented_closed', mitigate.getValue('u_mitigation_implemented_closed'));
                mitigate1.setValue('u_owner_classifiation', mitigate.getValue('u_owner_classifiation'));
                mitigate1.setValue('u_contact_point', mitigate.getValue('u_contact_point'));
                mitigate1.setValue('plan', mitigate.getValue('plan'));
                mitigate1.setValue('close_notes', mitigate.getValue('close_notes'));
                mitigate1.update();
 
            }
        }
 
        var accept = new GlideRecord('sn_risk_acceptance_task');
        accept.addEncodedQuery('risk_assessment_instance.sys_id=' + previousAsmt);
        accept.query();
        if (accept.next()) {
 
            var accept1 = new GlideRecord('sn_risk_acceptance_task');
            accept1.addEncodedQuery('risk_assessment_instance.sys_id=' + currentAsmt);
            accept1.query();
            if (accept1.next()) {
                accept1.setValue('state', accept.getValue('state'));
                accept1.setValue('u_business_lead2', accept.getValue('u_business_lead2'));
                accept1.setValue('justification_for_acceptance', accept.getValue('justification_for_acceptance'));
                accept1.update();
            }
 
        }
 
 
            var currAsmt = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
        currAsmt.get(currentAsmt);
           gs.info('icurrentassess' + currAsmt);
        var approval = new GlideRecord('sysapproval_approver');
        approval.addEncodedQuery('risk_assessment_instance_approval.risk_assessment_instance.sys_id=' + previousAsmt + '^state=approved^ORstate=rejected^ORstate=not_required');
        approval.query();
        while (approval.next()) {
            var currapproval = new GlideRecord('sysapproval_approver');
            gs.info('inside curr approval12');
            currapproval.newRecord();
currapproval.source_table = 'sn_risk_advanced_risk_assessment_instance';
            gs.info('initialize66' + currentAsmt);
         // currapproval.setValue('document_id','Risk Assessment: '+currAsmt.getDisplayValue('number'));
currapproval.setValue('document_id', currentAsmt);
currapproval.setValue('risk_assessment_instance_approval', approval.getValue('risk_assessment_instance_approval'));
            currapproval.setValue('state', approval.getValue('state'));
            currapproval.setValue('approver', approval.getValue('approver'));
            //currapproval.setValue('risk_assessment_instance_approval.risk_assessment_instance.sys_id', currentAsmt);
            //approval.setValue('document_id', 'Risk Assessment: ' + currAsmt.getValue('number'));
            gs.info('setrecord');
            currapproval.update();
        }
 
 
 
        var isRiskApplicable;
        var currentAsmnt = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
        currentAsmnt.addEncodedQuery('sys_id=' + currentAsmt);
        currentAsmnt.query();
        if (currentAsmnt.next()) {
            isRiskApplicable = currentAsmnt.getValue('u_is_risk_applicable');
            gs.info('value is ' + isRiskApplicable);
            if (isRiskApplicable == 'yes') {
                currentAsmnt.setValue('state', 1);
                currentAsmnt.update();
                currentAsmnt.setValue('state', 2);
                currentAsmnt.update();
                currentAsmnt.setValue('state', 4);
                currentAsmnt.update();
                currentAsmnt.setValue('state', 5);
                currentAsmnt.update();
                currentAsmnt.setValue('state', 7);
                currentAsmnt.update();
            } else {
                currentAsmnt.setValue('asmt_start_date', currentDateTime);
              //  currentAsmnt.setValue('state', 6);
              //  currentAsmnt.update();
                currentAsmnt.setValue('state', 7);
                currentAsmnt.update();
            }
 
 
        }
};
 
UI Action
function Copy() {
//Show modal when assess is clicked on assessment which has previous assessment results
if (g_scratchpad.PopupTrigger) {

var ga = new GlideAjax('sn_risk_advanced.RiskAssessmentAJAX1');
ga.addParam('sysparm_name', 'generateResponses');
if (g_scratchpad.prevAsmtId)
ga.addParam('sysparm_prevAsmtId', g_scratchpad.prevAsmtId);
ga.addParam('sysparm_currAsmtId', g_form.getUniqueValue());
ga.getXMLAnswer(function(answer) {
// ga.getXML(function(answer) {
// GlideModal.prototype.get('sn_risk_advanced_copy_responses').destroy();
gsftSubmit(null, g_form.getFormElement(), 'copying_full_assessment');


});


}
}

 

Please suggest what is causing this issue?

 

Thanks!

1 REPLY 1

SK41
Giga Guru

@Ankur Bawiskar 

@Pradeep Sharma 

 

Any suggestions?