--- title: IBM Cloud Platform discovery description: The ServiceNow Discovery application finds IBM Cloud Platform components \(Softlayer API v3 and v3.1 and Bluemix API v2\) using the IBM Cloud Platform patterns. Discovering some of these resources might require updating to the latest version of the Discovery and Service Mapping Patterns application from the ServiceNow Store. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/it-operations-management/discovery-and-service-mapping-patterns/ibm-cloud-platform-discovery.html release: australia product: Discovery and Service Mapping Patterns classification: discovery-and-service-mapping-patterns topic_type: reference last_updated: "2026-03-12" reading_time_minutes: 25 breadcrumb: [Available cloud discovery patterns, Discovery patterns used by ITOM Visibility, ITOM Visibility, IT Operations Management] --- # IBM Cloud Platform discovery The ServiceNow Discovery application finds IBM Cloud Platform components \(Softlayer API v3 and v3.1 and Bluemix API v2\) using the IBM Cloud Platform patterns. Discovering some of these resources might require updating to the latest version of the Discovery and Service Mapping Patterns application from the ServiceNow Store. You can use the patterns on the ServiceNow AI Platform using London Patch 7, Madrid Patch 2, or later releases. ## Request apps on the Store Visit the [ServiceNow Store](https://store.servicenow.com/sn_appstore_store.do#!/store/home) to view all the available apps, and for information about submitting requests to the store. For cumulative release notes information for all released apps, see the [ServiceNow Store version history release notes](https://www.servicenow.com/docs/r/store-release-notes/sn-store-release-notes.html). ## Prerequisites - **MID Server** Use a dedicated MID Server for cloud discovery. The MID Server must have 16 Cores, 8 GB with 4 GB Java Memory Model \(JVM\) memory allocation. Deploy and connect the dedicated MID Server with internet access. - **Credentials** The cloud resources are in an IBM cloud. Create the IBM Credentials for accessing your IBM account. 1. Navigate to **Discovery** > **Credentials**. 2. Click **New**. 3. Click **IBM Credentials** and then fill in the form: |Field|Description| |-----|-----------| |Name|Credential name. An example is `ibm-cred`.| |Order|Order in which the platform tries this credential as it attempts to log on to devices. A smaller number indicates that the credential appears higher in the list. Establish the credential order when using large numbers of credentials or when security locks out users after three failed login attempts. If all the credentials have the same order number, or none, the instance tries the credentials in a random order. The default value is 100.| |Softlayer API User|Username for the Softlayer API. Use the Softlayer API Username defined in the Softlayer console.| |Softlayer API Key|Key for the Softlayer API. Use the Softlayer API Key that is defined in the Softlayer console.| |Bluemix API Key|Key for the Bluemix API. Use the Bluemix API Key defined in the IBM Cloud console.| 4. Click **Submit**. - **Create an IBM cloud service account** Use the credentials defined in the preceding procedure to create the IBM cloud service account. 1. Navigate to **Cloud Provisioning and Governance** > **Service Accounts**. 2. Click **New**. 3. On the form, fill in the fields: |Field|Description| |-----|-----------| |Name|Credential name. An example is `ibm-snow`| |Account Id|IBM account ID name. Enter the IBM Account ID.| |Discovery credentials|Discovery credentials that you defined earlier.| |Datacenter Type|Datacenter type. As an example, `IBM Datacenter [cmdb_ci_ibm_datacenter]`| 4. Click **Submit**. - **Create a Discovery schedule** To configure a Discovery schedule through Discovery Admin Workspace, see [Create an IBM Discovery schedule in Discovery Admin Workspace](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/it-operations-management/discovery/create-ibm-schedule-DAW.md). To configure a serverless Discovery schedule: 1. On the ServiceNow AI Platform, navigate to **Discovery** > **Discovery Schedules**. 2. Click **New**. 3. On the form, fill in the fields: |Field|Description| |-----|-----------| |Name|Name for this Discovery schedule. As an example, `Serverless Pattern`| |Discover|Discover type. Select **Serverless**| |MID Server|Name of the MID Server. As an example, `Discovery_Server`| |Active|Option for enabling this schedule for Discovery. Select this check box to enable Discovery.| |Run|Specifies how frequently to run the Discovery schedule.| 4. Right-click the header of the Discovery Schedule form and select **Save**. \[Omitted image "serverless-execution-pattern.png"\] Alt text: Serverless execution pattern 5. Click the **Serverless Execution Patterns** tab. 6. Click **New**. 7. On the form, fill in the fields:
Field Description
Name Name for this Serverless Execution Pattern. As an example, `IBM1`
Pattern Name of the pattern that you want to run.\[Omitted image "ibm-patterns.png"\] Alt text: IBM patterns If you want to run multiple patterns, create multiple records.
Proxy Host Fully qualified domain name of the machine on which you are installing the proxy server. Specify **Global**.
Active Option for enabling this schedule for Discovery. Select this check box to enable Discovery.
8. Configure the parameters required by the IBM Cloud Platform pattern as follows: |Parameter|Description| |---------|-----------| |cloud\_cred\_id|The sys\_id of the IBM credentials specified into the configuration.| |cloud\_account\_id|The IBM account ID.| |cloud\_datacenter\_type|cmdb\_ci\_ibm\_datacenter| 9. **Update**. 10. To start Discovery, navigate to the Serverless Discovery definition and click **Discover Now**. - **IBM flow - horizontal discovery** - To perform a discovery using a serverless schedule, the IBM Cloud Platform patterns that were selected run and discover IBM Cloud Platform resources. - To perform a discovery using a service account, a full IBM Cloud Platform discovery schedule runs, discovering all supported IBM Cloud Platform resources. - **Cloud custom operation** Cloud REST – Add Response to Context Operation for Cloud REST queries that supports large-scale responses and better memory usage. - Specify all the fields with the same values as in the Cloud REST Query custom operation, except to specify the table for the response, which is set in the **Response Variable Name** field. \[Omitted image "response-variable-name.png"\] Alt text: Response field - Set **Define parsing** to None. Methods to retrieve data for the IBM account 1. Navigate to **Pattern Designer** > **Custom Operations**. \[Omitted image "cloud-rest-query.png"\] Alt text: Cloud REST query 2. Click **Cloud REST – add response to context**. Method: Get Call API URLs used to retrieve the data: - Load Balancer **https://api.softlayer.com/rest<api\_version>/SoftLayer\_Network\_LBaaS\_LoadBalancer/getAllObjects?objectMask=mask\[listeners\[defaultPool\],members,healthMonitors\]** - Network **https://api.softlayer.com/rest/<API\_VERSION>/SoftLayer\_Account/getNetworkVlans?objectMask=mask\[primaryRouter.datacenter,name,id,vlanNumber,networkSpace\]** - Network **https://api.softlayer.com/rest/<API\_VERSION>/SoftLayer\_Account/getSubnets?objectMask=mask\[datacenter\]** - Network**https://api.softlayer.com/rest/<API\_VERSION>/SoftLayer\_Account/getSecurityGroups?objectMask=mask\[rules\]** - Organizations and Spaces **https://api.<region>.bluemix.net/v2/organizations** - **https://api.<region>.bluemix.net/v2/spaces** - SSH Key **https://api.softlayer.com/rest/v3/SoftLayer\_Account/SoftLayer\_Account/getSshKeys** - Storage **https://api.softlayer.com/rest/<api\_version>/SoftLayer\_Account/getNetworkStorage** - Virtual Server **https://api.softlayer.com/rest/v3.1/SoftLayer\_Account/getSecurityGroups** - **http://api.softlayer.com/rest/v3.1/SoftLayer\_Account/getSecurityGroups?objectMask=mask\[id,name,networkComponentBindings\[networkComponentId,networkComponent\[networkId,guest\[fullyQualifiedDomainName,hostname,id,datacenter\[name\]\]\]\]\]** - **https://api.softlayer.com/rest/v3.1/SoftLayer\_Account/getVirtualGuests?objectMask=mask\[hostname,domain,powerState,fullyQualifiedDomainName,notes,id,statusId,placementGroupId,sshKeys\[label,key,id,fingerprint,createDate,modifyDate,notes\],primaryBackendIpAddress,primaryIpAddress,networkVlans\[id,name,note,vlanNumber\],blockDeviceCount,blockDevices\[device,diskImageId,mountType,guestId,id,mountMode\],allowedNetworkStorage\[id,fileNetworkMountAddress,iscsiTargetIpAddresses,nasType,username,serviceResourceBackendIpAddress\],maxCpu,maxMemory,datacenter,networkComponentCount,regionalGroup,datacenter,location,operatingSystem\[id,softwareDescription\[id,name,longDescription,manufacturer,referenceCode,version\]\],networkComponents\[guestId,id,port,name,primarySubnet\[networkIdentifier,id,networkVlan\[id\]\],status,macAddress,primaryIpAddress\]\]** - **EVAL functions** Use the following EVAL function to transform the Load Balancer API response into a full JSON format. The default response is formatted as “\[<resource objects>\]”. ``` var cloud_lb_response = ${cloud_lb_response}; for (var i = 0; i < cloud_lb_response.size(); i++){ cloud_lb_response.set(i, '{"result":[' + cloud_lb_response.get(i) + ']}'); } CTX.setAttribute("cloud_lb_response", cloud_lb_response; ``` Use the following EVAL function to transform the Network API response into a full JSON format. The default response is formatted as “\[<resource objects>\]”. ``` var network_response = ${network_response}; for (var i = 0; i < network_response.size(); i++){ network_response.set(i, '{"result":[' + network_response.get(i) + ']}'); } CTX.setAttribute("network_response", network_response); ``` Use the following EVAL function to get the IBM region from the LB availability zone \(datacenter\). The same function is used for other resources inside the pattern. ``` var res = ""; res = IbmCloudDcToRegion.convertDctoRegion(${cloud_lb[].cloud_lb_az_short_name}); ``` Use the following EVAL function to select the required algorithm in the pattern. ``` var rtrn var lb_algorithm = ${cloud_lb_pools[].lb_algorithm}.toString(); switch (lb_algorithm){ case "ROUNDROBIN": lb_algorithm = "round-robin"; break; case "WEIGHTED_RR": lb_algorithm = "round-robin"; break; case "LEASTCONNECTION": lb_algorithm = "least-connections"; break; default: break; ``` Use the following EVAL function to parse the unique region to the account that hosts the Organizations and the corresponding spaces. ``` var tableWithoutDuplicates = ''; tableWithoutDuplicates = DuplicateRemover.removeDuplicates(${account_region},["region_name"]); CTX.setAttribute("account_region_unique", tableWithoutDuplicates); ``` Use the following EVAL function to get information for all the organizations that are assigned to the IBM cloud account. Iteration for getting the unique region is performed. ``` var cloudcall = new CloudRestAPIClient(); var resourceTable = ${account_region_unique[*].region_name}; var tableSize = resourceTable.size(); var tmp_response = new Packages.java.util.ArrayList(); var all_organizations_response = new Packages.java.util.ArrayList(); for (var i = 0; i < tableSize ; i++){ if (!resourceTable.get(i)) continue; var url = "https://api."+resourceTable.get(i)+".bluemix.net/v2/organizations"; tmp_response = cloudcall.arrayListExecute(${service_account}, null, url, null, 'GET', null, 'true', CTX); for (var j = 0; j < tmp_response.size(); j++){ all_organizations_response.add('{"result":[' + tmp_response.get(j) + ']}'); } } CTX.setAttribute("all_organizations_response", all_organizations_response); ``` Use the following EVAL function to get information for all the IBM cloud account assigned spaces, where the iteration for getting the unique region is performed. ``` var rtrn = ''; var cloudcall = new CloudRestAPIClient(); var resultList = new Packages.java.util.ArrayList(); var rest = ''; var resourceTable = ${account_region_unique[*].region_name}; var result = new Packages.java.util.ArrayList(); var all_organizations_response = ${all_organizations_response} for (var i = 0; i < resourceTable.size() ; i++){ var url = "https://api."+resourceTable.get(i)+".bluemix.net/v2/spaces"; result = cloudcall.arrayListExecute(${service_account}, null, url, null, 'GET', null, 'true', CTX); for (var z = 0; z < all_organizations_response.size(); z++){ var jsonObj = JSON.parse(result.get(z)); ms.log("length "+jsonObj.resources.length); for(var j=0;j>>>>>>>>>>>>||||||||||||>>>>>> region alias=" + resourceTable.get(i)); Packages.com.snc.sw.log.DiscoLog.getLogger("IBM Cloud Space and Org").debug(">>>>>>>>>>>>>||||||||||||>>>>>> region full name=" + IbmCloudDcToRegion.regionNamebyAlias(resourceTable.get(i))); row.put("region", IbmCloudDcToRegion.regionNamebyAlias(resourceTable.get(i))); row.put("space_guid",guid); row.put("space_url",url); row.put("space_name",name); row.put("space_organization_guid",organization_guid); row.put("space_allow_ssh",allow_ssh); row.put("rest", rest); resultList.add(row); } } CTX.setAttribute('spaces_table', resultList); } ``` Use the following EVAL function to filter all the spaces by unique region. ``` var space_region = ${spaces_table[].region}; Packages.com.snc.sw.log.DiscoLog.getLogger("IBM Cloud Space and Org").debug("filtering space according to LDC. space_region=" + space_region); var regions = ${cmdb_ci_ibm_datacenter[*].region}; Packages.com.snc.sw.log.DiscoLog.getLogger("IBM Cloud Space and Org").debug("input regions list=" + regions.toString()); var rtrn = "false"; if(regions.contains(space_region)) { rtrn = "true"; } rtrn; ``` Use the following EVAL function to filter all the spaces by storage discovery. ``` var storage_response = ${storage_response}; for (var i = 0; i < storage_response.size(); i++){ storage_response.set(i, '{"result":[' + storage_response.get(i) + ']}'); } CTX.setAttribute("storage_response", storage_response); ``` Use the following EVAL function to transform the API response into full JSON format, as the untouched response is formatted as “\[<resource objects>\]”. ``` var ssh_key = ${ssh_key_json}; for(var i = 0; i < ssh_key.size(); i++){ ssh_key.set(i,'{"result\" : ' + ssh_key.get(i) + "}"); } CTX.setAttribute("ssh_key_json", ssh_key); ``` Use the following EVAL function to populate the availability zone into the storage volume table. ``` var rtrn; var resource_group = ${network_storage[].resource_name}; var regex = /.*-(\w{3}\d{2}).*/; var az_name = regex.exec(resource_group); if (az_name) { rtrn = az_name[1]; } else { rtrn; } ``` Use the following EVAL function to populate the region into the storage volume table. ``` var res = ""; res = IbmCloudDcToRegion.convertDctoRegion(${network_storage[].availability_zone}); ``` Use the following EVAL function to transform the size of the storages to bytes from gigabytes. ``` var rtrn = ''; var size = ${network_storage[].size}; rtrn = (parseInt(size) * 1073741824) + ‘’; ``` Use the following EVAL function to transform the size of the storages to bytes from gigabytes. ``` var cloudcall = new CloudRestAPIClient(); var resourceTable = ${network_storage[*].storage_object_id}; var tableSize = resourceTable.size(); var allResources = new Packages.java.util.ArrayList(); var response = new Packages.java.util.ArrayList(); for (var i = 0; i < tableSize ; i++){ if (!resourceTable.get(i)) continue; var url = "https://api.softlayer.com/rest/"+${api_version}+"/SoftLayer_Network_Storage/"+resourceTable.get(i)+"/getObject?objectMask=mask[snapshots]"; // the commented out code is to call the "Cloud Rest Call" API allResources = cloudcall.arrayListExecute(${service_account}, null, url, null, 'GET', null, 'true', CTX); for (var j = 0; j < allResources.size(); j++){ response.add('{"result":[' + allResources.get(j) + ']}'); } } CTX.setAttribute("all_snapshots_response", response); ``` Use the following EVAL closure that transforms the JSON that is received from the API to a format that the JSON parser can work with. The default JSON is saved in `$vm_json_array`, the new JSON is in `$vm_json`. ``` var vm_json = new Packages.java.util.ArrayList(); vm_json.addAll(${vm_json_array}); for (var i = 0 ; i < vm_json.size(); i++){ vm_json.set(i, '{\"result\":[' + vm_json.get(i) + ']}'); } CTX.setAttribute("vm_json", vm_json); ``` Use the following EVAL closure that returns ‘on’ if the power status is running. The value ‘off’ is returned if the power status is off. ``` var power = ${cmdb_ci_vm_instance[].state}; var rtrn = ''; if (power == 'Running'){ rtrn = "on"; } else { rtrn = "off" } ``` Use the following EVAL closure that returns the region of the CI, based on provided availability zone name. ``` var az = ${cmdb_ci_vm_instance[].avail_zone}; var rtrn = ''; rtrn = IbmCloudDcToRegion.convertDctoRegion(az); ``` Use the following EVAL closure that builds a HashMap of HashSets, Connecting VMs with their network storages. The following key is used: - P = page - V = VM - N = network storage ``` var rtrn = ''; var vmJson = ${vm_json_array}; var VMtoStorageHashMap = new Packages.java.util.HashMap(); for (var p = 0 ; p < vmJson.size(); p++){ var page = JSON.parse(vmJson.get(p)); for (var now_V in page){ if (page[v].allowedNetworkStorage.length > 0){ var vm_id = page[v].id + ''; var storageSet = new Packages.java.util.HashSet(); for (var n in page[v].allowedNetworkStorage){ storageSet.add(page[v].allowedNetworkStorage[n].id + ''); } VMtoStorageHashMap.put(vm_id,storageSet); } } } CTX.setAttribute("VMStorageCache", VMtoStorageHashMap); ``` Use the following EVAL closure to remove duplicate entries from tables. ``` var tableWithoutDuplicates = ''; tableWithoutDuplicates = DuplicateRemover.removeDuplicates(${cmdb_ci_os_template},["object_id"]); CTX.setAttribute("cmdb_ci_os_template", tableWithoutDuplicates); ``` Use the following EVAL closure that builds a list of VM IDs that are related to the current security group ID. ``` var rtrn = ''; //get the Security Group ID of the current record in the table for comparison var current_table_id = ${security_groups[].sec_group_id}; var current_table_id_string = current_table_id + ''; // get the list of instance's ID that will be then added to Security Group table var needed_value_id_list = ${sec_group_network_components[*].vm_instance_id}; //get the list of Security Group IDs in the Network Component table, which will then be compared one by one to the current record of the security_groups table var compare_id_list = ${sec_group_network_components[*].sec_group_id}; var beforeReturn = ''; var separator = ''; for (var i = 0; i < compare_id_list.size(); i++) { if (current_table_id_string == compare_id_list.get(i)){ beforeReturn += separator + needed_value_id_list.get(i); separator = ','; } } rtrn = beforeReturn; ``` Use the following EVAL closure that builds a HashMap of HashSet between security groups and the VMs that are configured to use them. ``` rtrn = ''; var secGroupTable = ${cmdb_ci_endpoint_comp_security}; var secToVMHashSet = new Packages.java.util.HashMap(); // this loop worst case O(N*M) M = security groups, N = VMs for(var i=0; i Field Description Main CI: cmdb\_ci\_cloud\_load\_balancer name Load balancer name. object\_id Load balancer unique identifier. fqdn Load balancer address \(host name\). dns\_name Load balancer domain server name. short\_description Load balancer description that you provide for easy identification. operational\_status Load balancer status, one of either: - ONLINE - OFFLINE location Datacenter location. state Load balancer provisioning status. Related CI: cmdb\_ci\_lb\_service name Pattern created name, composed of:- load balancer name - type of protocol - resource type listener object\_id Load balancer unique identifier. port Port number of the listener. front\_end\_port Protocol port number of the listener. listener\_protocol Protocol of the listener. One of the following protocols:- TCP - HTTP - HTTPS operational\_status Provisioning status of the listener. Related CI: cmdb\_ci\_lb\_pool name Pattern created name, composed of: - load balancer name - type of protocol - port - resource type “pool” object\_id Load balancer pool unique identifier. port Protocol port of the backend. pool\_status Load balancer pool provisioning status. load\_balancing\_method Load balancing method. One of the following algorithms: - "ROUNDROBIN" - "WEIGHTED\_RR" - "LEASTCONNECTION" Related CI: cmdb\_ci\_lb\_pool\_member name Pattern created name, composed of:- load balancer name - type of protocol - IP address of the Pool Member object\_id Load balancer pool member unique identifier, composed of:- Member ID - Listener ID ip\_address IP address of a load balancer member. server\_id ID of the member in IBM cloud. load\_balancer Name of the related Load Balancer. Related CI: cmdb\_ci\_lb\_health\_service name Pattern created name, composed of:- load balancer name - type of protocol - resource type: **Health Check** - resource ID object\_id Unique identifier of the Health Service Check. monitor\_type Health check type. One of the following: - TCP - HTTP - HTTPS timeout\_sec Timeout, in seconds, to wait for health check responses. check\_interval\_sec Interval, in seconds, to perform health check. - **IBM Cloud Location Groups discovered resources** |Field|Description| |-----|-----------| |Main CI: cmdb\_ci\_cloud\_location\_group| |name|A descriptive name used to identify a Location Group.| |object\_id|The ID of the Location Group record.| |locationGroupType Name|The name of the Location Group Type.| |short\_description|A small note about a Location Group to use at your discretion.| |locationGroup Type ID|The ID of the Location Group Type.| - **IBM Cloud Network discovered resources**
Field Description
Main CI: cmdb\_ci\_network
name VLAN number.
object\_id Network unique identifier.
access\_port\_vlan VLAN number.
is\_external Network space value. The value is either: - true if the network\_space is “PUBLIC” - false if the network\_space is “PRIVATE”.
state State has the value "available".
Related CI: cmdb\_ci\_cloud\_subnet
name Name, composed of: “network\_identifier/cidr”
object\_id Subnet unique identifier.
subnet\_mask Netmask of the subnet.
gateway Gateway IP address.
cidr Method for allocating IP addresses and IP routing: “network\_identifier/cidr”.
category Subnet type.
broadcast\_address Subnet broadcast address.
available\_ip\_count Number of available IP addresses in the subnet.
Related CI: cmdb\_ci\_compute\_security\_group
name Security Group name.
object\_id Security Group unique identifier.
short\_description Security Group description that you provide for easy identification.
Related CI: cmdb\_ci\_compute\_security\_group\_rule
name Field with the same value as the Security Group Rule object\_id field.
object\_id Security Group Rule unique identifier.
created Date the CI was created.
direction Direction of the information. One of the following: - inbound - outbound
Ethertype Ethertype. One of the following: - IPv4 - IPv6
port\_range\_min The first port of the range that the rule applies to.
port\_range\_max The last port of the range that the rule applies to.
protocol Protocol that the rule is applied to.
remote\_group\_id Security Group ID for the Source/Destination security group. It means that this rule applies on all IP addresses that were configured in this security group.
- **IBM Cloud Organizations and Space discovered resources**
Field Description
Main CI: cmdb\_ci\_cloud\_org
name Name of the cloud organization.
guid Unique identifier of the organization.
url Unique URL of the organization.
billing\_enabled Billing method in use by the organization. One of either: - Enabled / \(TRUE\) - Disabled / \(FALSE\)
quota\_definition\_url Resources that are available to an organization.
spaces\_url Unique URL of the space assigned to the organization.
operational\_status Operational status of the organization.
Related CI: cmdb\_ci\_cloud\_space
name Unique name of the space.
object\_id Space unique identifier \(guid\).
alllow\_ssh Access to the application over SSH is either allowed or not allowed. Boolean, one of either: - TRUE - FALSE
URL URL of the space from the metadata description.
- **IBM Cloud Resource Groups discovered resources** |Field|Description| |-----|-----------| |Main CI: cmdb\_ci\_resource\_group| |name|Name of the resource group.| |object\_id|Unique identifier of the resource group.| |quota\_id|Value identifying the quota ID associated with the resource group.| - **IBM Cloud SSH Key discovered resources** |Field|Description| |-----|-----------| |Main CI: cmdb\_ci\_cloud\_key\_pair| |name|Name to identify an SSH key.| |object\_id|ID of the SSH key record.| |key|SSH Key record.| |finger\_print|Short sequence of bytes used to authenticate or lookup a longer SSH Key. This value is automatically generated when adding or modifying the SSH Key. Read only. Changes made are ignored.| |created \_date|Date when the SSH Key was added. Read only. Changes made are ignored.| |modify\_date|Date when the SSH Key was modified. Read only. Changes made are ignored.| |short\_description|SSH description that you provide for easy identification.| |Related CI: cmdb\_ci\_ibm\_datacenter| |name|Name of the datacenter.| |region|Region that the datacenter is in.| |discovery\_status|Status information about the IBM datacenter.| |sys\_class\_name|Class of the datacenter| |Related CI: cmdb\_ci\_cloud\_service\_account| |name|Name of the cloud service account.| |account\_id|Account ID for this cloud service account.| |discovery\_credentials|Credentials for this cloud service account.| |datacenter\_url|URL used to populate Logical Data Centers \(LDCs\).| |datacenter\_type|Type of datacenter. As an example, IBM Datacenter \[cmdb\_ci\_ibm\_datacenter\]| |datacenter\_discovery\_status|Status of last execution of Discover Datacenters.| - **IBM Cloud Storage discovered resources**
Field Description
Main CI: cmdb\_ci\_storage\_volume
name Username used to:- access a non-EVault Storage volume - register the EVault server agent with the vault backup system
object\_id Storage account unique identifier.
size Capacity of the storage account, measured in gigabytes.
size\_bytes Capacity of the storage account, measured in bytes.
label Name of the storage network resource.
storage\_type Description of the storage type. As an example, NAS.
fqdn IP address of a storage resource or fully qualified domain name.
device Unique identification number of the device associated with a Storage volume.
Related CI: cmdb\_ci\_storage\_vol\_snapshot
name Name of a storage network resource.
object\_id Storage unique identifier.
capacity Capacity of the snapshot volume in gigabytes.
fqdn IP address of a storage resource or fully qualified domain name.
location Unique availability zone where the storage volume is located.
Related CI: cmdb\_ci\_ibm\_datacenter
name Name of the datacenter.
region Region that the datacenter is in.
discovery\_status Status information about the IBM datacenter.
sys\_class\_name Class of the datacenter
Related CI: cmdb\_ci\_cloud\_service\_account
name Name of the cloud service account.
account\_id Account ID for this cloud service account.
discovery\_credentials Credentials for this cloud service account.
datacenter\_url URL used to populate LDCs.
datacenter\_type Type of datacenter. As an example, IBM Datacenter \[cmdb\_ci\_ibm\_datacenter\]
datacenter\_discovery\_status Status of last execution of Discover Datacenters.
Related CI: cmdb\_ci\_availability\_zone
name Name of the availability zone \(AZ\).
object\_id Unique identifier for this resource.
short\_description Availability zone description that you provide.
- **IBM Cloud Virtual Server discovered resources**
Field Description
Main CI: cmdb\_ci\_vm\_instance
name Name of the VM.
object\_id Unique identifier of the VM.
dns\_domain VM domain server name.
fqdn VM IP address.
short\_description Description in a note that is attached to the VM on the IBM console.
cpus Number of CPU cores assigned to this VM.
memory Memory size assigned to this VM.
disks Number of disks assigned to this VM.
state The running state of the VM. - On – returned as ‘Running’ from the API. - Off – returned as ‘Halted’ from the API.
placement\_group\_id Placement group ID.
nics Number of NICs.
Related CI: cmdb\_ci\_nic
name Name, composed of:- load balancer name - Port
object\_id Unique identifier of the NIC.
ip\_address IP that is configured on the NIC.
mac\_address NIC MAC details.
netmask Mask used to divide the IP address into subnets and to specify the available hosts in the network.
status State of the NIC.
Related CI: cmdb\_ci\_endpoint\_vnic
name Name for the VNIC endpoint.
object\_id Unique identifier of the VNIC endpoint.
host Host identifier.
Related CI: cmdb\_ci\_storage\_volume
name Username used to:- access a non-EVault Storage volume - register the EVault server agent with the vault backup system
object\_id Storage account unique identifier.
size Capacity of the storage account, measured in gigabytes.
size\_bytes Capacity of the storage account, measured in bytes.
label Name of the storage network resource.
storage\_type Description of the storage type. As an example, NAS.
fqdn IP address of a storage resource or fully qualified domain name.
device Unique identification number of the guest associated with a Storage volume.
Related CI: cmdb\_ci\_endpoint\_nfs
name Name for the NFS endpoint.
host Host identifier.
protocol Protocol that was applied.
type NFS endpoint type.
created Date that the NFS endpoint was created.
updated Date that the NFS endpoint was updated.
discovery\_source Source of the discovery. As an example, ServiceWatch
host\_name Host name of the NFS endpoint
Related CI: cmdb\_ci\_endpoint\_iscsi
host Host identifier for the ISCSI endpoint.
port Port to determine how GCP iscsi contact to the VMs.
protocol Protocol that was applied.
type ISCSI endpoint type
created Date that the ISCSI endpoint was created.
updated Date that the ISCSI endpoint was updated.
discovery\_source Source of the discovery. As an example, ImportSet
host\_name Host name of the ISCSI endpoint
Related CI: cmdb\_ci\_endpoint\_block
name Name for the block endpoint.
object\_id Unique identifier of the block endpoint.
host Host identifier.
Related CI: cmdb\_ci\_os\_template
name Name of the image. For example, ‘CentOS 7.0-64 Minimal for VSI’.
object\_id Unique identifier of the image.
guest\_os OS used by the image. As an example, Linux.
root\_device\_type Type of device used by root.
image\_source Source of the image.
image\_type Image type.
infuse\_key Key used to infuse the image.
update\_host\_name Update host name for the image.
credentials Credentials for the image.
version OS version. For example, ‘7.0-64 Minimal for VSI’.
Related CI: cmdb\_ci\_cloud\_key\_pair
name Name to identify a key \(key label\).
object\_id ID of the key record.
key Key record.
finger\_print Short sequence of bytes used to authenticate or look up a Key. This value is automatically generated when adding or modifying the Key. Read only. Changes made are ignored.
created \_date Date when the Key was added. Read only. Changes made are ignored.
modify\_date Date when the Key was modified. Read only. Changes made are ignored.
short\_description Description that you provide for easy identification.
Related CI: cmdb\_ci\_compute\_security\_group
name Security Group name.
object\_id Security Group unique identifier.
short\_description Security Group description that you provide for easy identification.
Related CI: cmdb\_ci\_endpoint\_comp\_security
host Host identifier of the compute security endpoint.
port Unique identifier of the compute security endpoint.
protocol Protocol that was applied.
type Type of compute security endpoint.
created Date when the compute security endpoint was added. Read only. Changes made are ignored.
updated Date when the compute security endpoint was modified. Read only. Changes made are ignored.
discovery\_source Source of the discovery. As an example, Manual Entry.
host\_name Host name of the compute security endpoint.
Related CI: cmdb\_ci\_ibm\_datacenter
name Name of the datacenter.
region Region that the datacenter is in.
discovery\_status Status information about the IBM datacenter.
sys\_class\_name Class of the datacenter
Related CI: cmdb\_ci\_availability\_zone
name Name of the availability zone \(AZ\).
object\_id Unique identifier for this resource.
short\_description Availability zone description that you provide.
Related CI: cmdb\_ci\_cloud\_service\_account
name Name of the cloud service account.
account\_id Account ID for this cloud service account.
discovery\_credentials Credentials for this cloud service account.
datacenter\_url URL used to populate LDCs.
datacenter\_type Type of datacenter. As an example, IBM Datacenter \[cmdb\_ci\_ibm\_datacenter\]
datacenter\_discovery\_status Status of last execution of Discover Datacenters.
- **IBM Cloud Virtual Server – Related Items view** \[Omitted image "ibm-vserver-related-items-1.png"\] Alt text: IBM Cloud Virtual Server – Related Items view ## CI Relationships These relationships are created to support IBM Cloud Platform discovery. - **Relationships for IBM Cloud Load Balancer discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_cloud\_load\_balancer| |cmdb\_ci\_cloud\_load\_balancer|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_cloud\_load\_balancer|Contains::Contained by|cmdb\_ci\_lb\_health\_service| |Related CI: cmdb\_ci\_availability\_zone| |cmdb\_ci\_availability\_zone|Hosted on::Hosts|cmdb\_ci\_cloud\_load\_balancer| |cmdb\_ci\_availability\_zone|Contains::Contained by|cmdb\_ci\_lb\_service| |Related CI: cmdb\_ci\_lb\_service| |cmdb\_ci\_lb\_service|Hosted on::Hosts|cmdb\_ci\_cloud\_load\_balancer| |cmdb\_ci\_lb\_service|Contains::Contained by|cmdb\_ci\_lb\_pool| |Related CI: cmdb\_ci\_lb\_pool| |cmdb\_ci\_lb\_pool|Hosted on::Hosts|cmdb\_ci\_cloud\_load\_balancer| |cmdb\_ci\_lb\_pool|Owns::Owned by|cmdb\_ci\_lb\_pool\_member| |Related CI: cmdb\_ci\_lb\_health\_service| |cmdb\_ci\_lb\_health\_service|Contains::Contained by|cmdb\_ci\_cloud\_load\_balancer| - **Relationships for IBM Cloud Location Groups discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_cloud\_location\_group| |cmdb\_ci\_cloud\_location\_group|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_cloud\_location\_group|Contains::Contained by|cmdb\_ci\_availability\_zone| - **Relationships for IBM Cloud Network discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_network| |cmdb\_ci\_network|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_network|Contains::Contained by|cmdb\_ci\_cloud\_subnet| |Related CI: cmdb\_ci\_compute\_security\_group| |cmdb\_ci\_compute\_security\_group|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_compute\_security\_group|Contains::Contained by|cmdb\_ci\_compute\_security\_group\_rule| - **Relationships for IBM Cloud Resource Groups discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_resource\_group| |cmdb\_ci\_resource\_group|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| - **Relationships for IBM Cloud SSH Key discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_cloud\_key\_pair| |cmdb\_ci\_cloud\_key\_pair|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| - **Relationships for IBM Cloud Storage discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_storage\_volume| |cmdb\_ci\_storage\_volume|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_storage\_volume|Provisioned::Provisioned From|cmdb\_ci\_storage\_vol\_snapshot| |Related CI: cmdb\_ci\_storage\_vol\_snapshot| |cmdb\_ci\_storage\_vol\_snapshot|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_storage\_vol\_snapshot|Located in Zone::Zone contains|cmdb\_ci\_availability\_zone| |Related CI: cmdb\_ci\_availability\_zone| |cmdb\_ci\_availability\_zone|Contains::Contained by|cmdb\_ci\_storage\_volume| - **Relationships for IBM Cloud Virtual Server discovered resources** |CI|Relationship|CI| |---|------------|---| |Related CI: cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_ibm\_datacenter|Contains::Contained by|cmdb\_ci\_availability\_zone| |cmdb\_ci\_ibm\_datacenter|Hosted on::Hosts|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_vm\_instance| |cmdb\_ci\_vm\_instance|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_vm\_instance|Located in:Houses|cmdb\_ci\_availability\_zone| |cmdb\_ci\_vm\_instance|Uses:Used By|cmdb\_ci\_cloud\_key\_pair| |cmdb\_ci\_vm\_instance|Contains:Contained By|cmdb\_ci\_nic| |cmdb\_ci\_vm\_instance|endpoint|cmdb\_ci\_nic| |Related CI: cmdb\_ci\_availability\_zone| |cmdb\_ci\_availability\_zone|Hosted on::Hosts|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_nic| |cmdb\_ci\_nic|Hosted on::Hosts|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_os\_template| |cmdb\_ci\_os\_template|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_os\_template|Provisioned::Provisioned by|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_compute\_security\_group| |cmdb\_ci\_compute\_security\_group|Hosted on::Hosts|cmdb\_ci\_cloud\_service\_account| |cmdb\_ci\_compute\_security\_group|Implement::Implemented from|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_storage\_volume| |cmdb\_ci\_storage\_volume|Hosted on::Hosts|cmdb\_ci\_ibm\_datacenter| |cmdb\_ci\_storage\_volume|Implement::Implemented from|cmdb\_ci\_vm\_instance| |Related CI: cmdb\_ci\_cloud\_key\_pair| |cmdb\_ci\_cloud\_key\_pair|Hosted On:Hosts|cmdb\_ci\_cloud\_service\_account| - **Relationships discovered for the virtual machine \(VM\) instance** |CI|Relationship|CI| |---|------------|---| |Servers \[cmdb\_ci\_server\]|Virtualized by:: Virtualizes|Virtual Machine Instance \[cmdb\_ci\_instance\]| ## Data collected by Service Mapping during tag-based discovery Service Mapping uses tag-based discovery to create service instance maps including the Cloud components. The Service Mapping application comes with the following preconfigured CI relationships used for tag-based discovery. These CI relationships are available from the 1.0.68 release on the ServiceNow Store. |CI|Relationship|CI| |---|------------|---| |Configuration Item \[cmdb\_ci\]|Hosted on::Hosts|Logical Datacenter \[cmdb\_ci\_logical\_datacenter\]| |Logical Datacenter \[cmdb\_ci\_logical\_datacenter\]|Hosted on::Hosts|Cloud Service Account \[cmdb\_ci\_cloud\_service\_account\]| ## Troubleshooting If the mapping process does not proceed as you expected, follow the following suggestions.
Symptom Cause Solution
Discovery fails. The discovery message contains the information about an error caused by the REST timeout. There are many CIs sending the REST call response in the deployment. The MID Server cannot process the REST call response without exceeding the time limit controlled by the **mid.sa.cloud.request\_timeout** parameter. By default, the **mid.sa.cloud.request\_timeout** parameter is set to 30000 milliseconds. Increase the value of this parameter on the relevant MID Server and run discovery again. **Note:** If the **Configuration Parameters** related list for the relevant MID Server does not show this parameter, you may need to add it.
Pattern Designer fails during a debug session. The Pattern Designer message contains information about an error caused by a timeout. The Pattern Designer fails because of a timeout during pattern debugging \(and not during discovery\). By default, the **sa.debugger.max\_timeout**parameter is set to 240 seconds.Increase the value of this parameter on the relevant MID Server.
**Parent Topic:**[Available cloud discovery patterns](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/it-operations-management/discovery-and-service-mapping-patterns/available-patterns-cloud.md)