Skip to content

CMP-CMS Integration Architecture

intermediate

CMP and CMS serve different roles. CMP is where content teams plan, write, and approve content. CMS is where that content is structured, rendered, and delivered to visitors. Connecting these two systems requires more than a simple export β€” it requires a mapping layer that understands both content models and translates between them.

The integration architecture handles this translation. It ensures that content produced in CMP arrives in CMS with the right structure, in the right location, with assets properly transferred.

The CMP-CMS integration consists of three layers:

The connection layer establishes authenticated communication between CMP and CMS. It handles:

  • Authentication β€” OAuth-based service-to-service credentials that authorize CMP to create and update content in CMS
  • Endpoint discovery β€” CMP queries the CMS API to learn available content types, properties, and media capabilities
  • Health monitoring β€” Continuous checks that verify the CMS instance is reachable and the credentials remain valid

The connection is configured once by an administrator and shared across all users who publish from CMP.

The mapping layer defines how CMP content structures translate to CMS content types. This is the most configuration-intensive part of the integration.

CMP conceptCMS equivalentMapping requirement
Content type (e.g., β€œBlog Post”)Page type (e.g., BlogPage)One-to-one type mapping
Text fields (title, body, summary)String and XhtmlString propertiesField-level mapping with format conversion
Image referencesContentReference to media itemsAsset transfer and reference linking
Tags and categoriesCategory or tag propertiesTaxonomy alignment
Publish dateScheduled publish dateDate field mapping
Author informationAuthor property or metadataOptional mapping

Each content type pair requires its own mapping configuration. A β€œBlog Post” in CMP might map to BlogPage in CMS, while a β€œProduct Update” maps to NewsPage.

The transfer layer handles the actual movement of data when content is published:

  1. Content serialization β€” CMP packages the content item’s fields according to the configured mapping
  2. Asset upload β€” Referenced images and files are uploaded to the CMS media library if they do not already exist
  3. Content creation or update β€” CMP creates a new draft page in CMS, or updates an existing one if the content was previously published
  4. Reference resolution β€” Internal links between content items are resolved to CMS content references
  5. Status callback β€” CMS confirms receipt, and CMP updates the content item’s status

When a user triggers β€œPublish to CMS” on an approved content item, the following sequence executes:

  1. CMP validates that the content item has a valid type mapping for the target CMS
  2. CMP resolves the target location in the CMS content tree (specified by the user or defaulted from the mapping configuration)
  3. Assets referenced in the content are checked against the CMS media library β€” new assets are uploaded, existing ones are reused
  4. CMP constructs the CMS content payload using the field mapping, converting rich text formats, resolving asset references, and applying default values for unmapped required fields
  5. CMP calls the CMS content API to create a draft or update an existing page
  6. CMS returns the created content reference, which CMP stores for future update operations
  7. CMP transitions the content item’s status to reflect the published state

The integration works with both CMS platforms, but with different characteristics:

AspectCMS SaaSCMS PaaS
API surfaceContent Definitions API + Content Delivery APICustom API endpoints via add-on
AuthenticationOAuth 2.0 with Optimizely One identityAPI key or custom auth
Content type discoveryAutomatic via APIManual configuration or custom connector
Asset handlingDirect upload to cloud media storageUpload to configured blob storage
Bi-directional syncSupported (changes in CMS reflect back to CMP)One-way only (CMP to CMS)
Setup effortMinimal β€” built-in connectorModerate β€” requires connector installation

When content exists in both systems, conflicts can arise. The integration handles these scenarios:

  • CMP update to existing CMS page β€” CMP creates a new draft version in CMS, preserving the published version. Editors review the draft before publishing.
  • Concurrent edits β€” If someone edits the CMS page while CMP pushes an update, CMS creates a branch version. The editor resolves the conflict manually.
  • Deleted CMS content β€” If a CMS page is deleted after being linked to CMP, the next publish from CMP creates a new page rather than failing.
  • Schema drift β€” If the CMS content type changes (new required fields, removed properties), the mapping layer flags the mismatch during the next publish attempt.

The integration respects both systems’ permission models:

  • CMP users need the β€œPublish to CMS” permission in their CMP role to trigger publishing
  • The service account connecting CMP to CMS has scoped permissions in CMS β€” typically limited to content creation in specific areas of the content tree
  • Asset transfers use the CMS media permissions model β€” uploaded assets inherit the default permissions of the target media folder
  • Audit logs in both systems record who initiated the publish and what was transferred

Administrators can monitor integration health through:

  • Connection status β€” Dashboard indicator showing whether CMP can reach CMS
  • Publish log β€” Record of every publish operation with success/failure status and error details
  • Mapping validation β€” Periodic checks that flag content type mappings broken by CMS schema changes
  • Webhook notifications β€” Optional alerts for failed publish operations, sent to email or Slack