User Tools

Site Tools


business_rules

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
business_rules [2024/12/12 06:54] johnsonjohnbusiness_rules [2024/12/13 10:04] (current) johnsonjohn
Line 1: Line 1:
-Business Rules+======Business Rules======
 ---- ----
  
-======Project Insight Update======+=====Project Insight Update=====
 <code> <code>
 // JWJ0215 10.30.24               Last tested on 10.30 @ 2.42 pm // JWJ0215 10.30.24               Last tested on 10.30 @ 2.42 pm
- 
 // Project Insight Update Script // Project Insight Update Script
- 
 // This script will get needed data from the ServiceNow Project Request (before approved for a project), and // This script will get needed data from the ServiceNow Project Request (before approved for a project), and
- 
 // push the data to Project Insight. // push the data to Project Insight.
- 
-  
  
 (function executeRule(current, previous /*null when async*/ ) { (function executeRule(current, previous /*null when async*/ ) {
- 
     var payload = {};     var payload = {};
- 
-  
  
     // get user from user table     // get user from user table
- 
     var gr = new GlideRecord("sys_user");     var gr = new GlideRecord("sys_user");
- 
     gr.addQuery("sys_id", current.requested_for);     gr.addQuery("sys_id", current.requested_for);
- 
     gr.query();     gr.query();
- 
-  
  
     if (gr.next()) {     if (gr.next()) {
- 
         payload.requested_for = gr.email.toString();         payload.requested_for = gr.email.toString();
- 
     }     }
- 
     // ***End get user***     // ***End get user***
- 
-  
- 
     // Get Project Insight Records from the project Insight table **U_PROJECT_INSIGHT_RECORDS**     // Get Project Insight Records from the project Insight table **U_PROJECT_INSIGHT_RECORDS**
- 
     // get the sys id     // get the sys id
  
     var pigr = new GlideRecord("u_project_insight_records");     var pigr = new GlideRecord("u_project_insight_records");
- 
     pigr.addQuery("u_requested_item", current.sys_id);     pigr.addQuery("u_requested_item", current.sys_id);
- 
     pigr.query();     pigr.query();
- 
-  
  
     if (pigr.next()) {     if (pigr.next()) {
- 
         payload.u_project_insight_records_sysid = pigr.sys_id.toString();         payload.u_project_insight_records_sysid = pigr.sys_id.toString();
- 
         payload.u_project_insight_records_number = pigr.number.toString();         payload.u_project_insight_records_number = pigr.number.toString();
- 
         payload.u_prioritization_group = pigr.u_prioritization_group.toString();         payload.u_prioritization_group = pigr.u_prioritization_group.toString();
- 
         payload.priority = pigr.priority.getDisplayValue();         payload.priority = pigr.priority.getDisplayValue();
- 
         payload.u_expense = pigr.u_expense.toString();         payload.u_expense = pigr.u_expense.toString();
- 
         payload.u_project_request_status = pigr.u_project_request_status.toString();         payload.u_project_request_status = pigr.u_project_request_status.toString();
- 
         payload.short_description = pigr.short_description.toString();         payload.short_description = pigr.short_description.toString();
- 
         payload.description = pigr.description.toString();         payload.description = pigr.description.toString();
- 
         payload.u_status = pigr.u_status.toString(); // trying u_status         payload.u_status = pigr.u_status.toString(); // trying u_status
 +     }
  
-        +    // Grab the Description from the task table ******************************************
- +
-        +
- +
-    } +
- +
-  +
- +
-        // Grab the Description from the task table ****************************************** +
     gr = new GlideRecord("task");     gr = new GlideRecord("task");
- 
     gr.addQuery('description');     gr.addQuery('description');
- 
     gr.query();     gr.query();
- 
-  
  
     if (gr.next()) {     if (gr.next()) {
- 
         gr.description.toString();         gr.description.toString();
- 
     }     }
- 
- 
- 
  
     gr = new GlideRecord("sys_user");     gr = new GlideRecord("sys_user");
- 
     gr.addQuery("sys_id", current.variables.sponsor_manager_and_up_only_for_this_field);     gr.addQuery("sys_id", current.variables.sponsor_manager_and_up_only_for_this_field);
- 
     gr.query();     gr.query();
- 
-  
  
     if (gr.next()) {     if (gr.next()) {
- 
         payload.sponsor_manager_and_up_only_for_this_field = gr.email.toString();         payload.sponsor_manager_and_up_only_for_this_field = gr.email.toString();
- 
     }     }
- 
-  
  
     gr = new GlideRecord("sys_user");     gr = new GlideRecord("sys_user");
- 
     gr.addQuery("sys_id", current.variables.contact_name);     gr.addQuery("sys_id", current.variables.contact_name);
- 
     gr.query();     gr.query();
- 
-  
  
     if (gr.next()) {     if (gr.next()) {
- 
         payload.contact_name = gr.name.toString();         payload.contact_name = gr.name.toString();
- 
     }     }
- 
-  
  
     // which_location_is_the_project_for     // which_location_is_the_project_for
- 
     gr = new GlideRecord("cmn_department");     gr = new GlideRecord("cmn_department");
- 
     gr.addQuery("sys_id", current.variables.which_location_is_the_project_for);     gr.addQuery("sys_id", current.variables.which_location_is_the_project_for);
- 
     gr.query();     gr.query();
- 
-  
  
     if (gr.next()) {     if (gr.next()) {
- 
         payload.cost_center = gr.name.toString();         payload.cost_center = gr.name.toString();
- 
     }     }
- 
-  
  
     // ***End get Project Insight Records***     // ***End get Project Insight Records***
- 
-  
- 
     // below information is from the **SC_REQ_ITEM** table.     // below information is from the **SC_REQ_ITEM** table.
  
     payload.sys_id = current.sys_id.toString();     payload.sys_id = current.sys_id.toString();
- 
     payload.u_project_approved_date = current.u_project_approved_date.toString();     payload.u_project_approved_date = current.u_project_approved_date.toString();
- 
     payload.number = current.number.toString();     payload.number = current.number.toString();
- 
     payload.u_project_type = current.u_project_type.toString();     payload.u_project_type = current.u_project_type.toString();
- 
     payload.request_created_on = current.variables.request_created_on.toString(); //sc_req_item       payload.request_created_on = current.variables.request_created_on.toString(); //sc_req_item  
- 
     payload.contact_s_phone_number = current.variables.contact_s_phone_number.toString(); //sc_req_item     payload.contact_s_phone_number = current.variables.contact_s_phone_number.toString(); //sc_req_item
 +    payload.what_is_the_problem_you_are_trying_to_solve = 
 +    current.variables.what_is_the_problem_you_are_trying_to_solve.toString();
 +    payload.u_estimated_hours = current.u_hours.toString();  // trying u_hours
  
-    payload.what_is_the_problem_you_are_trying_to_solve current.variables.what_is_the_problem_you_are_trying_to_solve.toString();+    var PI new ProjectInsightScriptInclude(); 
 +    var res = PI.send(payload);
  
-    payload.u_estimated_hours = current.u_hours.toString();  // trying u_hours+})(current, previous);
  
- +//  Link 
 +//  https://<instance>.service-now.com/now/nav/ui/classic/params/target/sys_script.do%3Fsys_id%3Da982dcdf87389e10fdd876a6cebb35ab%26sysparm_view%3D%26sysparm_record_target%3Dsys_script%26sysparm_record_row%3D2%26sysparm_record_list%3DORDERBYDESCsys_created_on%26sysparm_record_rows%3D6275 
 +</code>
  
-    var PI = new ProjectInsightScriptInclude();+----
  
-    var res PI.send(payload);+=====INCIDENT-Derive NonState Values from parent inc===== 
 +<code> 
 +// Condition: current.parent_incident.changes() && !current.parent_incident.nil() 
 +(function executeRule(current, previous /*null when async*/) { 
 + // If child incident is already Closed or Cancelled, child incident should not be updated 
 + if (current.incident_state == IncidentState.CLOSED || current.incident_state == IncidentState.CANCELED) 
 + return;
  
- + // If parent incident is already Closed or Cancelled, child incident should not be updated 
 + if (current.parent_incident.incident_state == IncidentState.CLOSED || current.parent_incident.incident_state == IncidentState.CANCELED) 
 + return; 
 + 
 + // Update child incident's Category, Subcategory, Assignment group, and Assigned to fields to match that of parent incident 
 + current.category = current.parent_incident.category; 
 + current.subcategory = current.parent_incident.subcategory; 
 + 
 + // Only copy parent incident's assignment group if it is not empty. 
 + if (!current.parent_incident.assignment_group.nil()) { 
 + current.assigned_to = ''; 
 + current.assignment_group = current.parent_incident.assignment_group; 
 +
 + 
 + // Only copy parent incident's assigned to if it is not empty. 
 + if (!current.parent_incident.assigned_to.nil()) { 
 + current.assigned_to = current.parent_incident.assigned_to; 
 + }
  
 })(current, previous); })(current, previous);
  
- +</code>
  
-//  Link+---- 
 +=====INCIDENT-Display Caller Email is Empty===== 
 +<code> 
 +(function executeRule(current, previous /*null when async*/) {
  
-//  https://<instance>.service-now.com/now/nav/ui/classic/params/target/sys_script.do%3Fsys_id%3Da982dcdf87389e10fdd876a6cebb35ab%26sysparm_view%3D%26sysparm_record_target%3Dsys_script%26sysparm_record_row%3D2%26sysparm_record_list%3DORDERBYDESCsys_created_on%26sysparm_record_rows%3D6275+ var callerName = current.caller_id.name; 
 + gs.addInfoMessage('Please noteEmail address for the caller,'+callerName+', is empty. They will not receive email communications sent by ServiceNow.'); 
 + 
 +})(current, previous); 
 + 
 +</code> 
 + 
 +---- 
 +=====True Up NonState Values from Parent INC===== 
 +<code> 
 +(function executeRule(current, previous /*null when async*/) { 
 + 
 + // Add your code here 
 + var sysID = current.sys_id; 
 +  
 + //Check for any child incidents 
 + var childCheck = new GlideRecord('incident'); 
 + childCheck.addQuery('parent_incident', sysID); 
 + //childCheck.addEncodedQuery('parent_incident='+sysID); 
 + childCheck.query(); 
 +  
 + if (childCheck.hasNext()) { 
 + while (childCheck.next()) { 
 + // If child incident is already Closed or Cancelled, child incident should not be updated 
 + if (childCheck.incident_state == IncidentState.CLOSED || childCheck.incident_state == IncidentState.CANCELED) 
 + return; 
 + 
 + // Update child incident's Category, Subcategory, Assignment group, and Assigned to fields to match that of parent incident 
 + childCheck.category = current.category; 
 + childCheck.subcategory = current.subcategory; 
 + 
 + // Only copy parent incident's assignment group if it is not empty. 
 + if (!current.assignment_group.nil()) { 
 + childCheck.assigned_to = ''; 
 + childCheck.assignment_group = current.assignment_group; 
 +
 + 
 + // Only copy parent incident's assigned to if it is not empty. 
 + if (!current.assigned_to.nil()) { 
 + childCheck.assigned_to = current.assigned_to; 
 +
 +  
 + childCheck.setWorkFlow(false); 
 + childCheck.update(); 
 +
 +
 + 
 +})(current, previous); 
 + 
 +</code> 
 + 
 +---- 
 +=====Sys_USER-Add VIP Mark===== 
 +<code> 
 +(function executeRule(current, previous /*null when async*/) { 
 + 
 + //Query sys_user Table and Add VIP Mark 
 + var gr = new GlideRecord('sys_user'); 
 + gr.addQuery('sys_id', current.user.sys_id); 
 + gr.query(); 
 + 
 + while (gr.next()) { 
 + gr.vip = true; 
 + gr.setWorkflow(false); 
 + gr.update(); 
 +
 + 
 +})(current, previous);
 </code> </code>
  
 ---- ----
business_rules.1734015291.txt.gz · Last modified: 2024/12/12 06:54 by johnsonjohn