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 Field | ODPS Field | Mapping Type | Notes |
---|---|---|---|
id | id | Direct | Unique identifier preserved |
info.title | name | Direct | Data product name |
info.description | description.purpose | Direct | Primary description content |
info.owner | team.name | Direct | Team external ID |
info.domain | domain | Direct | Domain team name |
info.status | status | Direct | Lifecycle status |
info.archetype | customProperties[type] | Custom Property | Stored as custom property |
info.maturity | customProperties[maturity] | Custom Property | Stored as custom property |
info.icon | customProperties[icon] | Custom Property | UI icon reference |
tags | tags | Direct | Tag list preserved |
links | authoritativeDefinitions | Transformed | Link name becomes type , href becomes url |
custom | customProperties | Transformed | Key-value pairs converted to property objects |
assets | customProperties[assets] | Custom Property | Asset 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 Field | Storage Location | Type | Description |
---|---|---|---|
version | customFields[version] | Custom Field | Product version separate from API version |
tenant | customFields[tenant] | Custom Field | Multi-tenancy support |
description.limitations | customFields[description.limitations] | Custom Field | Usage limitations |
description.usage | customFields[description.usage] | Custom Field | Usage instructions |
description.authoritativeDefinitions | customFields[description.authoritativeDefinitions] | Custom Field | Serialized JSON |
description.customProperties | customFields[description.customProperties] | Custom Field | Serialized JSON |
managementPorts | customFields[managementPorts] | Custom Field | Serialized JSON array |
support | customFields[support] | Custom Field | Serialized JSON array |
productCreatedTs | customFields[productCreatedTs] | Custom Field | Product 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 Field | ODPS Field | Mapping Type | Notes |
---|---|---|---|
id | name | Direct | Port identifier |
name | None | ! Will be lost | |
description | description | Direct | Port description |
type | type | Direct | Data type/format |
version | version | Direct | Port version |
dataContractId | contractId | Direct | Reference to data contract |
tags | tags | Direct | Port-level tags |
links | authoritativeDefinitions | Transformed | Links 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 asid
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 Field | ODPS Location | Storage Type | Notes |
---|---|---|---|
status | customProperties[status] | Custom Property | Port lifecycle status |
environment | customProperties[environment] | Custom Property | Deployment environment |
location | customProperties[location] | Custom Property | Physical/logical location |
autoApprove | customProperties[autoApprove] | Custom Property | Automatic approval flag |
containsPii | customProperties[containsPii] | Custom Property | PII indicator |
server | customProperties[server] | Custom Property | Server configuration as JSON object |
custom.* | customProperties[*] | Custom Property | User-defined custom fields |
ODPS-Specific Output Port Fields
ODPS Field | Implementation | Notes |
---|---|---|
sbom | Not yet implemented | Software Bill of Materials |
inputContracts | Not yet implemented | Contract dependencies |
Input Port Mapping
Core Field Mapping
DPS Field | ODPS Field | Mapping Type | Notes |
---|---|---|---|
id | name | Direct | Port identifier |
name | customProperties[displayName] | Custom Property | Human-readable name |
description | customProperties[description] | Custom Property | Port description |
sourceSystemId | customProperties[sourceSystem] | Custom Property | Reference to source system |
type | customProperties[type] | Custom Property | Data type |
location | customProperties[location] | Custom Property | Data location |
tags | tags | Direct | Port-level tags |
links | authoritativeDefinitions | Transformed | Links to authoritative definitions |
custom.* | customProperties[*] | Custom Property | Custom fields preserved |
ODPS-Required Input Port Fields
ODPS Field | Source | Notes |
---|---|---|
version | customProperties[version] | Required in ODPS, stored as custom property |
contractId | customProperties[contractId] | Contract reference for input expectations |
Transformation Logic
DPS to ODPS Conversion
The conversion process follows these principles:
- Direct Mapping: Fields with direct equivalents are mapped 1:1
- Custom Properties: DPS custom fields become ODPS custom properties with structure:
{
"property": "fieldName",
"value": "fieldValue",
"description": null
}
- Reserved Properties: Certain custom properties are reserved for system fields (see exclusion lists below)
- 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
- Use appropriate endpoints based on desired format (
?specification=odps
vs default DPS) - Handle custom properties when working with ODPS format
- Validate required fields are present when creating/updating
- Consider field limitations - some DPS fields may be lost in ODPS conversion if not in custom properties
For SDK Users
- Data Product parsing: Make sure to parse the correct format
- Test conversion with sample data to verify field preservation
- Update client applications to handle both formats if necessary
- Plan for custom property usage in ODPS format
- 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.