Open Data Product Standard Details

Overview

This document describes how existing Data Product Specification (DPS) fields are mapped to the Open Data Product Standard (ODPS) specification format in Entropy Data. When migrating from DPS to ODPS or when working with both formats, understanding this mapping is crucial for maintaining data consistency and ensuring proper functionality.

Core Entity Mapping

Data Product Level Mapping

DPS FieldODPS FieldMapping TypeNotes
ididDirectUnique identifier preserved
info.titlenameDirectData product name
info.descriptiondescription.purposeDirectPrimary description content
info.ownerteam.nameDirectTeam external ID
info.domaindomainDirectDomain team name
info.statusstatusDirectLifecycle status
info.archetypecustomProperties[type]Custom PropertyStored as custom property
info.maturitycustomProperties[maturity]Custom PropertyStored as custom property
info.iconcustomProperties[icon]Custom PropertyUI icon reference
tagstagsDirectTag list preserved
linksauthoritativeDefinitionsTransformedLink name becomes type, href becomes url
customcustomPropertiesTransformedKey-value pairs converted to property objects
assetscustomProperties[assets]Custom PropertyAsset assignments stored as structured custom property

Extended ODPS Fields

ODPS introduces several fields not present in DPS that are stored as custom fields in the internal model:

ODPS FieldStorage LocationTypeDescription
versioncustomFields[version]Custom FieldProduct version separate from API version
tenantcustomFields[tenant]Custom FieldMulti-tenancy support
description.limitationscustomFields[description.limitations]Custom FieldUsage limitations
description.usagecustomFields[description.usage]Custom FieldUsage instructions
description.authoritativeDefinitionscustomFields[description.authoritativeDefinitions]Custom FieldSerialized JSON
description.customPropertiescustomFields[description.customProperties]Custom FieldSerialized JSON
managementPortscustomFields[managementPorts]Custom FieldSerialized JSON array
supportcustomFields[support]Custom FieldSerialized JSON array
productCreatedTscustomFields[productCreatedTs]Custom FieldProduct creation timestamp

apiVersion and kind are handled completely independent in the migration of a DPS to ODPS. kind is always set to DataProduct and apiVersion is always set to v1.0.0, as this is the current version of the ODPS specification.

Output Port Mapping

Direct Field Mapping

DPS FieldODPS FieldMapping TypeNotes
idnameDirectPort identifier
nameNone! Will be lost
descriptiondescriptionDirectPort description
typetypeDirectData type/format
versionversionDirectPort version
dataContractIdcontractIdDirectReference to data contract
tagstagsDirectPort-level tags
linksauthoritativeDefinitionsTransformedLinks converted to authoritative definitions

Note:
version is not a required field in ODPS, but is required in DPS. When migrating, make sure to populate this field with a value. name is treated as a unique identifier in ODPS, so it is recommended to use the same value as id in DPS. The value of the name field in DPS will be lost during migration.

Custom Property Mapping for Output Ports

Fields without direct ODPS equivalents are mapped to customProperties:

DPS FieldODPS LocationStorage TypeNotes
statuscustomProperties[status]Custom PropertyPort lifecycle status
environmentcustomProperties[environment]Custom PropertyDeployment environment
locationcustomProperties[location]Custom PropertyPhysical/logical location
autoApprovecustomProperties[autoApprove]Custom PropertyAutomatic approval flag
containsPiicustomProperties[containsPii]Custom PropertyPII indicator
servercustomProperties[server]Custom PropertyServer configuration as JSON object
custom.*customProperties[*]Custom PropertyUser-defined custom fields

ODPS-Specific Output Port Fields

ODPS FieldImplementationNotes
sbomNot yet implementedSoftware Bill of Materials
inputContractsNot yet implementedContract dependencies

Input Port Mapping

Core Field Mapping

DPS FieldODPS FieldMapping TypeNotes
idnameDirectPort identifier
namecustomProperties[displayName]Custom PropertyHuman-readable name
descriptioncustomProperties[description]Custom PropertyPort description
sourceSystemIdcustomProperties[sourceSystem]Custom PropertyReference to source system
typecustomProperties[type]Custom PropertyData type
locationcustomProperties[location]Custom PropertyData location
tagstagsDirectPort-level tags
linksauthoritativeDefinitionsTransformedLinks to authoritative definitions
custom.*customProperties[*]Custom PropertyCustom fields preserved

ODPS-Required Input Port Fields

ODPS FieldSourceNotes
versioncustomProperties[version]Required in ODPS, stored as custom property
contractIdcustomProperties[contractId]Contract reference for input expectations

Transformation Logic

DPS to ODPS Conversion

The conversion process follows these principles:

  1. Direct Mapping: Fields with direct equivalents are mapped 1:1
  2. Custom Properties: DPS custom fields become ODPS custom properties with structure:
{
  "property": "fieldName",
  "value": "fieldValue",
  "description": null
}
  1. Reserved Properties: Certain custom properties are reserved for system fields (see exclusion lists below)
  2. Link Transformation: DPS links are converted to ODPS authoritative definitions:
{
  "type": "linkName",
  "url": "linkHref",
  "description": null
}

Exclusion Filters

Data Product Level Exclusions

The following custom properties are handled specially and not included in the general custom properties list:

  • icon
  • assets
  • version
  • tenant
  • description.limitations
  • description.usage
  • description.authoritativeDefinitions
  • description.customProperties
  • managementPorts
  • support
  • productCreatedTs

Output Port Level Exclusions

These properties are mapped to specific OutputPort fields:

  • environment
  • location
  • autoApprove
  • containsPii
  • server
  • status
  • assets

Input Port Level Exclusions

These properties are mapped to specific SourceSystemInputPort fields:

  • sourceSystemInputPortId
  • sourceSystemId
  • displayName
  • description
  • type
  • location
  • version
  • contractId

Best Practices

For API Consumers

  1. Use appropriate endpoints based on desired format (?specification=odps vs default DPS)
  2. Handle custom properties when working with ODPS format
  3. Validate required fields are present when creating/updating
  4. Consider field limitations - some DPS fields may be lost in ODPS conversion if not in custom properties

For SDK Users

  1. Data Product parsing: Make sure to parse the correct format
  2. Test conversion with sample data to verify field preservation
  3. Update client applications to handle both formats if necessary
  4. Plan for custom property usage in ODPS format
  5. Consider feature flags to control specification type availability

Version Compatibility

  • DPS Version: 0.0.1 (default for existing data products)
  • ODPS Version: v1.0.0 (current implementation)
  • Backward Compatibility: Maintained through service layer abstraction
  • Forward Compatibility: New ODPS fields added as custom properties in DPS model

Note: This mapping is implementation-specific to Entropy Data and may differ from other ODPS implementations. Always refer to the actual service code for the most current mapping logic.