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 =================================================================