Extension: Smart Data Synchronizer

logo data sync

This extension synchronizes data from one Magento 2 system to another. It is installed on both systems: the source (where an editor triggers a sync) and the target (which receives the data over the Magento WebAPI and creates or updates the entity idempotently). Supported entity types: product, category, CMS page and CMS block.

Concepts

  • Sync Target – a configured remote Magento 2 system (base URL + credentials).

  • Sync Template – a reusable definition: entity type + fields + target(s) + options.

  • Sync Job – a log entry of every sync run, incl. per-target status and result.

All screens live in the admin menu under CLEVER+ZOEGER › Smart Data Synchronizer.

Backend: Configuration

Stores › Settings › Configuration › CLEVER+ZOEGER › Smart Data Synchronizer > Configuration.

Data Sync Configuration
  • Enabled – Enable or Disable this module

  • Create Missing Attributes on Target If "Yes", missing attributes and attributesets will be created at the target system.

  • Request Timeout – Request timeout in seconds, for connecting the target system.

  • Max Image Size – Media filesize limit (base64 encoded) to filetransfers.

  • Log Level – Logfile will be written into var/log/cleverzoeger_datasync.log.

Synchronizing Targets

Stores › Settings › Configuration › CLEVER+ZOEGER › Smart Data Synchronizer › Targets. A target is a remote Magento system this store can send to.

Targets grid
  • Add New Target Create a new target system configuration

  • Edit Modify an existing target system configuration

  • Test Connection Testing an existing target system connection

Synchronizing Targets Edit

Target form
  • Name Display name, only for your own better understanding.

  • Base URL Remote Magento base URL, e.g. https://shop.example.com/.

  • Auth Type Integration Access Token (static token) or Admin Token (User/Password) (a bearer token is fetched at runtime and cached).

  • Access Token / Admin User / Admin Password Access credentials, they are stored encrypted and will be displayed masked (****).

  • Timeout Connection timeout only for this Target override default values. Keep it empty to use default values).

  • Active Activate this Target Connection for synchronization. Only active targets receiving data.

  • Disable TLS Verification For local or development targets with self-signed certificates. Don’t enable this for production environment.

Synchronizing Targets Test Connection

The Test Connection button (at grid row action and inside the edit target form) pings the target and reports the result.

Test connection success message

Synchronizing Templates

Stores › Settings › Configuration › CLEVER+ZOEGER › Smart Data Synchronizer › Templates. A template defines what is synced and where to.

Templates grid
  • Add New Template Create a new synchronizing Template

  • Edit Modify an existing synchronizing Template

Synchronizing Templates Edit

The following Edit Forms will be visible by switching the Entity Type inside the edit form.

Template form
  • Name Display name, only for your own better understanding.

  • Entity Type Defines, which Entity should be sychronized and how (Product, Category, CMS Page or CMS Block).

  • Targets One or more targets systems which should syncs with that template configuration.

  • Fields / Attributes A multiselect picker of the fields and attributes to transfer. If nothing will be selected, default values will be synchronized. Identity and structural keys (SKU, identifier, url_key, parent references, media assets) are always transferred regardless of the selection. This list is filtered depending by the selected Entity Type above. For each Type do you ned a separate Template.

    • Product Template offers all product attributes

    • Category Template contains all Category fields

    • CMS Page Template contains all CMS Page fields

    • CMS Block Template contains all CMS Block fields

  • Active Only active templates are offered when running a sync.

  • Create Missing Attributes on Target Create attributes and options on the target if they are not already existing.

  • Include Media (base64) Synchronize the product gallery images embedded as base64.

  • Transfer Page Builder References (CMS blocks) Synchronize CMS blocks referenced in Page Builder content and remap their IDs on the target.

Data Synchronizer Button

A Data Sync button is available in the toolbar of every supported entity’s edit page. It opens the same modal, lists the active templates for that entity type, and runs the sync.

Data Sync button on a product
Figure 1. Product edit
Data Sync button on a category
Figure 2. Category edit
Data Sync button on a CMS page
Figure 3. CMS page edit
Data Sync button on a CMS block
Figure 4. CMS block edit

Running a data synchronization

Clicking the Data sync button opens a pop-up window for the actual synchronization.

Data Sync modal with template selection
  • This example shows the product synchronization

  • You can select a different Synchronize Template, if you want.

  • Run Sync starts the synchronization process.

Data Sync result with per-target status
  • After synchronizing you will see a log with depending informations.

  • Close Button closes the popup window

Example: Page Builder page with images

This walkthrough shows, how a Page Builder CMS page — containing an image and a referenced CMS block will be synchronized to a target.

Source System

Page Builder page with an image and a CMS block
  • Source page. The page is built with Page Builder and contains an image plus a CMS block widget

  • Push Data Sync Button

Page Builder page sync result
  • Press Run Sync, to start the synchronization. The job completes with a status message.

What will be synchronized to the targetsystem automatically?

  • Images referenced in the content ({{media url="…"}} directives and absolute …​/media/… <img> sources) are read and embedded as base64 in the payload, then written to the same media path on the target. Absolute URLs are normalized to host-independent {{media url="…"}} directives.

  • Referenced CMS blocks ({{widget … block_id="X"}}) are transferred first (idempotently, by identifier). The numeric block_id in the content is then remapped to the block’s local ID on the target, so the widget keeps working.

  • The processed content (with restored media and remapped block IDs) is saved to the target page.

The media size guard (Media configuration) skips oversized images with a warning. Nested block-in-block references are transferred one level deep in the current version.

Target System

The sync was verified between two separate Magento installations (source → target). Starting from an empty target, syncing the Page Builder page created it there — together with its image and the referenced CMS block — and the widget block_id was remapped to the target’s local block ID. The page renders on the target storefront:

Synced Page Builder page on the target storefront

What crossed the wire (source → target): the product (created by SKU), the CMS page, the referenced CMS block (created by identifier), the image (base64 → restored under the same media path), and the identity map entries. IDs that differ between systems (e.g. the block’s numeric ID) are remapped automatically.

Jobs / Log

Data Sync › Jobs / Log shows every run (read-only): entity type, source entity, status and timestamps. Details are also written to var/log/cleverzoeger_datasync.log.

Jobs / Log grid

WebAPI (receiving side)

The target exposes two ACL-protected REST endpoints (used by the source):

  • GET /rest/V1/cz-datasync/ping – health check (returns status + schema version).

  • POST /rest/V1/cz-datasync/import – receive and import an entity payload.

Both require a bearer token and the ACL resource CleverZoeger_DataSync::sync.