Configuration Migration Integration Point

Some Oracle Health Insurance applications have the ability for users to select configuration rules, package and extract these rules into a data file set and import them into another environment.

This ability supports an incremental migration strategy, that is, one rule at a time, for bringing in new configuration rules all the way from a development environment to the production environment.

This page describes the integration point that enables such selective configuration migration strategy.

Creating a Migration Set

A PUT call creates a new migration set.

The URL is different per component, as it includes the component specific data set definition code. The following data set definition codes are available:

  • CLAIMS_CONFIGURATION

  • POLICIES_CONFIGURATION

  • AUTHORIZATIONS_CONFIGURATION

  • GATEWAY_CONFIGURATION

The URL for the Oracle Insurance Gateway looks like this:

http://[hostName]:[portNumber]/[api-context-root]/dataexchange/datasetdefinition/GATEWAY_CONFIGURATION/dataset

The payload structure for creating the data set is as follows:

{
  "code":"<migration set code>",
  "description":"<description of the migration set code>",
  "configMigrationItems" : [{
    "tableId": <tableId>,
    "recordId" : <recordId>
  },....
  ],
  "excludeOptions": [{
    "tableTopId": <tableTopId>,
    "tableDependentId" : <tableDependentId>
    },...
  ],
  "globalIncludeOptions": [{
    "tableId" : <tableId>
   }, ...
  ]
}

Each item represents a single top level configuration item or rule that is included in the migration set.

When the migration set builds, the application includes all listed items in the payload. By default this also includes all building block configuration upon which the selected item depends.

To avoid the application from including (some of) these underlying configuration items, specify excludeOptions.

Each excludeOption represents an instruction to the application to omit a part of the underlying configuration, when building the migration set.

The request creates a data set with the requested items and returns HTTP Response Code 201 along with the created dataset in the location header.

There are a few global includes possible, like Agents, Brokers and Providers for Policies. If any data gets migrated and has a reference to the selected global option, then that also gets included in the set. Otherwise, these are excluded by default.

Authorization

The access restriction 'datasetoperation create IP' protects this operation.

Building and Exporting a Migration Set

The creation and build for a selective migration set gets initiated with a POST call with the following URL

http://[hostName]:[portNumber]/[api-context-root]/dataexchange/createandexport/datasetdefinition/{dataSetDefinitionCode}/dataset

For the specified definitions a migration set for selective migration creates and builds an outbound file for migration. If the migration set with the specified set code exists, then the system returns an error.

When the migration set builds, the application includes all listed items in the payload. By default this also includes all building block configuration upon which the selected item depends.

The request starts a background process that gathers all requested items, creates a set and then converts it into a payload structure. The build process is similar to the build payload IP. For details on response refer to "Build Payload IP" in the Data Set Operations Integration Point document in the Developer Guide. The payload exports on the source environment.

Import requests, enables the import of the payload on the target environment as described in the "Data Set Operations Integration Point" chapter of the Developer Guide.

The build payload request (described in the Data Set Operations Integration Point) can be used to re-build the payload file if needed by providing the set code created by this process.

The payload structure for creating the data set and building is as follows:

{
"code":"<migration set code>",
"description":"<description of the migration set code>",
"inclusionDate" : "2000-12-31",
"exactVersionMatch" : true,
"disableDeleteByOmission" : true,
"items" : [{
"tableId": <tableId>,
"recordId" : <recordId>
},....
],
"excludeOptions": [{
"tableTopId": <tableTopId>,
"tableDependentId" : <tableDependentId>
},...
],
"globalIncludeOptions": [{
"tableId" : <tableId>
}, ...
]
}
<inclusionDate> is optional, if present, then only those items from the set are included that are created or updated since the inclusionDate. This helps in keeping the size of the set in check.

Authorization

The access restriction 'datasetoperation createandexport API' protects this operation.

Error Messages

The response returns the below error messages:

Table 1. Error Messages
Code Sev Message

GEN-MIGR-008

Fatal

It is not possible to start a new build while another build or import is in progress

GEN-MIGR-010

Fatal

It is not possible to start a build with empty data set

Examples

The following payload example creates a migration set that includes all group clients without dynamic logic:

[source,text

{
  "code":"SampleTest",
  "description":"SampleTest",
  "exactVersionMatch" : true,
  "disableDeleteByOmission" : true,
  "items" : [{
    "tableId": 18039405, // id of POL_GROUP_CLIENTS
   }
  ],
  "excludeOptions": [{
    "tableTopId": 18039405,
    "tableDependentId" : 2220
   }
  ]

PATCH

It is also possible to update the configuration migration items with a PATCH operation.

The update for selective migration set gets initiated with a PATCH call with the following URL:\

http://[hostName]:[portNumber]/[api-context-root]/dataexchange/createandexport/datasetdefinition/dataset/<id>

The following payload example updates a migration set:

{
  "configMigrationItems" : [{
    "tableId": 647005,
    "recordId" : 4002
  },
  {
    "tableId": 647006,
    "op": "remove"
  },
  {
    "tableId": 647005,
	"recordId" : <recordId>,
    "op": "add"
  },
  {
  "tableID" : <tableId>
  }
  ],
  "excludeOptions": [{
    "tableTopId": 647005,
    "tableDependentId" : 2220
    },
	{
    "tableTopId": 647005,
    "tableDependentId" : 2220,
	"op" : "remove"
    }
  ],
  "globalIncludeOptions": [{
    "tableId" : 542005
   },
  {
    "tableId" : 542006,
    "op": "remove"
   }
  ]
}