Preparing ServiceNow CMDB for synchronization
Add BMC Discovery to cmdb_ci discovery_source choice list
The BMC Discovery integration uses a Discovery Source choice list on the base cmdb_ci class. Discovery Source is a choice list meaning that it is not a free text field and that the values allowed are restricted to a predefined list. The Discovery Source text used in theBMC Discovery CMDB integration is BMC Discovery and this must exist in the choice list.
- Login to the ServiceNow CMDB with a system administrator privileged account and navigate to System Definition > Choice Lists
Click on New to add a choice list record and complete the following fields:
Field
Value
Table
"Configuration Item [cmdb_ci]"
Element
discovery_source
Language
English (mandatory)
Label
"BMC Discovery"
Value
The default value is, "BMC Discovery". This must match the "Source Name" used in the configuration in BMC Discovery, and be unique in your ServiceNow CMDB instance.
- Click Submit.
Create the bmc.integration user
A ServiceNow user must be created to allow the BMC Discovery CMDB integration to create / update and manage CIs within the ServiceNow CMDB.
This procedure assumes that the roles have not been modified from their default configuration.
- Login to the ServiceNow CMDB with a system administrator privileged account and navigate to User Administration > Users
Click on New to add a User record and complete the following fields:
Field
Value
User ID
This must match the Username used in the configuration in BMC Discovery.
First Name
Integration user first name
Last Name
Integration user last name
Password
This must match the Password used in the configuration in BMC Discovery.
Active
Set to "Active"
Locked Out
Ensure this is not selected
Password needs reset
Ensure this is not selected
Web service access only
Ensure this is selected.
Language
English (mandatory)
- Click Submit.
Locate the created user and open the User record, select Roles and Edit. The following roles must be added to the user:
Role
Purpose
itil
The itil role is required to give access to the cmdb_ci tables
model_manager
The model_manager role is required so that any missing products (models) can be created when a CI is added to ServiceNow. The products (models) are stored in the table cmdb_model. The role model_manager gives write access to the cmdb_model table.
user_admin
Optional - The user_admin role is to allow write permissions to the core_company table to create / add missing "manufacturers" to the system. If not provided, manufacturers unknown by ServiceNow will be empty on CIs.
personalize_choices
The system needs to read the sys_choice records to check that the discovery source exists in the choice list of the cmdb_ci table.
- Click Save.
Setting the OAuth API Endpoint
Create an OAuth application endpoint to allow the BMC Discovery CMDB integration to access system resources in the ServiceNow CMDB.
- Login to the ServiceNow CMDB with a system administrator privileged account and navigate to System OAuth > Application Registry
- Click New
- On the interceptor page, click Create an OAuth API endpoint for external clients.
Complete the following fields:
Field
Value
Name
A unique name.
Client ID
This is created by default. This must match the Client ID used in the configuration in BMC Discovery.
Client Secret
If no value supplied the system automatically generates this. This must match the Client Secret used in the configuration in BMC Discovery.
- Click Submit.
Class configuration summary
The following table shows a summary of the configuration changes that you need to make to ServiceNow CMDB classes.
Class | Internal Class Name | Change | Dependency | Note |
---|---|---|---|---|
Hardware | cmdb_ci_hardware | Remove the identifier entry for “Name” and remove the identifier entry for “Serial Number” and replace with an identifier entry for “Name” + “Serial Number” with allow null attributes selected. This new identifier entry should be the 2nd in priority behind the Serial Number lookup identifier entry. | ||
Storage Volume | cmdb_ci_storage_volume | Change first Identifier Entry to be Object ID and Name with allow null attributes | ||
Resource Group | cmdb_ci_resource_group | Change Identifier Entry to be Object ID and Name with allow null attributes. Add in a dependency for Environment | Resource Group - Contains (Contains::Contained by) - Environment | Rule must be of the type “Containment” and should be added via the Metadata Editor. See below for details. |
Environment | cmdb_ci_environment | Create Identification Rule: Independent, Set Identifier Entry to be Serial Number and Name with allow null attributes | ||
Application | cmdb_ci_appl | Add two additional dependencies for Logical Datacenter and Cluster | Application - Runs on (Runs on::Runs) - Logical Datacenter | Check. This is NOT Rule must be of the type "Hosting". |
Application - Runs on (Runs on::Runs) - Cluster | Check. This is NOT Rule must be of the type "Hosting". | |||
Virtual Machine Instance | cmdb_ci_vm_instance | Add two additional dependencies for Server and Network Gear | Virtual Machine Instance - Runs on (Runs on::Runs) - Server | Check. This is NOT Rule must be of the type "Hosting". |
Virtual Machine Instance - Runs_on (Runs on::Runs) - Network Gear | Check. This is NOT Rule must be of the type "Hosting". | |||
Fibre Channel Port | cmdb_ci_fc_port | Change Identifier Entry to be Name and WWPN with allow null attributes and add in another dependency for IP Switch | Fibre Channel Port - Owned By (Owns::Owned by) - IP Switch | Check. This is NOT Rule must be of the type "Hosting". |
Logical Datacenter | cmdb_ci_logical_datacenter | Add in a dependency for Environment | Logical Datacenter - Hosts (Hosted on::Hosts) - Environment | Check. This is NOT Rule must be of the type "Hosting". |
VMware vCenter Datacenter | cmdb_ci_vcenter_datacenter | Add in a dependency for ESX Server | VMware vCenter Datacenter - Contains (Contains::Contained by) - ESX Server | Check. This is NOT Rule must be of the type "Hosting". |
VMware vCenter Datastore | cmdb_ci_vcenter_datastore | Add in a dependency for VMware vCenter Datacenter | VMware vCenter Datastore - Contained by (Contains::Contained by) - VMware vCenter Datacenter | Check. This is NOT Rule must be of the type "Hosting". |
Service | cmdb_ci_service | Create Identification Rule: Independent, Set Identifier Entry to be Name. | ||
Datastore Disk | cmdb_ci_vcenter_datastore_disk | Create Identification Rule: Dependent, Set Identifier Entry to be Name and add in dependency for VMware vCenter Datastore. | Datastore Disk - Provided By (Provided By::Provides) - VMware vCenter Datastore | Check. This is NOT Rule must be of the type "Hosting". |
Load Balancer Service | cmdb_ci_lb_service | Change first Identifier Entry to include Fully Qualified Domain Name, Port, IP Address, Name and Object ID and Allow null attributes and add in another dependency for Load Balancer Application | Load Balancer Service - Runs on (Runs on::Runs) - Load Balancer Application | Check. This is NOT Runs (Runs on::Runs) Rule must be of type “Hosting”. |
Cloud Load Balancer | cmdb_ci_cloud_load_balancer | Change Identifier Entry to include Name, IP Address and Object ID and Allow null attributes | ||
Business Application | cmdb_ci_business_app | Create Identification Rule: Independent. Set Identifier Entry to be Name. | ||
File System | cmdb_ci_file_system | Change first Identifier Entry to be Name and Mount Point with allow null attributes | ||
IP Network | cmdb_ci_ip_network | Create Identification Rule: Independent. Set Identifier Entry to be Subnet. | ||
Load Balancer Application | cmdb_ci_lb_appl | Change the Identification Rule to be Independent. Set Identifier Entry to be Name and Serial number with allow null attributes | ||
Load Balancer Pool | cmdb_ci_lb_pool | Add in a dependency for Load Balancer Application | Load Balancer Pool - Owned by (Owns::Owned by) – Load Balancer Application | Check. This is NOT Owns (Owns::Owned by) Rule must be of type “Hosting”. |
Metadata Editor
Some IRE rules require a type of "Containment" rather than "Hosting". To set up these rules, use the Metadata Editor.
The following example shows how to set up the Containment rules between Environment and Resource Group:
- Navigate to the Metadata Editor in the Service Now UI.
- Under the Containment Rules tab, click Add New Rule .
- In the "Add Top-Level Containment Rule select "Environment".
- For the newly create rule for environment select "Add Containment Rule".
- Select "Resource Group" for the configuration Item type and "Contains::Contained by" for the relationship type.
System Property Modification
Some classes in ServiceNow are configured to require specific attributes to be defined at the time of creation, for example, it_application_owner and cmdb_software_product_model in the cmdb_ci_business_app class.
To enable successful creation of CIs with these mandatory attributes, disable the following system property in ServiceNow:
- Open the ServiceNow menu, in the All search field, enter sys_properties.list and press Enter.
- On the resulting table view, filter the Name column by using the term glide.required.attribute.enabled, and open the system property.
- Change the value from true to false. The term false must be in lowercase.
You should consult your ServiceNow product documentation for full details on its configuration.
Network device types require additions to default mappings in ServiceNow
Network device types cannot be correctly mapped as they are not included in the default mappings in ServiceNow. For example, the following types are not mapped:
- "Load Balancer / Web Caching"
- "Firewall / Load Balancer"
When synchronized to ServiceNow CMDB, the "device Type" attribute is not set and remains empty. You should consult your ServiceNow product documentation for full details adding to the default mappings.