Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

ui action

rognomolta
Tera Contributor

i am trying to set values in below fields but not able to set for some fields  in imac form  :

To/New Office Location 

Date Received

IMAC Items> Model/Part Number

Add a link to the IMAC to the SCTask work notes

rognomolta_0-1732857947636.png

 

 

rognomolta_1-1732858122901.png

 

 

Description

Create UI action to create an IMAC as part of Hardware Return Requested Item. This button should be available on SC Tasks

  • Name: Create IMAC

  • Show as button/link on form

    • Actions:

      • Create IMAC

        • Submitter: User clicking the UI action

        • Asset Type: IT Equipment

        • Request Type: Move

        • Short Description: IT Equipment Move by “User Clicking the UI Action”

        • Assigned Group: Accounting  group

        • Assigned to:

        • State: Submitted

        • Stage: submitted

      • Details

        • Description: Itemized List - Configuration Item…Model ID

        • Date Received: Date of Submission

      • From/Current Details

        • From/Current Company - Requested Item…Requested For…Company

        • From Current Employee or Custodian - Requested Item…Requested For

        • From/Current Office Location - Requested Item…Requested For…Location

        • From/Current Location Details - None

      • To/New Details

        • To/New Company - Technology

        • To/New Employee or Custodian - blank

        • To/New Office Location - Herndon, VA

        • To/New Location Details - AD

 

  • IMAC Items

    • Serial / Asset Tag / Description / Model/Part Number / Configuration Item / Manufacturer company - All from Itemized list configuration Item info

 

Add a link to the IMAC to the SCTask work notes

 

 

 

code:

 

 

 

// Step 1: Get the current SC_Task and parent RITM
var taskGr = current; // Current SCTask
var ritmGr = taskGr.request_item; // Associated RITM
var itemizedList = ritmGr.variables.itemized_list; // Itemized list from RITM variables

// Parse the itemized list
var items = JSON.parse(itemizedList); // Ensure it's a valid JSON array

// Step 2: Create the IMAC record first
var imacGr = new GlideRecord('u_imac'); // Custom IMAC table
imacGr.initialize();

// Populate basic IMAC fields
imacGr.u_asset_type = 'IT Equipment';
imacGr.u_request_type = 'Move';
imacGr.short_description = 'IT Equipment Move by ' + gs.getUser().getDisplayName();
imacGr.assignment_group = 'Accounting IMAC group';
imacGr.state = -1;
imacGr.u_stage = 'submitted';

// Populate "From/Current" fields
imacGr.u_from_company = ritmGr.requested_for.company.getDisplayValue() || '-- None --';
imacGr.u_from_employee_or_custodian = ritmGr.requested_for.getDisplayValue() || '-- None --';
imacGr.u_from_office_location = ritmGr.requested_for.location.getDisplayValue() || '-- None --';
imacGr.u_from_location_details = 'None';

// Populate "To/New" fields
imacGr.u_to_company = 'Technology';
imacGr.u_to_employee_or_custodian = '';
imacGr.u_to_office_location = 'Herndon, VA';
imacGr.u_to_location_details = 'PEU';

// Insert the IMAC record
var imacSysId = imacGr.insert(); // Capture the sys_id of the inserted record

// Step 3: Loop through the itemized list and create associated IMAC Assets
var description = 'Itemized List - Configuration Item:\n';

for (var i = 0; i < items.length; i++) {
    var item = items[i];
    var configurationItem = item.configuration_item; // Configuration Item sys_id

    // Query the cmdb_ci table to check if it's of class "cmdb_ci_computer"
    var ciGr = new GlideRecord('cmdb_ci');
    if (ciGr.get(configurationItem)) {
        if (ciGr.sys_class_name == 'cmdb_ci_computer') {
            // Build the description
            description += 'Configuration Item: ' + ciGr.name + '\n';
            description += 'Model ID: ' + (ciGr.model_id ? ciGr.model_id.getDisplayValue() : 'Not Available') + '\n';

            // Create a new record in u_imac_assets
            var assetGr = new GlideRecord('u_imac_assets');
            assetGr.initialize();

            // Populate fields for IMAC Asset
            assetGr.u_imac = imacSysId;
            assetGr.u_serial_number = item.serial_number || 'Not Available';
            assetGr.u_asset_tag = item.eplus_asset_tag || 'Not Available';
            assetGr.u_description = item.item_description || 'Not Available';
            assetGr.u_model = ciGr.model_id ? ciGr.model_id.toString() : 'Not Available';
            assetGr.u_configuration_item = ciGr.sys_id;
            assetGr.u_manufacturer_company = ciGr.manufacturer.getDisplayValue() || '-- None --';

            // Insert the IMAC Asset record
            assetGr.insert();
        }
    }
}

// Step 4: Update the IMAC record with the description
imacGr.description = description;
imacGr.update();

// Step 5: Add a work note in the SCTask referencing the IMAC record
taskGr.work_notes = 'IMAC created for Hardware Return. <a href="' + imacGr.getLink() + '" target="_blank">Click here to view the IMAC record</a>';
taskGr.update();

// Step 6: Redirect back to the SCTask record
action.setRedirectURL(current);

 

 
0 REPLIES 0