User Community Service Desk Downloads

Server Setup

The MDM Server is the core component of ONE MDM that powers master data management through its integrated MDM Engine, which handles data cleansing, validation, matching, and merging operations. The server includes comprehensive APIs, orchestration capabilities, and scheduling functions. For a more detailed overview of the MDM architecture, see Architecture.

The following article outlines the key differences between the MDM Server and ONE Runtime Server and points to resources for configuring the MDM Server.

MDM Server and ONE Runtime Server: what you need to know

In ONE MDM, the MDM Server hosts multiple components, primarily the MDM Engine. In addition to this, it acts as a Spring Boot wrapper for the embedded Runtime Server, which is used for additional orchestration and connectivity capabilities.

The start-mdm-server.bat script uses .serverConfig as a parameter:

call %MDM_SERVER_HOME%\bin\start.bat -config="%PROJECT_HOME%\etc\mdm.serverConfig" start

This integrated version of ONE Runtime Server allows you to configure additional components for the MDM Engine, such as:

  • Connections to data sources and other servers.

  • Path variables.

  • Workflow resources for workflows running in the MDM Server.

  • A number of server components, as listed in Server components used in MDM Server.

The embedded Runtime Server also includes a web application for server administration and monitoring, called Web App Admin Center.

When it comes to storage, the MDM Engine uses a dedicated MDM repository, while with the Runtime Server, you can configure project-specific data sources as needed.

Server components used in MDM Server

The following server components can be configured for the embedded Runtime Server when it is deployed as part of a self-managed ONE MDM solution. In cloud deployments, only some elements are available for configuration, as described in MDM Custom Ataccama Cloud Deployment and MDM Project Local Server Configuration Testing.

These components are declared in the .serverConfig file that is referenced by the MDM Server.

When the MDM Server starts, additional component are shown in the Admin Center.

To see an example of all supported settings and components, see the sample file:

Click here to expand
mdm.serverConfig example
<?xml version='1.0' encoding='UTF-8'?>
<server>
    <port>8059</port>
    <runtimeConfiguration>mdm.runtimeConfig</runtimeConfiguration>
    <serverComponents>

        <component class="com.ataccama.dqc.server.services.HealthStateProviders"
            pathVariableRefreshRate="60" dataSourceRefreshRate="60" />

        <component class="com.ataccama.dqc.web.console.WebConsoleComponent" />

        <component class="com.ataccama.dqc.web.health.HealthStateWebConsole" />

        <component class="com.ataccama.dqc.server.services.VersionedFileSystemComponent">
            <versionedFolders>
                <versionedFolder>../data/ext/lkp</versionedFolder>
            </versionedFolders>
        </component>

        <component class="com.ataccama.dqc.online.OnlineServicesComponent">
            <serviceLookupFolders>
                <configFolder>../services</configFolder>
            </serviceLookupFolders>
        </component>

        <component class="com.ataccama.adt.web.WorkflowServerComponent">
            <sources>
                <source>
                    <path>../workflows</path>
                    <id>WF1</id>
                </source>
            </sources>
            <resourcesFolder>../storage/resources/workflow</resourcesFolder>
            <stateStorageProvider
                class="com.ataccama.adt.runtime.state.storage.FileStateStorageProvider" />
        </component>

        <component
            class="com.ataccama.adt.scheduler.server.SchedulerServerComponent">
            <sources>
                <source>
                    <path>../schedulers</path>
                    <id>S1</id>
                </source>
            </sources>
            <resourcesFolder>../storage/resources/scheduler</resourcesFolder>
            <resultPersister
                class="com.ataccama.adt.scheduler.persister.FileStateResultPersister" />
        </component>

        <component class="com.ataccama.dqc.streaming.KafkaProviderComponent">
            <!-- <kafkaResources>
                <string>myKafkaResource</string>
            </kafkaResources> -->
        </component>
        <component class="com.ataccama.dqc.jms.JmsProviderComponent">
            <!--
            <connectionPoolSize>5</connectionPoolSize>
            <healthStateRefreshRate>60</healthStateRefreshRate>

            <filters>
                <jmsFilterBean>
                    <filter logRequestContents="true" logResponseContents="true" logFile="myRequestResponse.log" logRequestHeaders="true" maxResponseLogSize="128" appendLog="true" class="com.ataccama.dqc.jms.filters.JmsLoggingFilter" logResponseHeaders="true" maxRequestLogSize="128"/>
                    <mappings>
                        <filterMappingBean destination="myMessageQueue1" connection="myJmsConnection1"/>
                        <filterMappingBean destination="myMessageQueue2" connection="myJmsConnection2"/>
                    </mappings>
                </jmsFilterBean>
                <jmsFilterBean>
                    <filter level="INFO" name="myTimeLogger" class="com.ataccama.dqc.jms.filters.JmsResponseTimeLogger"/>
                    <mappings>
                        <filterMappingBean destination="*" connection="myJmsConnection2"/>
                    </mappings>
                </jmsFilterBean>
            </filters>
            <jmsResources>
                <resource>myJmsConnection1</resource>
                <resource>myJmsConnection2</resource>
                <resource>myJmsConnection3</resource>
            </jmsResources> -->
        </component>

    </serverComponents>
</server>

Was this page useful?