Document toolboxDocument toolbox

Service Now Integration - Move Service

Service Now Integration is built upon PCR-360's Custom API Endpoints. Service Now will send its requests to the appropriate Endpoint and PCR-360 will process the details accordingly.

SNOW: Move Service
<?php // log the original request JSON in the SERVICENOW_DETAILS UDF table $details = ["data" => []]; $systemValues = [ "apikey" => "apikey", "typeformat" => "typeformat", "module" => "module", "controller" => "controller", "action" => "action", "request_method" => "request_method", "limit" => "limit", "page" => "page", "tenants_recid" => "tenants_recid", "ident" => "ident" ]; $data = array_diff_key($request, $systemValues); foreach ($data as $field => $value) { $details["data"][] = [ "LABEL" => $field, "VALUE" => $value ]; } // set the default save data to create an SO with the SNOW data in a UD table $payload = [ "type" => "SO", "csr" => "1", // User Demo "udf_SERVICENOW_NUMBER" => trim($request["servicenow_number"]), // SERVICENOW_NUMBER "udf_SERVICENOW_DETAILS" => json_encode($details), // SERVICENOW_DETAILS ]; // get the requestor based on the incoming requestor email address $requestorQuery = $this->query( "SELECT C.RECID FROM CONTACTS C JOIN CONTACTS_EMAILS CE ON C.RECID = CE.CONTACTS_RECID WHERE CE.EMAIL = :requestor", [":requestor" => trim($request["requestor"])] ); if (count($requestorQuery) && ($requestorRecid = $requestorQuery[0]["RECID"])) { // find the location RECID of the moveto_location $locationQuery = $this->query( "SELECT L.RECID FROM LOCATIONS L WHERE L.NAME = :location", [ ":location" => $request["moveto_location"] ]); if (count($locationQuery) && ($movetoLocationRecid = $locationQuery[0]["RECID"])) { // find the service RECID $service = $request["service"]; $serviceQuery = $this->query( "SELECT S.RECID FROM SERVICES S WHERE S.SERVICE_ID = :service OR S.SERVICE_ID_FMT = :service", [":service" => $service] ); if (count($serviceQuery) && ($serviceRecid = $serviceQuery[0]["RECID"])) { // set the SDA variables if the data is valid $payload["sd_action"] = "CHG_MOVE"; $payload["requestor"] = $requestorRecid; $payload["moveto_location"] = $movetoLocationRecid; $payload["service"] = $serviceRecid; } else { $response["error_message"] = "A valid SERVICE RECID could not be found based " . "on the incoming Service Number: " . $service; } } else { $response["error_message"] = "A valid LOCATION RECID could not be found in PCR360 based " . "on the incoming Location: " . $request["moveto_location"]; } } else { $response["error_message"] = "A valid CONTACT RECID could not be found in PCR360 based " . "on the incoming email address: " . $request["requestor"]; } if (isset($response["error_message"])) { // log the error as a remark on the SO $payload["remarks"] = "A Service Desk Action could not be created on this Service Order " . "due to the following error: " . $response["error_message"]; } $result = $this->call("saveServiceDesk", $payload); $response["servicedesk_number"] = $result["data"];