Get Assets of custom field and extract field values with Script Runner


In this example, we'll get assets of asset custom field and list its fields.


Issue


Assets



SCRIPT 1: Get one Asset Custom Fields and fetch all assets

Notice the "PLEASE READ HERE" part please.

This script reads just one custom field's assets. Custom field is defined in the script. There is an alternative script et the end of the page which finds all Asset Custom Fields and fetches all assets.

import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import groovy.json.JsonSlurper
import groovy.transform.Field

// import inventoryplugin.constant.StatusEnum // for older versions
// import inventoryplugin.constant.SubstatusEnum // for older versions 
import inventoryplugin.service.status.StatusEnum
import inventoryplugin.service.status.SubstatusEnum

import inventoryplugin.dto.portable.FormWithRelationsDto
import inventoryplugin.dto.portable.InventoryDto
import inventoryplugin.dto.portable.InventoryItemDto
import inventoryplugin.dto.portable.InventoryRefDto
import inventoryplugin.service.controller.InventoryController
import inventoryplugin.service.rest.dto.SystemFieldDto
import org.apache.commons.lang3.StringUtils
import org.apache.log4j.Level
import org.apache.log4j.Logger

@Field Logger logger = Logger.getLogger("snapbytes.inventoryplugin.groovy.script")
logger.setLevel(Level.DEBUG)

@WithPlugin("plugin.jip")

@PluginModule
InventoryController inventoryController;
@Field customFieldManager = ComponentAccessor.getCustomFieldManager();
@Field issueManager = ComponentAccessor.getIssueManager();

// FIXME: PLEASE READ HERE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//     delete this line if the "issue" object is already injected with ScriptRunner
def issue = issueManager.getIssueObject("ISD-10")


Integer stringToInteger(String s) {
    try {
        return Integer.parseInt(s);
    } catch (def e) {
        logger.debug("Can not convert asset id to INTEGER" + e.getMessage())
        return null;
    }
}

List<FormWithRelationsDto> getCustomFieldAssets(inventoryController, theIssue, customFieldId) {
    List<FormWithRelationsDto> assetObjects = new ArrayList<>();
    def remoteUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

    def cField = customFieldManager.getCustomFieldObject(customFieldId)
    // for assets custom field, asset cf value will be delimited with commas with additional leading and trailing commas, i.e: ,1,2,3,
    def cfValue = theIssue.getCustomFieldValue(cField)
    def assetIds = StringUtils.split(cfValue, ",");
    for (String assetIdAsStr : assetIds) {
        if (StringUtils.isNotBlank(assetIdAsStr)) {
            Integer assetId = stringToInteger(assetIdAsStr);
            if (assetId != null && assetId > 0) {
                logger.debug("Parsed assetId: " + assetId);
                FormWithRelationsDto formWithRelationsDto = inventoryController.getFormWithRelationsAndOneInventoryDto(remoteUser, assetId);
                assetObjects.add(formWithRelationsDto);
            }
        }
    }
    return assetObjects;
}

static List<InventoryDto> getAssetsOfObject(FormWithRelationsDto oneFormWithRelationsDto) {
    if (oneFormWithRelationsDto != null) {
        List<InventoryDto> inventoryDtos = oneFormWithRelationsDto.getInventories();
        return inventoryDtos;
    }
    return null
}

static InventoryItemDto getInventoryItemDto(InventoryDto inventoryDto, String attributeName) {
    List<InventoryItemDto> inventoryItems = inventoryDto.getInventoryItems();
    if (inventoryItems != null && inventoryItems.size() > 0) {
        for (InventoryItemDto inventoryItemDto : inventoryItems) {
            if (StringUtils.equalsIgnoreCase(attributeName, inventoryItemDto.attributeName)) {
                return inventoryItemDto
            }
        }
    }
    return null
}

static String getSingleAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getValue() : null
}

static List<String> getMultiAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getMultiListValues() : null
}

static List<InventoryRefDto> getRefAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getInventoryRefs() : null
}

static String getDateAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getIsoDateValue() : null
}

static SystemFieldDto getSystemFieldDto(InventoryDto inventoryDto, String fieldName) {
    List<SystemFieldDto> systemFields = inventoryDto.getSystemFields();
    if (systemFields != null && systemFields.size() > 0) {
        for (SystemFieldDto systemFieldDto : systemFields) {
            if (StringUtils.equalsIgnoreCase(fieldName, systemFieldDto.getFieldName())) {
                return systemFieldDto
            }
        }
    }
    return null
}

static String getSystemFieldRawValue(InventoryDto inventoryDto, attributeName) {
    SystemFieldDto systemFieldDto = getSystemFieldDto(inventoryDto, attributeName);
    return systemFieldDto != null ? systemFieldDto.getValue() : null
}

static String getSystemFieldDisplayValue(InventoryDto inventoryDto, attributeName) {
    SystemFieldDto systemFieldDto = getSystemFieldDto(inventoryDto, attributeName);
    return systemFieldDto != null ? systemFieldDto.getDisplayValue() : null
}


// get all selected assets of custom field 10232 ()
List<FormWithRelationsDto> assetsWithFields = getCustomFieldAssets(inventoryController, issue, assetCustomFieldId)


def logUserFields(def appUserDto) {
    if (appUserDto != null) {
        // you can use this code to access user fields
        logger.debug(" - Display name: " + appUserDto.getDisplayName())
        logger.debug(" - Email address: " + appUserDto.getEmailAddress())
        logger.debug(" - User name: " + appUserDto.getUsername())
        logger.debug(" - User key: " + appUserDto.getKey())
    }
}

//
for (FormWithRelationsDto formWithRelationsDto : assetsWithFields) {
    List<InventoryDto> inventoryDtos = getAssetsOfObject(formWithRelationsDto);
    if (inventoryDtos != null && inventoryDtos.size() > 0) {
        // in this case, this list will have one object at most
        for (InventoryDto inventoryDto : inventoryDtos) {
            if (inventoryDto != null) {
                logger.debug("---------------------------------------------------------------------")
                logger.debug("---------------------------------------------------------------------")
                logger.debug("Asset id: " + inventoryDto.getId())
                logger.debug("Asset name: " + inventoryDto.getName())
                logger.debug("Asset type id: " + inventoryDto.getFormId())
                logger.debug("Asset type name: " + inventoryDto.getFormName())
                logger.debug("Asset type scheme id: " + inventoryDto.getObjectSchemaId())
                logger.debug("Asset type scheme name: " + inventoryDto.getObjectSchemaName())
                logger.debug("Update by: " + inventoryDto.getUpdatedBy())

                if (inventoryDto.getCreatorUser() != null) {
                    logger.debug("Updated by user details: ")
                    logUserFields(inventoryDto.getUpdatedByUser());
                }

                logger.debug("Created by: " + inventoryDto.getCreator())
                if (inventoryDto.getCreatorUser() != null) {
                    logger.debug("Created by user details: ")
                    logUserFields(inventoryDto.getCreatorUser());
                }

                logger.debug("Attachments (as json string): " + inventoryDto.getAttachments())


                // Attributes: -----------------

                // single select text based attribute
                String operationSystem = getSingleAttributeValue(inventoryDto, "Operating System")
                logger.debug("Operation System: " + operationSystem)

                String vendor = getSingleAttributeValue(inventoryDto, "Vendor")
                logger.debug("Vendor: " + vendor)


                // single user type attributes
                String singleUser = getSingleAttributeValue(inventoryDto, "all - jira single user")
                logger.debug("singleUser key: " + singleUser)

                // Some user fields are already populated. Alternatively you can use userKey to getUser with Jira services.
                InventoryItemDto userItem = getInventoryItemDto(inventoryDto, "all - jira single user");
                if (userItem != null && userItem.getUser() != null) {
                    logUserFields(userItem.getUser());
                }


                // date type attrbiutes
                String datePicker = getDateAttributeValue(inventoryDto, "all - date picker")
                logger.debug("datePicker: " + datePicker)
                String dateTimePicker = getDateAttributeValue(inventoryDto, "all - date time picker")
                logger.debug("dateTimePicker: " + dateTimePicker)

                // reference type attribute
                List<InventoryRefDto> inventoryRefs = getRefAttributeValue(inventoryDto, "all - Asset list")
                logger.debug("attribute name 'all - Asset list':") // reference asset
                if (inventoryRefs != null && inventoryRefs.size() > 0) {
                    for (InventoryRefDto inventoryRefDto : inventoryRefs) {
                        if (inventoryRefDto != null) {
                            logger.debug("      - asset id: " + inventoryRefDto.getId() + ", name: " + inventoryRefDto.getName())
                        }
                    }
                }

                // multi-select- type attributes
                List<String> multiUser = getMultiAttributeValue(inventoryDto, "all - jira multiple users")
                logger.debug("Multi user select - 'all - jira multiple users':")
                for (String userKey : multiUser) {
                    logger.debug("      - user key: " + userKey)
                }

                List<String> multiSelectCombobox = getMultiAttributeValue(inventoryDto, "all - listbox multiple")
                logger.debug("Mult-select combo attribute, field name 'all - listbox multiple': ")
                for (String oneValue : multiSelectCombobox) {
                    logger.debug("      - one value: " + oneValue)
                }


                // system fields
                // status
                def statusFieldKey = getSystemFieldRawValue(inventoryDto, "asset.status");
                logger.debug("Status Field key: " + statusFieldKey);
                def statusObject = StatusEnum.getByKey(statusFieldKey);
                logger.debug("Status Field display value: " + (statusObject != null ? statusObject.displayName : ""));

                // substatus
                def substatusFieldKey = getSystemFieldRawValue(inventoryDto, "asset.substatus");
                logger.debug("Substatus Field key: " + substatusFieldKey);
                def substatusObject = SubstatusEnum.getByKey(substatusFieldKey);
                logger.debug("Substatus Field display value: " + (substatusObject != null ? substatusObject.displayName : ""));

                // assignee system field
                def assetAssignee = getSystemFieldRawValue(inventoryDto, "asset.assignee");
                logger.debug("assetAssignee user key: " + assetAssignee);

                // owner system field
                def assetOwner = getSystemFieldRawValue(inventoryDto, "asset.owner");
                logger.debug("assetOwner user key: " + assetOwner);

                // managedBy system field
                def assetManagedBy = getSystemFieldRawValue(inventoryDto, "asset.managedBy");
                logger.debug("assetManagedBy user key: " + assetManagedBy);

                // reservedFor system field
                def assetReservedFor = getSystemFieldRawValue(inventoryDto, "asset.reservedFor");
                logger.debug("assetReservedFor user key: " + assetReservedFor);

                // belongsToGroup system field
                def assetBelongsToGroup = getSystemFieldRawValue(inventoryDto, "asset.belongsToGroup");
                logger.debug("assetBelongsToGroup: " + assetBelongsToGroup);
                if (StringUtils.isNotBlank(assetBelongsToGroup)) {
                    def jsonSlurper = new JsonSlurper()
                    def groups = jsonSlurper.parseText(assetBelongsToGroup);
                    for (def group : groups) {
                        logger.debug("   - " + group);
                    }
                }

                // quantity system field
                def assetQuantity = getSystemFieldRawValue(inventoryDto, "asset.quantity");
                logger.debug("assetQuantity: " + assetQuantity);

                // asset tag system field
                def assetTag = getSystemFieldRawValue(inventoryDto, "asset.assetTag");
                logger.debug("assetTag: " + assetTag);

                // install date system field
                def assetInstallDate = getSystemFieldRawValue(inventoryDto, "asset.installDate");
                logger.debug("assetInstallDate: " + assetInstallDate);

                // location system field
                def assetLocationId = getSystemFieldRawValue(inventoryDto, "asset.location");
                def assetLocationDisplayValue = getSystemFieldDisplayValue(inventoryDto, "asset.location");
                logger.debug("location id: " + assetLocationId + ", display value: " + assetLocationDisplayValue);

                // cost system field
                def assetCost = getSystemFieldRawValue(inventoryDto, "asset.cost");
                logger.debug("assetCost: " + assetCost);

                // currency system field
                def assetCostCurrency = getSystemFieldRawValue(inventoryDto, "asset.costCurrency");
                logger.debug("assetCostCurrency: " + assetCostCurrency);

                // invoiceNumber system field
                def assetInvoiceNumber = getSystemFieldRawValue(inventoryDto, "asset.invoiceNumber");
                logger.debug("assetInvoiceNumber: " + assetInvoiceNumber);

            }
        }
    }
}

Output 1:

2020-06-22 17:12:45,726 DEBUG [groovy.script]: Parsed assetId: 10495
2020-06-22 17:12:45,857 DEBUG [groovy.script]: Parsed assetId: 10417
2020-06-22 17:12:45,930 DEBUG [groovy.script]: ---------------------------------------------------------------------
2020-06-22 17:12:45,930 DEBUG [groovy.script]: ---------------------------------------------------------------------
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset id: 10495
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset name: all two - clone 4
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset type id: 36
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset type name: all types
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset type scheme id: 2
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Asset type scheme name: HR Assets
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Update by: admin
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Updated by user details: 
2020-06-22 17:12:45,931 DEBUG [groovy.script]:       - Display name: admin
2020-06-22 17:12:45,931 DEBUG [groovy.script]:       - Email address: admin@snapbytes.com
2020-06-22 17:12:45,931 DEBUG [groovy.script]:       - User name: admin
2020-06-22 17:12:45,931 DEBUG [groovy.script]:       - User key: admin
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Created by: admin
2020-06-22 17:12:45,931 DEBUG [groovy.script]: Created by user details: 
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - Display name: admin
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - Email address: admin@snapbytes.com
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - User name: admin
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - User key: admin
2020-06-22 17:12:45,932 DEBUG [groovy.script]: Attachments (as json string): [ {
  "originalFileName" : "Marla_Singer_2.jpg",
  "serverFileName" : "10163_48190_1591789628314.jpg",
  "fileSize" : "27 KB",
  "created" : "10/Jun/20 2:47 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "xps13-2.jpg",
  "serverFileName" : "23815_70783_1591870901186.jpg",
  "fileSize" : "42 KB",
  "created" : "11/Jun/20 1:21 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "bobswift example2.groovy",
  "serverFileName" : "06040_73967_1592483691399.groovy",
  "fileSize" : "3 KB",
  "created" : "18/Jun/20 3:34 PM",
  "creator" : "admin"
} ]
2020-06-22 17:12:45,932 DEBUG [groovy.script]: Operation System: null
2020-06-22 17:12:45,932 DEBUG [groovy.script]: Vendor: null
2020-06-22 17:12:45,932 DEBUG [groovy.script]: singleUser key: agrant-sd-demo
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - Display name: Alana Grant
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - Email address: agrant-sd-demo@example.com
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - User name: agrant-sd-demo
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - User key: agrant-sd-demo
2020-06-22 17:12:45,932 DEBUG [groovy.script]: datePicker: 2019-12-26
2020-06-22 17:12:45,932 DEBUG [groovy.script]: dateTimePicker: 2019-12-31T14:39
2020-06-22 17:12:45,932 DEBUG [groovy.script]: attribute name 'all - Asset list':
2020-06-22 17:12:45,932 DEBUG [groovy.script]:       - asset id: 183, name: admin çalışanı
2020-06-22 17:12:45,933 DEBUG [groovy.script]:       - asset id: 221, name: Asset Name 0001
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2020-06-22 17:12:45,933 DEBUG [groovy.script]:       - user key: mdavis-sd-demo
2020-06-22 17:12:45,933 DEBUG [groovy.script]:       - user key: assetuser
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2020-06-22 17:12:45,933 DEBUG [groovy.script]:       - one value: mavi
2020-06-22 17:12:45,933 DEBUG [groovy.script]:       - one value: kırmızı
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Status Field key: 1
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Status Field display value: In stock
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Substatus Field key: 2
2020-06-22 17:12:45,933 DEBUG [groovy.script]: Substatus Field display value: Reserved
2020-06-22 17:12:45,933 DEBUG [groovy.script]: assetAssignee user key: JIRAUSER10303
2020-06-22 17:12:45,933 DEBUG [groovy.script]: assetOwner user key: agrant-sd-demo
2020-06-22 17:12:45,933 DEBUG [groovy.script]: assetManagedBy user key: mdavis-sd-demo
2020-06-22 17:12:45,933 DEBUG [groovy.script]: assetReservedFor user key: tyler
2020-06-22 17:12:45,933 DEBUG [groovy.script]: assetBelongsToGroup: [ "jira-servicedesk-users", "jira-software-users" ]
2020-06-22 17:12:45,934 DEBUG [groovy.script]:    - jira-servicedesk-users
2020-06-22 17:12:45,934 DEBUG [groovy.script]:    - jira-software-users
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetQuantity: 100
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetTag: asset tag
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetInstallDate: 2020-06-10
2020-06-22 17:12:45,934 DEBUG [groovy.script]: location id: 2, display value: Cambridge Office
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetCost: 1200
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetCostCurrency: USD
2020-06-22 17:12:45,934 DEBUG [groovy.script]: assetInvoiceNumber: my invoice 10387
2020-06-22 17:12:45,934 DEBUG [groovy.script]: ---------------------------------------------------------------------
2020-06-22 17:12:45,934 DEBUG [groovy.script]: ---------------------------------------------------------------------
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset id: 10417
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset name: Alpha Database Server
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset type id: 46
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset type name: Server 3
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset type scheme id: 9
2020-06-22 17:12:45,934 DEBUG [groovy.script]: Asset type scheme name: Sample Assets
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Update by: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Updated by user details: 
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - Display name: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - Email address: admin@snapbytes.com
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - User name: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - User key: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Created by: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Created by user details: 
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - Display name: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - Email address: admin@snapbytes.com
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - User name: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]:       - User key: admin
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Attachments (as json string): [ {
  "originalFileName" : "HkOK6xWq38k.jpg",
  "serverFileName" : "58639_34101_1590059524448.jpg",
  "fileSize" : "102 KB",
  "created" : "21/May/20 2:12 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "9vPGTB7Fyuc.jpg",
  "serverFileName" : "22804_10326_1590059524540.jpg",
  "fileSize" : "315 KB",
  "created" : "21/May/20 2:12 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "dyr4-I8r6z0.jpg",
  "serverFileName" : "74440_47514_1590059524554.jpg",
  "fileSize" : "202 KB",
  "created" : "21/May/20 2:12 PM",
  "creator" : "admin"
} ]
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Operation System: Windows 10
2020-06-22 17:12:45,935 DEBUG [groovy.script]: Vendor: Apple
2020-06-22 17:12:45,935 DEBUG [groovy.script]: singleUser key: null
2020-06-22 17:12:45,935 DEBUG [groovy.script]: datePicker: null
2020-06-22 17:12:45,935 DEBUG [groovy.script]: dateTimePicker: null
2020-06-22 17:12:45,936 DEBUG [groovy.script]: attribute name 'all - Asset list':
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Status Field key: 1
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Status Field display value: In stock
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Substatus Field key: 2
2020-06-22 17:12:45,936 DEBUG [groovy.script]: Substatus Field display value: Reserved
2020-06-22 17:12:45,936 DEBUG [groovy.script]: assetAssignee user key: 
2020-06-22 17:12:45,936 DEBUG [groovy.script]: assetOwner user key: null
2020-06-22 17:12:45,936 DEBUG [groovy.script]: assetManagedBy user key: mdavis-sd-demo
2020-06-22 17:12:45,936 DEBUG [groovy.script]: assetReservedFor user key: null
2020-06-22 17:12:45,936 DEBUG [groovy.script]: assetBelongsToGroup: null
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetQuantity: null
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetTag: tttt
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetInstallDate: null
2020-06-22 17:12:45,967 DEBUG [groovy.script]: location id: null, display value: null
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetCost: null
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetCostCurrency: 
2020-06-22 17:12:45,967 DEBUG [groovy.script]: assetInvoiceNumber: null

SCRIPT 2: Get all Asset Custom Fields and fetch all assets


import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import groovy.json.JsonSlurper
import groovy.transform.Field
import inventoryplugin.customfield.textcf.AipGenericTextCFType
import inventoryplugin.dto.portable.FormWithRelationsDto
import inventoryplugin.dto.portable.InventoryDto
import inventoryplugin.dto.portable.InventoryItemDto
import inventoryplugin.dto.portable.InventoryRefDto
import inventoryplugin.service.controller.InventoryController
import inventoryplugin.service.rest.dto.SystemFieldDto
import inventoryplugin.service.status.StatusEnum
import inventoryplugin.service.status.SubstatusEnum
import org.apache.commons.lang3.StringUtils
import org.apache.log4j.Level
import org.apache.log4j.Logger

@Field Logger logger = Logger.getLogger("snapbytes.inventoryplugin.groovy.script")
logger.setLevel(Level.DEBUG)

@WithPlugin("plugin.jip")

@PluginModule
InventoryController inventoryController;
@Field customFieldManager = ComponentAccessor.getCustomFieldManager();
@Field issueManager = ComponentAccessor.getIssueManager();

// FIXME: PLEASE READ HERE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//     delete this line if the "issue" object is already injected with ScriptRunner
def issue = issueManager.getIssueObject("AP-3")

// update asset id according to your setup
@Field assetCustomFieldId = 10227
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Integer stringToInteger(String s) {
    try {
        return Integer.parseInt(s);
    } catch (def e) {
        logger.debug("Can not convert asset id to INTEGER" + e.getMessage())
        return null;
    }
}

List<FormWithRelationsDto> getCustomFieldAssets(inventoryController, theIssue, customFieldId) {
    List<FormWithRelationsDto> assetObjects = new ArrayList<>();
    def remoteUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

    def cField = customFieldManager.getCustomFieldObject(customFieldId)
    // for assets custom field, asset cf value will be delimited with commas with additional leading and trailing commas, i.e: ,1,2,3,
    def cfValue = theIssue.getCustomFieldValue(cField)
    def assetIds = StringUtils.split(cfValue, ",");
    for (String assetIdAsStr : assetIds) {
        if (StringUtils.isNotBlank(assetIdAsStr)) {
            Integer assetId = stringToInteger(assetIdAsStr);
            if (assetId != null && assetId > 0) {
                logger.debug("Parsed assetId: " + assetId);
                FormWithRelationsDto formWithRelationsDto = inventoryController.getFormWithRelationsAndOneInventoryDto(remoteUser, assetId);
                assetObjects.add(formWithRelationsDto);
            }
        }
    }
    return assetObjects;
}

static List<InventoryDto> getAssetsOfObject(FormWithRelationsDto oneFormWithRelationsDto) {
    if (oneFormWithRelationsDto != null) {
        List<InventoryDto> inventoryDtos = oneFormWithRelationsDto.getInventories();
        return inventoryDtos;
    }
    return null
}

static InventoryItemDto getInventoryItemDto(InventoryDto inventoryDto, String attributeName) {
    List<InventoryItemDto> inventoryItems = inventoryDto.getInventoryItems();
    if (inventoryItems != null && inventoryItems.size() > 0) {
        for (InventoryItemDto inventoryItemDto : inventoryItems) {
            if (StringUtils.equalsIgnoreCase(attributeName, inventoryItemDto.attributeName)) {
                return inventoryItemDto
            }
        }
    }
    return null
}

static String getSingleAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getValue() : null
}

static List<String> getMultiAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getMultiListValues() : null
}

static List<InventoryRefDto> getRefAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getInventoryRefs() : null
}

static String getDateAttributeValue(InventoryDto inventoryDto, String attributeName) {
    InventoryItemDto inventoryItemDto = getInventoryItemDto(inventoryDto, attributeName);
    return inventoryItemDto != null ? inventoryItemDto.getIsoDateValue() : null
}

static SystemFieldDto getSystemFieldDto(InventoryDto inventoryDto, String fieldName) {
    List<SystemFieldDto> systemFields = inventoryDto.getSystemFields();
    if (systemFields != null && systemFields.size() > 0) {
        for (SystemFieldDto systemFieldDto : systemFields) {
            if (StringUtils.equalsIgnoreCase(fieldName, systemFieldDto.getFieldName())) {
                return systemFieldDto
            }
        }
    }
    return null
}

static String getSystemFieldRawValue(InventoryDto inventoryDto, attributeName) {
    SystemFieldDto systemFieldDto = getSystemFieldDto(inventoryDto, attributeName);
    return systemFieldDto != null ? systemFieldDto.getValue() : null
}

static String getSystemFieldDisplayValue(InventoryDto inventoryDto, attributeName) {
    SystemFieldDto systemFieldDto = getSystemFieldDto(inventoryDto, attributeName);
    return systemFieldDto != null ? systemFieldDto.getDisplayValue() : null
}


def logUserFields(def appUserDto) {
    if (appUserDto != null) {
        // you can use this code to access user fields
        logger.debug("      - Display name: " + appUserDto.getDisplayName())
        logger.debug("      - Email address: " + appUserDto.getEmailAddress())
        logger.debug("      - User name: " + appUserDto.getUsername())
        logger.debug("      - User key: " + appUserDto.getKey())
    }
}


List<CustomField> getAssetCustomFields() {
    List<CustomField> assetCustomFields = new ArrayList<>();
    List<CustomField> allCustomFields = customFieldManager.getCustomFieldObjects();
    for (CustomField customField : allCustomFields) {
        if (customField.getCustomFieldType() instanceof AipGenericTextCFType) {
            assetCustomFields.add(customField);
        }
    }
    return assetCustomFields;
}

List<CustomField> assetCustomFields = getAssetCustomFields();

for (CustomField assetCustomField : assetCustomFields) {

    List<FormWithRelationsDto> assetsWithFields = getCustomFieldAssets(inventoryController, issue, assetCustomField.getId())
    logger.debug("============= CUSTOM FIELD starts =================================================================")
    logger.debug("============= " + assetCustomField.getId() + " - " + assetCustomField.getName() + "=============")

    for (FormWithRelationsDto formWithRelationsDto : assetsWithFields) {
        List<InventoryDto> inventoryDtos = getAssetsOfObject(formWithRelationsDto);
        if (inventoryDtos != null && inventoryDtos.size() > 0) {
            // in this case, this list will have one object at most
            for (InventoryDto inventoryDto : inventoryDtos) {
                if (inventoryDto != null) {
                    logger.debug("---------ASSET starts ------------------------------------------------------------")
                    logger.debug("Asset id: " + inventoryDto.getId())
                    logger.debug("Asset name: " + inventoryDto.getName())
                    logger.debug("Asset type id: " + inventoryDto.getFormId())
                    logger.debug("Asset type name: " + inventoryDto.getFormName())
                    logger.debug("Asset type scheme id: " + inventoryDto.getObjectSchemaId())
                    logger.debug("Asset type scheme name: " + inventoryDto.getObjectSchemaName())
                    logger.debug("Update by: " + inventoryDto.getUpdatedBy())

                    if (inventoryDto.getCreatorUser() != null) {
                        logger.debug("Updated by user details: ")
                        logUserFields(inventoryDto.getUpdatedByUser());
                    }

                    logger.debug("Created by: " + inventoryDto.getCreator())
                    if (inventoryDto.getCreatorUser() != null) {
                        logger.debug("Created by user details: ")
                        logUserFields(inventoryDto.getCreatorUser());
                    }

                    logger.debug("Attachments (as json string): " + inventoryDto.getAttachments())


                    // Attributes: -----------------

                    // single select text based attribute
                    String operationSystem = getSingleAttributeValue(inventoryDto, "Operating System")
                    logger.debug("Operation System: " + operationSystem)

                    String vendor = getSingleAttributeValue(inventoryDto, "Vendor")
                    logger.debug("Vendor: " + vendor)

                    // text value
                    String firstName = getSingleAttributeValue(inventoryDto, "First Name")
                    logger.debug("First Name: " + firstName)
                    String lastName = getSingleAttributeValue(inventoryDto, "Last Name")
                    logger.debug("Last Name: " + lastName)


                    // single user type attributes
                    String singleUser = getSingleAttributeValue(inventoryDto, "all - jira single user")
                    logger.debug("singleUser key: " + singleUser)

                    // Some user fields are already populated. Alternatively you can use userKey to getUser with Jira services.
                    InventoryItemDto userItem = getInventoryItemDto(inventoryDto, "all - jira single user");
                    if (userItem != null && userItem.getUser() != null) {
                        logUserFields(userItem.getUser());
                    }


                    // date type attrbiutes
                    String datePicker = getDateAttributeValue(inventoryDto, "all - date picker")
                    logger.debug("datePicker: " + datePicker)
                    String dateTimePicker = getDateAttributeValue(inventoryDto, "all - date time picker")
                    logger.debug("dateTimePicker: " + dateTimePicker)

                    // reference type attribute
                    List<InventoryRefDto> inventoryRefs = getRefAttributeValue(inventoryDto, "all - Asset list")
                    logger.debug("attribute name 'all - Asset list':") // reference asset
                    if (inventoryRefs != null && inventoryRefs.size() > 0) {
                        for (InventoryRefDto inventoryRefDto : inventoryRefs) {
                            if (inventoryRefDto != null) {
                                logger.debug("      - asset id: " + inventoryRefDto.getId() + ", name: " + inventoryRefDto.getName())
                            }
                        }
                    }

                    // multi-select- type attributes
                    List<String> multiUser = getMultiAttributeValue(inventoryDto, "all - jira multiple users")
                    logger.debug("Multi user select - 'all - jira multiple users':")
                    for (String userKey : multiUser) {
                        logger.debug("      - user key: " + userKey)
                    }

                    List<String> multiSelectCombobox = getMultiAttributeValue(inventoryDto, "all - listbox multiple")
                    logger.debug("Mult-select combo attribute, field name 'all - listbox multiple': ")
                    for (String oneValue : multiSelectCombobox) {
                        logger.debug("      - one value: " + oneValue)
                    }


                    // system fields
                    // status
                    def statusFieldKey = getSystemFieldRawValue(inventoryDto, "asset.status");
                    logger.debug("Status Field key: " + statusFieldKey);
                    def statusObject = StatusEnum.getByKey(statusFieldKey);
                    logger.debug("Status Field display value: " + (statusObject != null ? statusObject.displayName : ""));

                    // substatus
                    def substatusFieldKey = getSystemFieldRawValue(inventoryDto, "asset.substatus");
                    logger.debug("Substatus Field key: " + substatusFieldKey);
                    def substatusObject = SubstatusEnum.getByKey(substatusFieldKey);
                    logger.debug("Substatus Field display value: " + (substatusObject != null ? substatusObject.displayName : ""));

                    // assignee system field
                    def assetAssignee = getSystemFieldRawValue(inventoryDto, "asset.assignee");
                    logger.debug("assetAssignee user key: " + assetAssignee);

                    // owner system field
                    def assetOwner = getSystemFieldRawValue(inventoryDto, "asset.owner");
                    logger.debug("assetOwner user key: " + assetOwner);

                    // managedBy system field
                    def assetManagedBy = getSystemFieldRawValue(inventoryDto, "asset.managedBy");
                    logger.debug("assetManagedBy user key: " + assetManagedBy);

                    // reservedFor system field
                    def assetReservedFor = getSystemFieldRawValue(inventoryDto, "asset.reservedFor");
                    logger.debug("assetReservedFor user key: " + assetReservedFor);

                    // belongsToGroup system field
                    def assetBelongsToGroup = getSystemFieldRawValue(inventoryDto, "asset.belongsToGroup");
                    logger.debug("assetBelongsToGroup: " + assetBelongsToGroup);
                    if (StringUtils.isNotBlank(assetBelongsToGroup)) {
                        def jsonSlurper = new JsonSlurper()
                        def groups = jsonSlurper.parseText(assetBelongsToGroup);
                        for (def group : groups) {
                            logger.debug("   - " + group);
                        }
                    }

                    // quantity system field
                    def assetQuantity = getSystemFieldRawValue(inventoryDto, "asset.quantity");
                    logger.debug("assetQuantity: " + assetQuantity);

                    // asset tag system field
                    def assetTag = getSystemFieldRawValue(inventoryDto, "asset.assetTag");
                    logger.debug("assetTag: " + assetTag);

                    // install date system field
                    def assetInstallDate = getSystemFieldRawValue(inventoryDto, "asset.installDate");
                    logger.debug("assetInstallDate: " + assetInstallDate);

                    // location system field
                    def assetLocationId = getSystemFieldRawValue(inventoryDto, "asset.location");
                    def assetLocationDisplayValue = getSystemFieldDisplayValue(inventoryDto, "asset.location");
                    logger.debug("location id: " + assetLocationId + ", display value: " + assetLocationDisplayValue);

                    // cost system field
                    def assetCost = getSystemFieldRawValue(inventoryDto, "asset.cost");
                    logger.debug("assetCost: " + assetCost);

                    // currency system field
                    def assetCostCurrency = getSystemFieldRawValue(inventoryDto, "asset.costCurrency");
                    logger.debug("assetCostCurrency: " + assetCostCurrency);

                    // invoiceNumber system field
                    def assetInvoiceNumber = getSystemFieldRawValue(inventoryDto, "asset.invoiceNumber");
                    logger.debug("assetInvoiceNumber: " + assetInvoiceNumber);
                    logger.debug("---------ASSET ends ------------------------------------------------------------")
                }
            }
        }
    }

    logger.debug("============= CUSTOM FIELD ends =================================================================")
}


Output 2:

2021-03-09 13:17:18,351 DEBUG [groovy.script]: Parsed assetId: 10445
2021-03-09 13:17:18,415 DEBUG [groovy.script]: Parsed assetId: 10542
2021-03-09 13:17:18,498 DEBUG [groovy.script]: ============= CUSTOM FIELD starts =================================================================
2021-03-09 13:17:18,498 DEBUG [groovy.script]: ============= customfield_10227 - Assets=============
2021-03-09 13:17:18,499 DEBUG [groovy.script]: ---------ASSET starts ------------------------------------------------------------
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset id: 10445
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset name: Great Mind Space Exploration Technologies Corp.
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset type id: 54
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset type name: Customer
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset type scheme id: 1
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Asset type scheme name: IT Assets Scheme
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Update by: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Updated by user details: 
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Created by: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Created by user details: 
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Attachments (as json string): null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Operation System: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Vendor: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: First Name: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Last Name: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: singleUser key: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: datePicker: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: dateTimePicker: null
2021-03-09 13:17:18,499 DEBUG [groovy.script]: attribute name 'all - Asset list':
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2021-03-09 13:17:18,499 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Status Field key: 1
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Status Field display value: In stock
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Substatus Field key: 1
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Substatus Field display value: Available
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetAssignee user key: JIRAUSER10303
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetOwner user key: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetManagedBy user key: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetReservedFor user key: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetBelongsToGroup: [ "Asset Admins" ]
2021-03-09 13:17:18,500 DEBUG [groovy.script]: - Asset Admins
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetQuantity: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetTag: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetInstallDate: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: location id: null, display value: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetCost: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetCostCurrency: 
2021-03-09 13:17:18,500 DEBUG [groovy.script]: assetInvoiceNumber: null
2021-03-09 13:17:18,500 DEBUG [groovy.script]: ---------ASSET ends ------------------------------------------------------------
2021-03-09 13:17:18,500 DEBUG [groovy.script]: ---------ASSET starts ------------------------------------------------------------
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset id: 10542
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset name: Keyser Söze
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset type id: 81
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset type name: Employee 6
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset type scheme id: 14
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Asset type scheme name: Demo 10
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Update by: JIRAUSER10303
2021-03-09 13:17:18,500 DEBUG [groovy.script]: Updated by user details: 
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - Display name: Asset Admin 1
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - Email address: asset-admin@example.com
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - User name: assetadmin
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - User key: JIRAUSER10303
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Created by: admin
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Created by user details: 
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,501 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Attachments (as json string): null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Operation System: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Vendor: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: First Name: Keyser
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Last Name: Söze
2021-03-09 13:17:18,501 DEBUG [groovy.script]: singleUser key: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: datePicker: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: dateTimePicker: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: attribute name 'all - Asset list':
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Status Field key: 2
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Status Field display value: In use
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Substatus Field key: 
2021-03-09 13:17:18,501 DEBUG [groovy.script]: Substatus Field display value: 
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetAssignee user key: JIRAUSER10303
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetOwner user key: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetManagedBy user key: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetReservedFor user key: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetBelongsToGroup: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetQuantity: null
2021-03-09 13:17:18,501 DEBUG [groovy.script]: assetTag: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: assetInstallDate: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: location id: null, display value: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: assetCost: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: assetCostCurrency: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: assetInvoiceNumber: null
2021-03-09 13:17:18,502 DEBUG [groovy.script]: ---------ASSET ends ------------------------------------------------------------
2021-03-09 13:17:18,502 DEBUG [groovy.script]: ============= CUSTOM FIELD ends =================================================================
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= CUSTOM FIELD starts =================================================================
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= customfield_10231 - Assets of HR=============
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= CUSTOM FIELD ends =================================================================
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= CUSTOM FIELD starts =================================================================
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= customfield_10232 - Assets of IT=============
2021-03-09 13:17:18,504 DEBUG [groovy.script]: ============= CUSTOM FIELD ends =================================================================
2021-03-09 13:17:18,504 DEBUG [groovy.script]: Parsed assetId: 10478
2021-03-09 13:17:18,587 DEBUG [groovy.script]: Parsed assetId: 56
2021-03-09 13:17:18,675 DEBUG [groovy.script]: Parsed assetId: 10525
2021-03-09 13:17:18,756 DEBUG [groovy.script]: ============= CUSTOM FIELD starts =================================================================
2021-03-09 13:17:18,756 DEBUG [groovy.script]: ============= customfield_10602 - Assets of Warehouse=============
2021-03-09 13:17:18,756 DEBUG [groovy.script]: ---------ASSET starts ------------------------------------------------------------
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset id: 10478
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset name: Alpha Database Server
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset type id: 64
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset type name: Server 4
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset type scheme id: 12
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Asset type scheme name: Test scheme
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Update by: null
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Updated by user details: 
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Created by: admin
2021-03-09 13:17:18,756 DEBUG [groovy.script]: Created by user details: 
2021-03-09 13:17:18,767 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,769 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,769 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,769 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,769 DEBUG [groovy.script]: Attachments (as json string): null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: Operation System: null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: Vendor: null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: First Name: null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: Last Name: null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: singleUser key: null
2021-03-09 13:17:18,769 DEBUG [groovy.script]: datePicker: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: dateTimePicker: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: attribute name 'all - Asset list':
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Status Field key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Status Field display value: 
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Substatus Field key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Substatus Field display value: 
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetAssignee user key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetOwner user key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetManagedBy user key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetReservedFor user key: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetBelongsToGroup: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetQuantity: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetTag: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetInstallDate: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: location id: null, display value: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetCost: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetCostCurrency: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: assetInvoiceNumber: null
2021-03-09 13:17:18,770 DEBUG [groovy.script]: ---------ASSET ends ------------------------------------------------------------
2021-03-09 13:17:18,770 DEBUG [groovy.script]: ---------ASSET starts ------------------------------------------------------------
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset id: 56
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset name: App tester beta
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset type id: 10
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset type name: Server
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset type scheme id: 1
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Asset type scheme name: IT Assets Scheme
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Update by: admin
2021-03-09 13:17:18,770 DEBUG [groovy.script]: Updated by user details: 
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Created by: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Created by user details: 
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Attachments (as json string): [ {
"originalFileName" : "Teams_windows.exe",
"serverFileName" : "57560_73595_1553866732382.exe",
"fileSize" : "74 MB",
"created" : "29/Mar/19 4:38 PM",
"creator" : "admin"
}, {
"originalFileName" : "TnjwytKETkk.jpg",
"serverFileName" : "40124_68202_1553866806076.jpg",
"fileSize" : "116 KB",
"created" : "29/Mar/19 4:40 PM",
"creator" : "admin"
} ]
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Operation System: Fedora Linux
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Vendor: Apple
2021-03-09 13:17:18,771 DEBUG [groovy.script]: First Name: null
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Last Name: null
2021-03-09 13:17:18,771 DEBUG [groovy.script]: singleUser key: null
2021-03-09 13:17:18,771 DEBUG [groovy.script]: datePicker: null
2021-03-09 13:17:18,771 DEBUG [groovy.script]: dateTimePicker: null
2021-03-09 13:17:18,771 DEBUG [groovy.script]: attribute name 'all - Asset list':
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Status Field key: 2
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Status Field display value: In use
2021-03-09 13:17:18,771 DEBUG [groovy.script]: Substatus Field key: 
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Substatus Field display value: 
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetAssignee user key: agrant-sd-demo
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetOwner user key: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetManagedBy user key: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetReservedFor user key: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetBelongsToGroup: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetQuantity: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetTag: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetInstallDate: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: location id: null, display value: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetCost: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetCostCurrency: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: assetInvoiceNumber: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: ---------ASSET ends ------------------------------------------------------------
2021-03-09 13:17:18,772 DEBUG [groovy.script]: ---------ASSET starts ------------------------------------------------------------
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset id: 10525
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset name: Alpha Tomcat Server
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset type id: 76
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset type name: Server 5
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset type scheme id: 13
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Asset type scheme name: demo assets
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Update by: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Updated by user details: 
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Created by: admin
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Created by user details: 
2021-03-09 13:17:18,772 DEBUG [groovy.script]: - Display name: admin
2021-03-09 13:17:18,772 DEBUG [groovy.script]: - Email address: admin@snapbytes.com
2021-03-09 13:17:18,772 DEBUG [groovy.script]: - User name: admin
2021-03-09 13:17:18,772 DEBUG [groovy.script]: - User key: admin
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Attachments (as json string): null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Operation System: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Vendor: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: First Name: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: Last Name: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: singleUser key: null
2021-03-09 13:17:18,772 DEBUG [groovy.script]: datePicker: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: dateTimePicker: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: attribute name 'all - Asset list':
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Multi user select - 'all - jira multiple users':
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Mult-select combo attribute, field name 'all - listbox multiple': 
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Status Field key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Status Field display value: 
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Substatus Field key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: Substatus Field display value: 
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetAssignee user key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetOwner user key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetManagedBy user key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetReservedFor user key: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetBelongsToGroup: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetQuantity: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetTag: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetInstallDate: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: location id: null, display value: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetCost: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetCostCurrency: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: assetInvoiceNumber: null
2021-03-09 13:17:18,773 DEBUG [groovy.script]: ---------ASSET ends ------------------------------------------------------------
2021-03-09 13:17:18,773 DEBUG [groovy.script]: ============= CUSTOM FIELD ends =================================================================