IBM Support

Troubleshooting reconciliation problems in Registry Services

Troubleshooting


Problem

This document provides information on how to debug reconciliation problems in Registry Services. It assumes that the document audience is aware of reconciliation and other concepts used by Registry Services.

Resolving The Problem

This document provides information on how to debug reconciliation problems in Registry Services. You must analyze the Registration Records and Resource Records that were created to identify possible problems. There are some steps that might help you while you investigate reconciliation problems:

  • Get the Registration Records URLs.
  • Try to get the reconciled Resource Record associated to these Registration Records. See to the queries described in Useful Registry Services Queries section of this document.
  • If there is no reconciled Resource Record, it means that no identification rule was completely satisfied when the Registration Record was created. Try to figure out which attributes might be missing.
  • If there is a reconciled Resource Record, take a look at the information available in ProviderRecord attribute. There might be more than one.
  • In the ProviderRecord elements, you can see a link to the Registration Records that are associated to this Resource Record (rr:registrationRecord attribute). This link shows you a list of Registration Records URLs.
  • Given the list of Registration Records URLs for each Registration Record, you can get the timestamp (dcterms:modified attribute) and based on this timestamp, you can sort the Registration Records and determine in which order they were created.

You can try to determine the problem by understanding in which reconciliation scenario the Registrations Records you have belong, because you have the order they were created. For example, attribute invalidation, merge or split scenarios. The reconciliation scenarios are described in the next section of this document.

You can also try to perform some queries in the Registry Services application to determine the reconciliation problem. See the Registry Services Collections URLs and Useful Registry Services Queries sections to run these queries.


Reconciliation scenarios

Matching identification rules with no conflict in other attributes

This scenario considers the case where Registration Records have matching values in the same identification rules and there is no conflict in the values for other attributes. Registry Services creates a single reconciled Resource Record with all the attributes specified in the Registration Records. See the Jazz for Service Management Reference section in this document for more information related to matching and conflicting values.

Input example

Registration Record 1

Registration Record 2

Output example

Reconciled Resource Record

Matching identification rules with conflict in other attributes

This scenario considers the case where Registration Records have matching values in the identification rules and there is a conflict in the values for other attributes. The most recent Registration Record is considered the most reliable source of information in this case. The dcterms:modified property value is used to determine the most recent Registration Record. Then, the value defined by the most recent Registration Record is used and the value of the older Registration Record is invalidated (for example, discarded).

Input example

Registration Record 1

Registration Record 2

Output example

Reconciled Resource Record

Note that this scenario can have a different output if the other attribute allows more than one value (for example, multivalued). In this case, there is no conflict, and all the attribute values are included in the reconciled Resource Record. You can verify in the Resource Shape (oslc:occurs property) whether the attribute allows more than one value. See the Jazz for Service Management Reference section in this document for more information related to Resource Shape definitions.

Input example

Registration Record 1

Registration Record 2

Output example

Reconciled Resource Record

Conflict in lower priority identification rule (merge)

This scenario considers the case where Registration Records have a complete match in the values of the identification rule of higher priority, and there is a conflict in the values of the identification rules of lower priority. Registry Services merges the data from both Registration Records and creates a single reconciled Resource Record with the values for the conflicting identification rule from the most recent Registration Record. The conflicting values from the older Registration Record are invalidated (for example, discarded).

You can verify in the Resource Shape (rr:priority property) whether the identification rule is of higher or lower priority. See the Jazz for Service Management Reference section in this document for more information related to Resource Shape definitions and handling conflicting information.

Input example

Registration Record 1

Registration Record 2

Output example

Reconciled Resource Record

Conflict in higher priority identification rule (split)

This scenario considers the case where Registration Records have a complete match in the values of the identification rule of lower priority, and there is a conflict in the values of the identification rules of higher priority. Registry Services cannot merge the data from both Registration Records and it creates two distinct Resource Records. The two Resource Records cannot have the same value for an identification rule. Therefore, only the Resource Record derived from the most recent Registration Record contains the values from the lower priority identification rule. The values are omitted from the Resource Record derived from the older Registration Record.

You can verify in the Resource Shape (rr:priority property) whether the identification rule is of higher or lower priority. See the Jazz for Service Management Reference section in this document for more information related to Resource Shape definitions and handling conflicting information.

Input example

Registration Record 1

Registration Record 2

Output example

Reconciled Resource Record 1

Reconciled Resource Record 2

Registry Services Collections URLs

Service Providers Collection

Initially, the Service Providers collection has entries for the two providers (Provider Registry and Resource Registry). After some iterations, it should have entries created by the products (for example, records for TADDM change, TADDM config, ITM, and others). The URLs in this list are values of oslc:serviceProvider property in Registration Records.

URL: http://[hostname]:[port]/oslc/pr/collection

Output example

http://localhost:9081/oslc/pr/collection

Registration Record Collection

This collection has the Registration Records created by the Service Providers. There is a Registration Record for each resource from each Service Provider. Each Registration Record contains the URL for the record about that resource in the product provider (value of rr:sourceRecord property).

URL: http://[hostname]:[port]/oslc/rr/registration/collection

Output example

http://localhost:9081/oslc/rr/registration/collection

Resource Records Collection

This collection has the Resource Records created by the Registry Services by merging multiple Registration Records for the same resources. They are the records used by UI preview.

URL: http://[hostname]:[port]/oslc/rr/collection

Output example

http://localhost:9081/oslc/rr/collection

Resource Shape Definitions Collection

– This collection has descriptions of the resource types and all the properties that are defined for them and the identification rules used to reconcile/merge resources in the Resource Registry. These are useful for people who want to understand how things work. They can be customized using CLI, but default shapes are derived from OSLC Reconciliation Specification.

URL: http://[hostname]:[port]/oslc/rr/shapes/collection

Output example

http://localhost:9081/oslc/rr/shapes/collection

Useful Registry Services Queries

This section presents some queries that you can run on Registry Services. They are run through the Registry Services Collections URLs and they are URL encoding, that is, some characters are converted into a format that can be transmitted over the Internet. See the URL Encoding References section of this document for more information.

Based on the collections described before, you can run specific queries by adding some parameters in the request URL.

If you add oslc.select=*, the query returns entire records, instead of just URLs.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.select=*

If you add oslc.paging=true, this query forces paged output, and includes a ResponseInfo section with the total number of records matched by the query.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.paging=true

Output example

http://localhost:9081/oslc/rr/collection?oslc.paging=true

Other query parameters include oslc.where, oslc.prefix, oslc.pageSize. These parameters are all described in the Jazz for Service Management Information Center and in the OSLC Core query specification.

Find below some examples of queries for debugging data in Registry Services.

Search for specific reconciled Resource Record given the sourceRecord

This query retrieves a reconciled Resource Record using the URL of a record in a product provider (sourceRecord). The sourceRecord URL is highlighted in red. The sourceRecord of the reconciled Resource Record corresponds to the about URL of the payload that was POSTed to create the Registration Record. There are a sourceRecord URL for each Registration Record that was merged when creating the reconciled Resource Record.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Brr:sourceRecord=<[registration_record_source_record]>%7D&oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D&oslc.select=*

Search for specific reconciled Resource Record given the registration URL

This query retrieves a reconciled Resource Record using the URL of a Registration Record in the Registry Services. The Registration Record URL is highlighted in red.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Brr:registrationRecord=<[registration_record_url]>%7D&oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D&oslc.select=*

Search for reconciled Resource Records given a particular value

This query retrieves reconciled Resource Records that match a particular property value. In this example consider, the model attribute of a ComputerSystem:

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=[particular_attribute]=”[attribute_value]”&oslc.select=*

Output examples

http://localhost:9081/oslc/rr/collection?oslc.where=crtv:model="T60p"&oslc.select=*

The following example retrieves three reconciled Resource Records that contain the manufacturer attribute equals IBM (manufacturer="IBM").

http://localhost:9081/oslc/rr/collection?oslc.where=crtv:manufacturer="IBM"

Search for Registration Records given a particular value

This query retrieves Registration Records that match a particular property value. In this example, consider the model attribute of a ComputerSystem:

URL: http://[hostname]:[port]/oslc/rr/registration/collection?oslc.where=[particular_attribute]=”[attribute_value]”&oslc.select=*

Output example

http://localhost:9081/oslc/rr/registration/collection?oslc.where=crtv:m…"T60p"&oslc.select=*

The following example retrieves four Registration Records that contain the manufacturer attribute equals IBM (manufacturer="IBM").

http://localhost:9081/oslc/rr/registration/collection?oslc.where=crtv:m…"IBM"

Search for reconciled Resource Records given multiple values

This query retrieves reconciled Resource Records that match multiple property values. In this example, consider the model and vmid attributes of a ComputerSystem:

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=[particular_attribute1]=”[attribute_value1]” and [particular_attribute2]=”[attribute_value2]”&oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=crtv:model="T64P" and crtv:vmid="vmid-001-003"&oslc.select=*

Search for Provider Records given a particular domain

This query retrieves Provider Records that match a particular service domain value. The Service Provider implements the given domain.

URL: http://[hostname]:[port]/oslc/pr/collection?oslc.where=oslc:service%7Boslc:domain=[particular_domain]>%7D

Output examples

http://localhost:9081/oslc/pr/collection?oslc.where=oslc:service%7Boslc…%7D

The following example shows the entire Service Provider record:

http://localhost:9081/oslc/pr/collection?oslc.where=oslc:service%7Boslc…%7D&oslc.select=*

Search for Service Provider records given a particular resource type

This query retrieves the URLs of a Service Provider records with a queryCapability that supports a particular resource type.

URL: http://[hostname]:[port]/oslc/pr/collection?oslc.where=oslc:service%7Boslc:queryCapability%7Boslc:resourceType=<[particular_resource_type]>

Output examples

http://localhost:9081/oslc/pr/collection?oslc.where=oslc:service{oslc:queryCapability{oslc:resourceType=%3Chttp://open-services.net/ns/crtv%23ComputerSystem%3E}}

Search for reconciled Resource Records given a particular Provider Record

This query retrieves the reconciled Resource Records that have a Provider Record for a particular Service Provider. This query uses oslc.paging to also retrieve the total number of reconciled Resource Records.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Boslc:serviceProvider=<[particular_service_provider]>%7D&oslc.paging=true

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D&oslc.paging=true

Search for Registration Records given a particular Service Provider record

This query retrieves the Registration Records from a given Service Provider. This query uses oslc.paging to also retrieve the total number of Registration Records.

URL: http://[hostname]:[port]/oslc/rr/registration/collection?oslc.where=oslc:serviceProvider=<[particular_service_provider]>&oslc.paging=true

Output example

http://localhost:9081/oslc/rr/registration/collection?oslc.where=oslc:s…&oslc.paging=true

Note: If the totalCount of the two previous queries are not the same, then there are some Registration Records that do not satisfy the reconciliation criteria (for example, no complete identification rule), or multiple Registration Records for the same resource from the same Service Provider.

Search for Resource Record coverage mismatches between two Service Providers

This query retrieves reconciled Resource Records that have a Provider Record for one Service Provider, but not for another Service Provider. This scenario can happen because one of the Service Providers is not tracking some of the resources, or because the Registration Records from two Service Providers could not be reconciled for some reason. This query uses oslc.paging to also retrieve the total number of Registration Records.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Boslc:serviceProvider=<[provider1]>%7D and not rr:providerRecord%7Boslc:serviceProvider=<[provider2]>%7D&oslc.paging=true

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D and not rr:providerRecord%7Boslc:serviceProvider=%7D&oslc.paging=true

Search for reconciled Resource Records given TADDM GUID

This is a two-step process. It retrieves the reconciled Resource Records that match TADDM guid attribute. In this example, consider taddm prefixDefiniton equals to http://www.ibm.com/xmlns/prod/tivoli/taddm/.

Step 1

This query retrieves the Registration Records using TADDM guid attribute.

URL: http://[hostname]:[port]/oslc/rr/registration/collection?oslc.where=taddm:guid="[taddm_guid_value]"&oslc.prefix=taddm=%3C[taddm_oslc_prefix]%3E&oslc.select=*

Output example

http://localhost:9081/oslc/rr/registration/collection?oslc.where=taddm:…*

Step 2

This query retrieves the reconciled Resource Record given the Registration Record obtained in Step 1.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Brr:registrationRecord=<[registration_record_url]>%7D&oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D&oslc.select=*

Search for reconciled Resource Records given ITM MSN

This is a two-step process. It retrieves the reconciled Resource Records that match ITM managedSystemName attribute. In this example, consider ITM prefixDefinition equals to http://www.ibm.com/xmlns/prod/tivoli/itm/.

Step 1

This query retrieves the Registration Records using TADDM guid attribute.

URL: http://[hostname]:[port]/oslc/rr/registration/collection?oslc.where=itm:managedSystemName="[itm_msn_value]"&oslc.prefix=itm=%3C[itm_oslc_prefix]%3E&oslc.select=*

Output example

http://localhost:9081/oslc/rr/registration/collection?oslc.where=itm:ma…*

Step 2

This query retrieves the reconciled Resource Record given the Registration Record obtained in Step 1.

URL: http://[hostname]:[port]/oslc/rr/collection?oslc.where=rr:providerRecord%7Brr:registrationRecord=<[registration_record_url]>%7D&oslc.select=*

Output example

http://localhost:9081/oslc/rr/collection?oslc.where=rr:providerRecord%7…%7D&oslc.select=*

Jazz for Service Management References

You can find more information related to the reconciliation algorithm and other concepts used by Registry Services in the Jazz for Service Management InfoCenter web page and in the following links:


URL Encoding References


[{"Product":{"code":"SSRLR8","label":"Tivoli Components"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Jazz for Service Management","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"1.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
17 June 2018

UID

swg21632222