Open Document Management Architecture
Write content-centric applications once — run on any ECM system.
What is OpenDMA?
OpenDMA (Open Document Management Architecture) defines a vendor-neutral, strongly typed API for Document Management and ECM systems — the same idea as JDBC for databases or JPA for object persistence.
OpenDMA Adaptors connect the standard API to specific ECM systems — Alfresco, Documentum, FileNet P8, IBM CMOD, Nuxeo, OnBase, OpenText, SharePoint, and more. Switching systems requires only a configuration change.
A consistent API is available for Java, Python, and C# /.NET today. The API Builder can generate additional languages including Go, Rust, TypeScript, PHP, and Swift from the same specification.
The OpenDMA REST server exposes any adaptor as a RESTful service. A Python client on one machine can transparently access a Documentum repository served by a Java REST server on another.
The formal specification is organised in layers — each layer building on the one below. Implementors can choose the layers they need, from a minimal read-only adaptor to a fully featured ECM backend.
OpenDMA uses a reflective, object-oriented data model with a formal class hierarchy, qualified names, and well-defined scalar and reference data types including content streams.
The specification is published under the OWF Agreement 1.0 (Patent and Copyright Grants). Language APIs are Apache 2.0 licensed. Both are free to implement and use in any project.
Specification
The OpenDMA specification defines the abstract model, API contracts, and REST service interface in a single normative document.
The normative specification document and OpenAPI YAML are published on GitHub and versioned with semantic tags.
Ecosystem
Language APIs are auto-generated from a single source by the OpenDMA API Builder, ensuring a consistent style and feature set across all languages.
Greyed tiles can be generated on request via the API Builder.
Adaptors implement the OpenDMA API for a specific ECM system, like database drivers in JDBC. The XML Repository serves as a dependency-free reference implementation for development and testing.