MDM Partition

An MDM Partition is a Data Partition connected to the MDM module. This type of partition is useful when you want to access data unified under the MDM and customize the representation of such data for specific use cases.

Configuring a partition

To configure a partition, you minimally need to define its:

  1. key: The unique key for the partition.
  2. modules: The attached modules for the partition. Only the Standard Search module is available for MDM Partitions.
  3. source: The source of the data.
    1. type: Type of the partition. (MDM for a Source Partition)
    2. sources: The list of unique keys for the targeted sources. This ensures you only index data coming from these sources in your partition.
    3. collections: The list of collection connections describing the unified collections you want to index to your data partition and their data mappings.
    4. relationships: The list of relationship connections describing the unified relationship definitions you want to index to your data partition and their data mappings.
{
    "key": "<partitionKey>",
    "modules": {
        "search": "STANDARD"
    },
    "source": {
        "type": "MDM",
        "sources": ["<dataSourceKey1>", "<dataSourceKey2>"],
        "collections": [
					<collectionConnection>
        ],
	      "relationships": [
          <relationshipConnection>
        ]
    }
}

Using Collection Connections

A Collection Connection is used for three things:

  1. Indicate from which unified collection the partition records' identities will be taken.
  2. Define the shape of the resulting partition record for this collection using property definitions.
  3. Map source profile properties to the properties defined in 1. to unify data from multiple sources.

📘

Property Mappings

The property mappings object is structured as a key/value pair where:

key: The path to the property defined in the properties section of the connection

value: The path to the targeted source profile property.

Given the Unified Collection created in the ..., here is an example of a collection connection including multiple source mappings:

{
  "key": "unified-organization",
  "properties": {
    "name": {
      "type": "symbol"
    },
    "phone": {
      "type": "contactpoint"
    },
    "email": {
      "type": "contactpoint"
    },
    "address": {
      "type": "address"
    }
  },
  "mappings": [
    {
      "source": "source-1",
      "type": "clinic",
      "propertyMappings": {
        "name": "name",
        "address": "address",
        "phone": "phone"
      }
    },
    {
      "source": "source-2",
      "type": "organization",
      "propertyMappings": {
        "name": "name",
        "address": "address",
        "phone": "phone",
        "email": "email"
      }
    },
    {
      "source": "source-3",
      "type": "doctor-office",
      "propertyMappings": {
        "name": "name",
        "address": "address",
        "email": "email"
      }
    }
  ]
}

Using Relationship Connections

A Relationship Connection is used for four things:

  1. Indicate for which unified relationship definitions the relationship identities will be taken.
  2. Define the unified from and to profile and include keys for this relationship definition.
  3. Define the shape of the resulting partition relationship using property definitions.
  4. Map source relationship definition properties to the properties defined in 1. to unify data from multiple sources.

Given the Unified Relationship Definition created in the ..., here is an example of a relationship connection including multiple source mappings:

{
  "relationshipType": "provider-office",
  "from": {
    "profileKey": "unified-organization",
    "includeKey": "staff"
  },
  "to": {
    "profileKey": "unified-provider",
    "includeKey": "worksAt"
  },
  "properties": {
    "effective": {
      "type": "period"
    },
    "phone": {
      "type": "contactpoint"
    }
  },
  "mappings": [
    {
      "source": "source-1",
      "type": "provider-clinic",
      "propertyMappings": {
        "effective": "effectiveDate",
        "phone": "phoneNumber"
      }
    },
    {
      "source": "source-2",
      "type": "provider-organization",
      "propertyMappings": {
        "effective": "effective",
        "phone": "phone"
      }
    },
    {
      "source": "source-3",
      "type": "provider-office",
      "propertyMappings": {
        "effective": "effective",
        "phone": "phone"
      }
    }
  ]
}