---
name: migrate-emqx
description: Resolve an EMQX deployment's effective settings and verify defined mappings to the installed CitusIO tier, including authentication, limits and integration policies.
---

# Replace an EMQX deployment

Read [the case workflow](../references/migration-workflow.md). Inventory the
version, files, runtime overrides, environment, plugins, auth chains/sources,
rules/actions/connectors, state and topology. Resolve objects, arrays, includes,
substitutions and precedence with installed EMQX. The exercised 6.3.2 precedence
was `base.hocon < cluster.hocon < emqx.conf < environment`; verify other versions.

Check live values and command support as well as exit status. The exercised
peer returned success with `key_not_found`; that did not prove an empty
integration inventory. Verify bootstrap credentials through allowed/denied
connections; authenticator creation alone is insufficient.

Map listeners/TLS to nginx, auth chain/default denial to explicit policies,
and every effective limit to an installed target field and boundary test.
Resolve `B3-EMQX-LIMIT-001` and `B3-EMQX-DENY-001`; small-packet lab traffic does
not approve reduced limits or changed denied-publication responses.

For integrations, define predicates, projection, payload bytes, units, order,
retry and terminal outcomes. SQL text is not an automatic translation. Read
the local integration skill when this tier includes it; required unresolved
integrations block a lower-tier replacement. Resolve
`B3-EMQX-ACTION-POLICY-001`: elapsed TTL/drop and finite attempts with durable
quarantine differ, with no implied buffer-capacity equivalence. Keep expired,
quarantined, duplicate and completed IDs separate.

Define store/session policy independently of transfer. EMQX clustering does
not import target HA ownership/fencing. Validate the selected topology and
behavior, then read [migration-cutover](../migration-cutover/SKILL.md) before
state/traffic movement. Preserve unresolved semantics and the next checkpoint.
