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:
versionis not a required field in ODPS, but is required in DPS. When migrating, make sure to populate this field with a value.nameis treated as a unique identifier in ODPS, so it is recommended to use the same value asidin 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:
iconassetsversiontenantdescription.limitationsdescription.usagedescription.authoritativeDefinitionsdescription.customPropertiesmanagementPortssupportproductCreatedTs
Output Port Level Exclusions
These properties are mapped to specific OutputPort fields:
environmentlocationautoApprovecontainsPiiserverstatusassets
Input Port Level Exclusions
These properties are mapped to specific SourceSystemInputPort fields:
sourceSystemInputPortIdsourceSystemIddisplayNamedescriptiontypelocationversioncontractId
Best Practices
For API Consumers
- Use appropriate endpoints based on desired format (
?specification=odpsvs 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.