plugins/aem/6.5-lts/skills/aem-replication/configure-replication-agent/SKILL.md
Configure AEM 6.5 LTS replication agents for content publishing, dispatcher cache flushing, and reverse replication
npx skillsauth add adobe/skills configure-replication-agentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through configuring replication agents in Adobe Experience Manager 6.5 LTS. Replication agents are the core mechanism for distributing content from Author to Publish environments, managing Dispatcher cache, and handling user-generated content flows.
Use this skill when you need to:
AEM supports several replication agent types for different purposes:
| Agent Type | Purpose | Location | Serialization Type | |------------|---------|----------|-------------------| | Default Agent | Publishes content from Author to Publish | Author | Default | | Dispatcher Flush | Invalidates Dispatcher cache | Publish | Dispatcher Flush | | Reverse Replication | Returns user input from Publish to Author | Author (polling) + Publish (outbox) | Default | | Static Agent | Stores static node representation to filesystem | Author/Publish | Static Content Builder |
Classic UI:
http://localhost:4502/etc/replication/agents.author.htmlTouch UI:
For new agent:
publish_instance_1, dispatcher_flush)For existing agent:
Essential settings to configure:
Field: Enabled
Value: ✓ (checked)
Purpose: Activates the replication agent
Field: Serialization Type
Values:
- Default (standard content replication)
- Dispatcher Flush (cache invalidation only)
- Static Content Builder (filesystem storage)
Purpose: Determines how content is packaged
Field: Retry Delay (ms)
Value: 60000 (default)
Purpose: Time between retry attempts on failure
Field: Agent User Id
Value: replication-service (create dedicated user)
Purpose: Service account with minimal required permissions
WARNING: Never use 'admin' account in production
Field: Log Level
Values: Error | Info | Debug
Purpose: Controls logging verbosity for troubleshooting
Security Best Practice: Create a dedicated replication service account:
replication-serviceConfigure connection details to target instance:
Field: URI
Format: http[s]://<hostname>:<port>/bin/receive?sling:authRequestLogin=1
Examples:
- http://localhost:4503/bin/receive?sling:authRequestLogin=1
- https://publish1.example.com:4503/bin/receive?sling:authRequestLogin=1
Field: User
Value: admin (or dedicated replication receiver account)
Purpose: Authentication to Publish instance
Field: Password
Value: [secure password]
Purpose: Authentication credentials
Field: OAuth Settings
Value: Leave empty unless using OAuth
Purpose: Alternative authentication mechanism
Field: NTLM Domain/Host/User/Password
Value: Configure if using Windows NTLM authentication
Purpose: Domain-based authentication
Field: SSL
Options:
- Relaxed SSL: Allow self-signed certificates (development only)
- Allow expired: Accept expired certificates (not recommended)
Purpose: SSL/TLS configuration
Connection String Examples:
| Scenario | URI Pattern |
|----------|-------------|
| Local Publish | http://localhost:4503/bin/receive?sling:authRequestLogin=1 |
| Remote Publish | https://publish.example.com:4503/bin/receive?sling:authRequestLogin=1 |
| Multiple Instances | Create separate agents for each: port 4503, 4504, 4505, etc. |
Only configure if network routing requires proxy:
Field: Proxy Host
Value: proxy.corporate.com
Field: Proxy Port
Value: 8080
Field: Proxy User/Password
Value: [proxy credentials if required]
Advanced HTTP settings:
Field: HTTP Method
Values: GET (default) | POST
Purpose: HTTP verb for replication requests
Field: HTTP Headers
Default headers:
CQ-Action:{action}
CQ-Handle:{path}
CQ-Path:{path}
Purpose: Custom headers for replication requests
Field: Connection Timeout (ms)
Value: 10000 (default)
Purpose: Maximum time to establish connection
Field: Socket Timeout (ms)
Value: 10000 (default)
Purpose: Maximum time waiting for data
Field: Protocol Version
Values: HTTP/1.0 | HTTP/1.1
Default: HTTP/1.0
Purpose: HTTP protocol version
Control when the agent activates:
Option: Ignore default
Effect: Excludes agent from default replication
Use case: Custom workflows only
Option: On Modification
Effect: Auto-activates on page changes
Use case: Automatic publishing workflows
Option: On Distribute
Effect: Triggers on distribution events
Use case: Package replication
Option: On Receive
Effect: Chains replication from incoming events
Use case: Multi-tier replication
Option: No Status Update
Effect: Doesn't update replication status
Use case: Read-only monitoring agents
Option: No Versioning
Effect: Skips version creation
Use case: Performance optimization
Before enabling:
Common test failures:
| Error | Cause | Solution | |-------|-------|----------| | Connection refused | Publish instance not running | Start Publish instance | | 401 Unauthorized | Invalid credentials | Verify user/password | | Timeout | Network/firewall issue | Check connectivity, adjust timeouts | | SSL handshake failed | Certificate issue | Configure SSL settings or update certificates |
Purpose: Publishes content from Author to Publish environment
Configuration specifics:
http://publish-host:4503/bin/receive?sling:authRequestLogin=1/etc/replication/agents.author)Multiple Publish Instances: Create one agent per Publish instance:
publish_instance_1 → http://publish1:4503/bin/receivepublish_instance_2 → http://publish2:4504/bin/receivepublish_instance_3 → http://publish3:4505/bin/receivePurpose: Invalidates Dispatcher cache when content is published
Configuration specifics:
http://dispatcher-host:80/dispatcher/invalidate.cache/etc/replication/agents.publish)Important settings:
Settings Tab:
- Serialization Type: Dispatcher Flush
- Enabled: ✓
Transport Tab:
- URI: http://dispatcher:80/dispatcher/invalidate.cache
- (Authentication may not be required)
Extended Tab:
- HTTP Headers: Add custom headers if Dispatcher requires them
Dispatcher configuration requirements:
Ensure Dispatcher dispatcher.any has:
/allowedClients {
/0 { /type "allow" /glob "*publish-instance-ip*" }
}
Purpose: Collects user-generated content from Publish and sends to Author
Requires TWO components:
1. Outbox Agent on Publish (passive collection point)
/etc/replication/agents.publish/outbox2. Reverse Replication Agent on Author (active polling)
/etc/replication/agents.author/reverse_replicationhttp://publish-host:4503/bin/receive?sling:authRequestLogin=1Configuration steps:
On Publish instance:
/etc/replication/agents.publishOn Author instance:
http://publish:4503/bin/receiveContent requirements for reverse replication:
Only cq:Page nodes are supported out-of-the-box. For other node types, custom implementation required.
To trigger reverse replication, add properties:
cq:distribute (Boolean) = truecq:lastModified (Date)cq:lastModifiedBy (String)| Status | Indicator | Meaning | Action | |--------|-----------|---------|--------| | Idle | Green | Queue empty, ready | Normal operation | | Active | Green | Processing queue | Normal operation | | Blocked | Red | Queue blocked by failed item | Investigate failure, clear queue | | Disabled | Gray | Agent not enabled | Enable if needed |
Navigate to JMX Console: http://localhost:4502/system/console/jmx
Search for: com.day.cq.replication:type=Agent
Monitor:
Create test page on Author:
/content/testActivate the page:
Check replication status:
Verify on Publish:
http://publish:4503/content/test/page-name.htmlCheck agent queue:
After content activation:
Test cache flush:
Issue: Replication queue blocked
Issue: Connection refused
http://publish:4503/system/consoletelnet publish-host 4503Issue: 401 Unauthorized
curl -u user:password http://publish:4503/bin/receiveIssue: SSL handshake failure
Issue: Dispatcher not flushing cache
/allowedClients configurationcurl -X POST http://dispatcher/dispatcher/invalidate.cacheIssue: User data not synchronizing
Never use admin account for replication
replication-service userUse HTTPS for production
Implement Mutual SSL (MSSL) for enhanced security
Restrict agent configuration access
/etc/replication nodeMonitor and log replication activity
Network security
replicate-content: Activate and deactivate content using configured agentstroubleshoot-replication: Diagnose and fix replication issuestools
Use the run-workflow MCP to discover, compose, execute, publish, and save Adobe Firefly workflows. TRIGGER when: user asks what actions are available, what the MCP can do, how to process images/video/3D via workflow, wants to build/run/save/publish a workflow, OR pastes any workflow/batch/execution ID. BARE ID (UUID/workflowId/batchId) = INSPECT ONLY — call inspect_run, NEVER run_workflow_submit. ALWAYS call list_actions first for capability/discovery questions. DO NOT TRIGGER for direct Firefly API calls without MCP (use firefly-api-specs).
tools
Run predefined featured workflows via run-workflow MCP. TRIGGER when user names a featured workflow (retargeting, banners at scale, localization, packaging, banner advertising, etc.) or asks to run a known marketing/production workflow. Requires run-workflow MCP. ALWAYS call get_featured_workflow before compose_workflow. DO NOT TRIGGER for custom one-off workflows with no named template — use run-workflow skill.
tools
Migrate an Adobe Commerce App Builder project from the Integration Starter Kit or Checkout Starter Kit to the new App Management approach. Run from the root of the App Builder project to be migrated. Pass --auto to skip confirmation prompts (suitable for CI or batch use) — auto mode prints a summary of all Q&A questions answered with their defaults. Pass --doc-scan-only to scan README.md and env.dist for outdated content without modifying any files. Use when the user wants to migrate an App Builder project from the Integration Starter Kit or Checkout Starter Kit to the App Management approach, or mentions upgrading their Adobe Commerce extension architecture.
development
Add or modify webhook interceptors in an Adobe Commerce app. Use when the user wants to intercept Commerce operations to validate input, append data, or modify behavior — before or after execution. Requires a base app initialized with commerce-app-init.