User Community Service Desk Downloads
If you can't find the product or version you're looking for, visit support.ataccama.com/downloads

Native Services

Native services are services provided by the service engine as a layer for accessing data persisted in MDM.

These services can be called directly or through an integration component such as ESB. The actual service names and parameters are derived directly from the data model.

In this version, native services available on HttpEndpoint in both SOAP and XML formats are not secured by default and additional configuration must be used. This also applies to SOAP services configured as part of the MDM solution in the so-called Online Services.

Which endpoints are affected depends on how your solution is implemented.For example, this can include the following endpoints:

  • MDM Native Services: /soapOverHttp, /xmlRcpOverHttp

  • Online Services: /soapServices

To mitigate the issue, we recommend upgrading to 13.8.0. In case this is not a viable option, we recommend assessing the risk and reviewing and updating the MDM solution configuration, as described in the following sections.

Ataccama PaaS environments are not affected by this issue.

MDM Native Services

Depending on whether you are using native services, proceed with one of the following options.

  1. The MDM solution does not use native services. In this case, you need to disable the affected endpoints in one of the following ways:

    1. Disable services on HTTP server level (that is, for all used server ports). Follow the instructions provided in HTTP Server Configuration and list the endpoints in the ataccama.server.http.default.path.exclude property. For example: ataccama.server.http.default.path.exclude=/soapOverHttp/,/xmlRpcOverHttp/.

    2. (Recommended) Disable native services in MDM configuration. Follow the instructions provided in Configuring Native Services to access Endpoints Definition. Make sure to clear all services and endpoints.

  2. The MDM solution uses native services. You need to configure nme-security.xml and reference it in the nme-config.xml configuration file.

    1. Edit the nme-security.xml file so that access is authorized to all exposed endpoints. For more information, see [configuration:security-and-audit], section Authorization.

      If you are reusing the nme-security.xml file from the MDM example project, exclude the line UmcRoleValidator.
    2. Verify that the nme-config.xml configuration file references the nme-security.xml file. For more information, see MDM Engine Configuration File.

ONE Runtime Server Online Services

The issue occurs only when the soapServices endpoint name is used. To remediate the problem, rename the endpoint to any other value (*.online file).

For history native services, see History Plugin.

Native services configuration file

Services are configured in the model project and are generated into the nme-services.gen.xml file. It contains two main elements:

  • Services: Defines which services are available.

  • Endpoints: Defines what interfaces can be used to call them.

    Currently, services are exposed as SOAP over HTTP, XML-RPC calls, SOAP over JMS, and XML over JMS. WSDLs are pre-generated for SOAP services.

nme-services.gen.xml
<serviceConfig>
  <services>
    <service class="com.ataccama.nme.internal.engine.services.handlers.GetInstanceByIdServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.GetMasterByIdServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.TraverseMasterServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.GenericTraversalMasterService" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.ListInstancesServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.ListMastersServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.IdentifyMasterService" entity="party_mas" masterLayer="gen" name="identifyPartyGen" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.ProcessDeltaService" />
		<!-- SoR model services -->
    <service class="com.ataccama.nme.internal.engine.services.handlers.GetRecordByIdServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.ListRecordsServiceBundle" />
    <service class="com.ataccama.nme.internal.engine.services.handlers.ProcessUpsertService" entity="party"/>
  </services>
  <endpoints>
    <endpoint class="com.ataccama.nme.internal.engine.services.endpoints.HttpEndpoint" pathPrefix="/soapOverHttp/*" listenerNames="nmeNative">
    <format class="com.ataccama.nme.internal.engine.services.endpoints.SoapFormat" />
  </endpoint>
  <endpoint class="com.ataccama.nme.internal.engine.services.endpoints.JmsEndpoint" pathPrefix="/xmlRpcOverJms/*">
    <format class="com.ataccama.nme.internal.engine.services.endpoints.XmlRpcFormat" />
    <connectionName>ActiveMQ</connectionName>
    <inputDestination>MQ_in</inputDestination>
    <outputDestination>MQ_out</outputDestination>
  </endpoint>
  </endpoints>
</serviceConfig>

This configuration shows all available data-related native services (special control services are described in the following chapters). Services are available through defined endpoints at http://localhost:8051/pathPrefix. The endpoint can be referring to ports defined in the MDM Server application.properties using listenerNames attribute (this feature is deprecated, the services are available on all ports by default).

A list of services provided is accessible via the admin console (MD Interfaces > Services) or direct link: localhost:8051/console/nmeInterfaces/services. In case of SOAP services, the list of available services is available at localhost:8051/soap/. WSDL per each shown service is also available.

Endpoints

Native services are available at configured endpoints in configured formats. MDM supports the following endpoints and formats:

  • HttpEndpoint - Standard HTTP protocol.

  • JmsEndPoint - Java Messaging Services.

  • SoapFormat - Standard SOAP 1.1 format.

  • XmlRpcFormat - Plain XML.

HttpEndpoint

HttpEndpoint allows to call native services via the standard HTTP protocol. The following configuration creates HttpEndpoint attached to listener nmeNative providing services on http://<serverAddress>:<listenerPort>/soapOverHttp:

<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.HttpEndpoint" pathPrefix="/soapOverHttp/*" listenerNames="nmeNative">
  <format class="com.ataccama.nme.internal.engine.services.endpoints.SoapFormat" />
</endpoint>
  • listenerNames (optional): Comma-separated list of listener names where native services are available, default value is "all" listeners.

  • pathPrefix: Prefix of the URL where native services are available.

Keep in mind that the Listener Names list is deprecated and will be removed. Services are available on all server ports as defined in application properties.

The Endpoint Path Prefix configuration will be discontinued in the future and replaced with hardcoded values of /api/soap and /api/xml respectively.

If format is SOAP, the services' WSDL are available at http://<serverAddress>:<listenerPort>/soapOverHttp.

JmsEndpoint

JmsEndpoint allows accessing native services via JMS. It requires JMS Provider Component. Following configuration creates JmsEndpoint connected to JMS server defined in ActiveMQ connection (configuration is in JmsProviderComponent), endpoint reads requests from destination MQ_in and sends responses to destination MQ_out:

<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.JmsEndpoint" pathPrefix="/xmlRpcOverJms/*">
  <format class="com.ataccama.nme.internal.engine.services.endpoints.XmlRpcFormat" serviceNameHeader="SOAPJMS_soapAction" />
  <connectionName>ActiveMQ</connectionName>
  <activityByReadWriteMode>true</activityByReadWriteMode>
  <inputDestination>MQ_in</inputDestination>
  <outputDestination>MQ_out</outputDestination>
  <outputParameters>
    <outputParameter name="stringParamName" value="stringValue" type="STRING"/>
    <outputParameter name="intParamName" value="123" type="INT"/>
    <outputParameter name="longParamName" value="10010101001012" type="LONG"/>
    <outputParameter name="booleanParamName" value="false" type="BOOLEAN"/>
  </outputParameters>
</endpoint>
  • connectionName - name of connection is defined in JmsProviderComponent in the server configuration file.

  • activityByReadWriteMode - (boolean, default: false) if set to true, allows to control endpoint activity when MDM is switching between RO/RW modes:

    • if the engine is switched to the RO mode, the endpoint is stopped.

    • if the engine is switched to the RW mode, the endpoint is started.

  • inputDestination - destination from which endpoint is reading requests.

  • outputDestination - destination to which endpoint is sending responses.

  • outputParameters - allows to add some additional information into JMS properties (that is, header).

Optional attributes pathPrefix and listenerNames have same meaning as for HttpEndpoint but are used only for SoapFormat to configure location where WSDL is available.

For XmlRpcFormat under JmsEndpoint, serviceNameHeader is used to define what header contains name of service, default is SOAPJMS_soapAction.

Services

This section describes all services that can be used with MDM. The examples given are for XmlRpcFormat. For SoapFormat, you can get WSDL in the MDM Web App Admin Center (see ROOT:mdm-web-app-admin-center.adoc) or you can simply change examples this way (the example is for getExampleInstanceById):

XmlRpc example
<request>
  <id>1</id>
</request>

to

SOAP example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://www.ataccama.com/ws/nme/getExampleInstanceById">
   <soapenv:Header/>
   <soapenv:Body>
      <get:getExampleInstanceById>
         <get:id>1</get:id>
      </get:getExampleInstanceById>
   </soapenv:Body>
</soapenv:Envelope>
For the following sections, we use a placeholder instance entity Example, a placeholder master entity Example, and a placeholder Master View Mv to illustrate the functionality of services.

Was this page useful?