Dify Community to Dify Enterprise migration

Moving from a Docker Compose Community install to Enterprise on Kubernetes is a platform change, not a file copy. This page explains what carries over, how license activation ties to a namespace, and how to plan the data moves.

On this page

What a Dify Community to Enterprise migration involves

If your team runs Dify Community in Docker Compose and now needs SSO, multiple workspaces and high availability, the move is a re-platforming with planned data moves, not a file copy. The effort depends on three things: how much data you hold in PostgreSQL, file storage and the vector store, how much identity setup you need, and how far the Kubernetes target differs from your current host. Apps are the easy part, because app DSL files carry configuration, workflow nodes, prompts, model parameters and knowledge base connections but not third-party API keys, knowledge base content or usage logs, as the Dify app management docs describe. Each of those data classes needs its own move plan.

The license is the decision you cannot undo. A Dify Enterprise license is bound to the Kubernetes namespace, and that namespace must not change after activation. Choose the namespace, naming convention and cluster before you activate, and confirm with your Dify account contact whether online or offline activation fits your network. Offline activation uses a Cluster ID exchanged for an offline code, so plan that step if the cluster has no outbound access. Also confirm which Enterprise version matches your target platform, since the Enterprise resources checklist sets minimum Kubernetes, Helm, PostgreSQL, Redis and Qdrant versions that your platform team must meet first.

Keep the SECRET_KEY from your Community .env unchanged in the new environment. Changing it logs out all users and affects how encrypted OAuth credentials are read, so treat it as data to migrate with the database. Decide the SSO design before cutover: which protocol (OpenID Connect, SAML or OAuth2), which identity provider, and whether SSO scopes cover workspace access, web app access or both. Confirm the Enterprise SSO setup steps in the SSO introduction against your identity provider's configuration before you schedule the move.

What carries over from Community and what must be rebuilt

This table compares each part of a Docker Compose Community install with its Enterprise counterpart on Kubernetes, so you can list what moves as-is, what needs an export or copy, and what you rebuild. Read each row as a checklist item to confirm with Dify Enterprise documentation or vendor support before the cutover plan is fixed.

ComponentCommunity installEnterprise on KubernetesMigration action
Apps and workflowsApps exported as YAML DSL files, including workflow nodes, prompts and model parametersApps are recreated in the target workspace from DSL or a supported import pathExport DSL, import, then re-test each workflow against the new providers
Knowledge base contentDocuments and chunks stored in the local volumes and the vector storeNot included in DSL exports, so content must be re-uploaded or copied separatelyKeep source documents and rebuild knowledge bases from them
Provider and third-party API keysEntered in the Community console and stored under SECRET_KEY-based encryptionNot included in DSL exports, so credentials are re-entered in the Enterprise consoleRecord every provider and tool credential and confirm re-entry with the owners
SECRET_KEYSigns sessions and JWTs and encrypts OAuth credentialsMust be set deliberately in the target environment to keep encrypted values readableCarry the value through a secrets process, because changing it logs out all users
Users and workspacesSingle workspace in CommunityMultiple workspaces, SSO and role management are Enterprise featuresDesign the workspace model and map existing accounts to SSO identities
PostgreSQL metadataBundled PostgreSQL in Compose by defaultEnterprise requires PostgreSQL 14 or later, so the database move needs a planned dump and restorePlan a tested backup, restore and version check; confirm the procedure with vendor support
File storageLocal volumes unless moved to object storageEnterprise requires S3-compatible or cloud object storageCopy uploaded files to object storage and verify object counts against the source
Vector data (Weaviate)Bundled Weaviate by defaultEnterprise checklist names Qdrant as the vector databasePlan re-indexing or migration from Weaviate; confirm supported paths with Dify Enterprise documentation
License activationCommunity is free and single-workspaceActivation is bound to the Kubernetes namespace, which cannot change after activationFix the namespace name before first activation and confirm online or offline activation steps

Documented export, import and configuration paths

Dify documents a few specific paths for moving from Community to Enterprise: app DSL files, the Community environment reference, license activation, SSO setup and the target cluster checklist. Each one covers a different layer of the move, so plan them as separate workstreams that meet at cutover.

App DSL export and import

The YAML DSL export carries app configuration, workflow nodes, model parameters, prompts and knowledge base connections. It does not carry third-party API keys, knowledge base content or usage logs. Plan to re-enter credentials in the Enterprise workspace, confirm that each knowledge base connection still resolves, and test every imported workflow before any user or API client is pointed at it.

Community environment settings

The environment variable reference lists the settings a Community install already uses, including SECRET_KEY, the metadata database, file storage and the vector store. Treat SECRET_KEY as the most sensitive value to carry over, because changing it logs out all users. Record every non-default value from your .env so the Enterprise configuration is built from an explicit list rather than memory.

License activation and Cluster ID

A Dify Enterprise license is bound to the Kubernetes namespace, and the namespace must not change after activation. Activation can run online or offline, where a Cluster ID is exchanged for an offline code. Decide the namespace name before the first activation, and confirm with Dify how an offline environment will obtain its code.

Enterprise SSO configuration

Enterprise SSO supports OpenID Connect, SAML and OAuth2, with named providers such as Microsoft Entra ID, Okta and GitHub. It also separates scopes for workspace access and web app access. Map these scopes to your current Community login method before cutover, so users keep the access they had, and confirm which identity provider settings must be created before the target cluster is live.

Target cluster resources checklist

The resources checklist lists Kubernetes 1.24 or later, Helm 3.14 or later, PostgreSQL 14 or later, Redis 6 or later, a Qdrant vector database and S3-compatible or cloud object storage. Its production example uses six worker nodes with 8 CPUs and 32 GB of RAM each and a three-node Qdrant cluster. Compare these requirements with your sizing and existing platform services before you commit to a target design.

Data migration is planned separately

DSL files do not move PostgreSQL data, uploaded files, private keys or knowledge base vectors. Those need their own plan covering backup, a consistent cutover window, the storage and vector store targets, and validation after restore. Ask for this scope in writing, because a clean DSL import does not prove that the data layer has moved.

Why the license binds to the namespace before cutover

Your Dify Enterprise license is bound to the Kubernetes namespace it is activated in, and that namespace must not change after activation. That makes the namespace name and the cluster layout the first decisions in the migration, not the last. If you pick a name for a staging cluster, a shared cluster or a temporary test environment and later move the production workload into a different namespace, you should expect to repeat activation and to revisit anything that depends on the original binding. Settle the namespace, the target cluster and its naming convention with your platform team before you install Enterprise, and record them in the cutover plan so that no one creates the production namespace ad hoc.

Activation can happen online or offline. Online activation is the simpler path when the cluster can reach the vendor's activation service. Offline activation uses a Cluster ID that you generate from the installed environment, exchange for an offline code, and then enter into the system. If your Kubernetes cluster sits in an air-gapped network or has restricted egress, plan for offline activation from the start, including who can request the code, how the exchange is performed through your approved channel and where the activation record is kept. Confirm the exact prerequisites, supported methods and steps in the Dify Enterprise license activation documentation before you schedule the cutover window, because the steps depend on the Enterprise release you deploy.

The Community edition is limited to a single workspace, and that limit does not carry into Enterprise. Enterprise adds multiple workspaces and SSO, so the migration is also a chance to decide how workspaces map to your teams and environments before you import apps. Confirm with your Dify account contact which licensed features and workspace counts apply to your agreement, and make sure the license scope matches the namespace you have chosen. Settling these points early keeps the activation step from becoming the reason the cutover slips.

How the migration sequence runs from inventory to decommission

The sequence moves a Community deployment into an Enterprise installation on Kubernetes in controlled stages, so each stage has a named owner, a verifiable output and a clear point to stop. Nothing is cut over until the pilot, data copy and parallel run have confirmed that apps, data and API clients behave as expected.

  1. Inventory apps, data and users

    Your team lists every app, workflow, knowledge base, model provider credential, plugin, custom tool, MCP connection, API key and user account in the Community workspace, and records which items depend on the current domain name and environment variables. Export app DSL files as a starting point, then note what DSL does not carry: third-party API keys, knowledge base content and usage logs must be handled separately. The output is a written inventory that the owner of each app signs off, with a named owner for every item that needs re-entry after the move.

  2. Build the target cluster to the resources checklist

    Your platform team builds the Kubernetes cluster against the Enterprise resources checklist, which requires Kubernetes 1.24 or later, Helm 3.14 or later, PostgreSQL 14 or later, Redis 6 or later, a Qdrant vector database and S3-compatible or cloud object storage. Confirm node sizing with DeployOpen or Dify against your expected load, since the checklist's production example is a starting reference only. The step is complete when the cluster, database, cache, vector store and object storage pass connectivity and backup tests from the namespace where Dify will run.

  3. Activate the license in the chosen namespace

    Your team confirms the final Kubernetes namespace name before activation, because the Enterprise license is bound to that namespace and the namespace must not change afterward. Activate online where the cluster has outbound access, or use the offline flow by exchanging the Cluster ID for an offline code when it does not. Record the namespace in your change log and the runbook. The step is complete when the license shows as active in the namespace and a test deployment in that namespace starts cleanly.

  4. Configure SSO and run a pilot workspace

    Your identity team configures the chosen protocol (OpenID Connect, SAML or OAuth2) against your identity provider, and maps the workspace access and web app access scopes to your groups. A small pilot workspace is populated with a representative set of migrated apps, one knowledge base and one model provider. Pilot users from each business group sign in and test their workflows. The step is complete when pilot sign-in, role mapping and the test workflows are approved by the business owners in writing.

  5. Copy PostgreSQL, object storage and vector data

    Your database team plans the copy of the metadata database, the uploaded files and private keys in object storage, and the vector data. Vectors can be rebuilt from source documents or moved, so the choice affects time and cost. Run an initial copy during a quiet window, then a final incremental copy at cutover. Keep SECRET_KEY identical to the Community value so encrypted credentials and sessions remain readable, and verify it before any user sees the new system. The step is complete when row counts, file counts and sample knowledge base queries match between source and target.

  6. Run a parallel period with API clients

    Your application teams point test API clients at the Enterprise endpoint while production traffic still uses Community. They compare responses for representative requests, check latency and error rates, and confirm that service API keys, end-user identity and knowledge retrieval return the same results. Any difference is logged and fixed before cutover. The step is complete when each API client owner signs off on parity for the requests they make.

  7. Cut over and freeze the Community system

    Your team freezes edits in the Community workspace, runs the final data copy, updates the public URL and DNS records, switches API clients to the Enterprise endpoint and confirms that users can sign in through SSO. The Community system is kept running in read-only mode as a rollback path until the cutover checks pass. The step is complete when the cutover checklist is signed by the platform owner, the application owners and the security lead.

  8. Decommission Community after retention

    After the agreed retention period, your team takes a final backup of the Community volumes and database, records where it is stored and who can restore it, then stops and removes the Community containers and access paths. Retention length is set by your own policy and records obligations, so confirm it with your compliance owner before the cutover. The step is complete when the final backup restore has been tested and the decommission record is filed.

Planning PostgreSQL, storage and vector data moves

The metadata database holds app configuration, accounts, workspaces, datasets and job state. Dify defaults to PostgreSQL, and the environment reference also lists MySQL and OceanBase as options. Dify Enterprise on Kubernetes expects PostgreSQL 14 or later, so a Community instance on an older or differently configured database needs a planned version and engine check before cutover. The move should be a logical or physical copy taken while the source is stopped or in a known quiet state, not a live copy with writes still arriving.

  • Version gap: Confirm the source server version against the Enterprise resources checklist and plan an upgrade on the source first if it falls below PostgreSQL 14.
  • Database layout: Decide whether Enterprise will use an externally managed PostgreSQL instance or one deployed in the cluster, and who owns backups and failover for it.
  • Quiet window: Stop the api, worker and web services before the final dump so no new records land after the copy.
  • Restore test: Restore the dump into a scratch database and run row counts per table before any production import.
  • Credentials: Create new database users for Enterprise rather than reusing Community credentials in the new environment.

Before cutover, ask the Enterprise implementation team which tables and schema versions they expect and confirm the restore procedure in a non-production namespace.

How SSO and SCIM setup changes the cutover

Which SSO protocol should we choose for Dify Enterprise?

Dify Enterprise SSO documentation lists OpenID Connect, SAML and OAuth2, so the choice follows what your identity provider supports best and what your security team already operates. Confirm the supported providers and setup steps against the SSO documentation for the exact Enterprise version you will deploy, since configuration screens and options differ between releases. Pick one protocol per identity provider, record the callback and metadata values, and test sign-in with a pilot group before any production user is redirected.

Does Dify Enterprise work with Microsoft Entra ID, Okta and GitHub?

The Enterprise SSO documentation names identity providers such as Microsoft Entra ID, Okta and GitHub, but support for your specific tenant setup, group claims and admin consent flows must be confirmed with the documentation and your identity team. Ask which providers are listed for your target version, whether group claims can drive role mapping, and how sign-out and session lifetime behave. Treat any provider not explicitly named in the documentation as an open question, not a given.

Why does Dify SSO have separate scopes for workspace and web app access?

Dify separates SSO scopes for workspace access, meaning builders and administrators signing into the console, from web app access, meaning end users of published apps. Decide them separately because the populations, risk levels and identity sources usually differ. An employee who builds workflows may need workspace roles, while a customer-facing or partner-facing app may need a different sign-in path or no workspace access at all. Map each population to its scope before configuring either one.

Should we plan SCIM provisioning before the Enterprise cutover?

Confirm SCIM provisioning against the Enterprise documentation for your target version before you plan around it, because the scope of automated user and group sync can change between releases. If it is supported and you adopt it, users and groups are created and removed from your identity provider rather than by hand. If it is not available or not yet proven in your environment, plan manual user creation and a documented offboarding step instead. Either way, decide who owns deprovisioning, since stale accounts are the main access risk after a move.

How do we map identities and roles from Community to Enterprise?

Community accounts are local to one workspace, so every existing user needs a matching identity in the Enterprise provider before cutover. Build a mapping table that links each current email or account to the identity provider subject, the target workspace and the role it should hold. Decide which roles stay, which are merged and who approves exceptions. Test the mapping with a copy of the user list and resolve duplicates, shared accounts and service accounts before the cutover window opens.

How long does an SSO and user cutover window need to be?

The window depends on the number of users, how many identity providers and scopes you configure, how many roles need review and whether SCIM is in use, so ask any partner for a written plan rather than a generic duration. Schedule a pilot, a freeze on role changes, a cutover date and a rollback point where the Community login is kept available until sign-in is confirmed. Keep the Community instance readable during the window so that owners can check apps and data.

What should we ask a partner to confirm about SSO and SCIM?

Ask for a written scope that names the protocol, each identity provider, the workspace and web app scopes, the SCIM version and the role mapping method, all checked against the documentation for your target Enterprise release. Ask who configures the identity provider, who owns test accounts, how rollback works and what happens to sessions when the SECRET_KEY or cookie settings change. Ask how the team will verify that deprovisioned users lose access to both workspaces and published apps.

What drives the effort and cost of the move

This table lists the factors that change the effort of moving a Community install to Enterprise on Kubernetes, and whether each one adds one-time work, recurring cost or both. Read each row with the question to ask in a quote, since the written scope sets the final figure. No price or duration is implied by the table.

DriverWhy it changes effort or costCost type and what to ask for in a quote
Number of apps and workflowsEach app's DSL export, node configuration, prompts and model parameters must be checked and re-imported, and exports exclude third-party API keys and knowledge base content.One-time. Ask how apps will be inventoried, which are moved versus retired, and who validates each workflow after import.
Knowledge base volume and re-indexingDocuments and vectors do not travel with DSL files, so source files may need re-upload and re-embedding, which adds time and model usage on the target.One-time, with possible model usage charges. Ask whether vectors are migrated or rebuilt, which vector store the target uses, and who pays embedding costs.
Model providers and credentialsProvider keys are excluded from exports and must be re-entered and tested on the Enterprise side, one provider at a time.One-time. Ask for a count of providers, a credential handling method, and how secrets are recorded during the move.
Plugin inventoryInstalled plugins and custom tools need to be matched to versions supported on the target and re-verified after the move.One-time, then recurring if plugins need ongoing updates. Ask for a plugin list and the plan for private plugins.
Identity provider complexityEnterprise SSO supports OpenID Connect, SAML and OAuth2, and separate scopes for workspace and web app access, so each identity provider needs its own configuration and testing.One-time setup, with recurring administration. Ask which protocols and providers are in use and whether SCIM provisioning is required.
Target cluster readinessThe published checklist calls for Kubernetes 1.24 or later, Helm 3.14 or later, PostgreSQL 14 or later, Redis 6 or later, a Qdrant vector database and S3-compatible or cloud object storage. Gaps in any of these must be closed first.One-time for build-out, recurring for infrastructure. Ask which components already exist and which must be provisioned or sized.
Data residency and air-gap requirementsOffline activation uses a Cluster ID exchanged for an offline code, and data stores must stay in approved locations, which adds planning and test steps.One-time. Ask whether the cluster is online for activation, who holds the offline exchange process, and where backups are kept.
Number of workspaces and environmentsEach workspace needs its own configuration, members and permissions, and the license is bound to one namespace that must not change after activation.One-time for setup, recurring for administration. Ask how many workspaces move, whether staging is included, and how namespace naming is fixed before activation.

What usually goes wrong and how to prevent it

Most failed Community to Enterprise moves trace back to a few decisions made early and never revisited. The cards below cover the identity, license, secrets, data and sizing choices that are hard to reverse once the cutover starts, and the check that catches each one before it reaches users.

Changing the namespace after activation

An Enterprise license is bound to the Kubernetes namespace, and the namespace must not change after activation. If the team later renames or recreates the namespace for tidiness, the license no longer matches the deployment and the install stops being valid. Fix the namespace name in the migration design document before any activation, and have the Helm release, ingress and secrets reference that exact name. Confirm the namespace in writing before activation starts.

Changing SECRET_KEY during the move

SECRET_KEY signs session cookies and JWTs and encrypts OAuth credentials. Changing it after deployment logs out all users, and stored OAuth credentials may stop decrypting. A new Kubernetes secret built from a fresh key is a common cause of this during the move. Copy the existing value from the Compose .env into the new secret before the first start, and record where it lives so it is not regenerated during a later upgrade.

Losing third-party API keys

DSL exports carry app configuration, workflow nodes, model parameters, prompts and knowledge base connections, but not third-party API keys, knowledge base content or usage logs. Teams that assume an app export is a complete backup find model and tool credentials missing after import. Inventory every provider and tool credential per workspace, store them in your secrets system, and re-enter and test each one in the Enterprise instance before cutover.

Incomplete storage and vector copies

PostgreSQL, uploaded files and vector data must move together. A database copy taken at a different time than the file storage leaves documents referenced in the metadata database but missing from storage, and knowledge bases that cannot answer. The vector store is also separate: Enterprise expects Qdrant, so existing Weaviate data does not carry over automatically. Freeze writes, take all three copies in one window, and run a retrieval test against a sample knowledge base before declaring the copy complete.

SSO mapping errors locking out admins

Enterprise SSO supports OpenID Connect, SAML and OAuth2, and separate scopes control workspace access and web app access. A wrong claim mapping, an unassigned group or a mismatched redirect URI can leave no user with administrator rights after the switch. Keep a local administrator path available during the cutover, test each identity provider with a non-admin and an admin account, and change the default login method only after both succeed.

Running short of the assumed sizing

The Enterprise resources checklist requires Kubernetes 1.24 or later, Helm 3.14 or later, PostgreSQL 14 or later, Redis 6 or later and a Qdrant vector database. Its production example uses six worker nodes with 8 CPUs and 32 GB of RAM each and a three-node Qdrant cluster. A small Compose host cannot be reused as-is. Compare your current data volumes and user load with that example, and confirm node and database capacity before scheduling the move.

What buyers ask before moving from Community to Enterprise

Can our own team move from Dify Community to Enterprise without a partner?

Yes, a capable platform team can attempt it, but the work spans three areas that rarely sit with one person: Kubernetes and Helm, the PostgreSQL, storage and vector data move, and identity administration for SSO and SCIM. Check the Enterprise prerequisites first. The resources checklist calls for Kubernetes 1.24 or later, Helm 3.14 or later, PostgreSQL 14 or later, Redis 6 or later, a Qdrant vector database and S3-compatible or cloud object storage. If your team lacks one of these, or lacks a test environment that mirrors production, a partner or Dify's own enterprise support path becomes the practical choice. Ask Dify which parts of the move they support directly.

What cost components should a migration quote include?

A quote should separate the one-time work from the recurring spend. One-time items include inventory of the current Compose install, the Kubernetes cluster build or review, data migration planning and execution, SSO and SCIM configuration, validation and cutover. Recurring items include the Enterprise subscription, the cluster capacity that runs it, object storage, backups and ongoing support. Dify does not publish Enterprise pricing, so the subscription figure must come from Dify's quote. The Dify pricing page lists the self-hosted Enterprise edition as custom priced. Ask for each line item in writing and for the assumptions behind it, including the size of the vector data and the number of workspaces.

How long does a Community to Enterprise migration take?

Duration depends on scope rather than on a standard number, so treat any fixed figure with caution. The main drivers are the number of workspaces and apps, the size of PostgreSQL, uploaded files and the vector store, how many knowledge bases need re-indexing, how many identity providers and roles must be configured, and how many change windows your organization allows. A small single-workspace instance with few knowledge bases is far quicker to move than a multi-team deployment with large document sets. Ask any provider to name the assumptions behind its timeline and to list which items depend on your change calendar.

What must our team provide before the migration starts?

Your team should provide four things. First, an inventory of workspaces, apps, knowledge bases, model provider credentials, plugins and API clients. Second, identity administration access to configure OpenID Connect, SAML or OAuth2 with your provider, and to map groups for SCIM. Third, cluster access, including namespaces, storage classes, ingress, secrets handling and network rules to reach model endpoints. Fourth, fixed change windows for the cutover and a named owner who can approve it. Without the inventory, scope cannot be priced accurately, so start there.

Can we move all apps with one DSL export?

No, a single export is not enough. Dify apps can be exported and imported as YAML DSL files, which carry app configuration, workflow nodes, model parameters, prompts and knowledge base connections. The export does not include third-party API keys, knowledge base content or usage logs. That means provider credentials must be re-entered, knowledge base documents must be re-uploaded or re-indexed, and API clients must receive new keys where applicable. Confirm with Dify how workspace-level data, PostgreSQL and file storage are carried across for the Enterprise install, since the DSL export alone does not move them.

Does our Community license stop working at cutover?

Confirm this with Dify before you schedule the cutover. The Community edition is free and limited to a single workspace, and the Dify Open Source License prohibits operating a multi-tenant environment without written authorization. Enterprise licensing is different. An Enterprise license is bound to the Kubernetes namespace, and that namespace must not change after activation. Activation can be online, or offline using a Cluster ID exchanged for an offline code. Plan the namespace name before activation, and ask Dify what happens to the Community instance once Enterprise is live, including whether it can be kept for rollback.

How do we keep Community running during the parallel run?

Keep the Community instance as the system of record until the Enterprise install passes validation. Run the Enterprise cluster alongside it on a separate namespace, load a copy of the database and file storage, and test apps, knowledge base retrieval and SSO login against the copy. Freeze or limit changes on the Community side during the final sync, then repeat the sync at cutover. Take a backup before each step, following the same discipline Dify recommends before every upgrade. Keep the Community host available for rollback until the business signs off, and remember that the Enterprise namespace cannot change once the license is activated.

How DeployOpen scopes and delivers the migration

DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, backs up and documents self-hosted platforms inside your own infrastructure. The cards below follow the order of a typical Community to Enterprise move, from the written scope through to cutover and ongoing support.

Fixed-scope written agreement

Before any work starts, the scope, deliverables and timeline are agreed in writing. For this migration the agreement should name the source Compose host, the target Kubernetes namespace, the Enterprise version, the identity provider for SSO and SCIM, and the data stores that move. Ask the quote to separate the one-time migration from any recurring Enterprise subscription or support, because the license and the migration are priced and governed differently. Confirm who owns the Kubernetes cluster, the object storage and the Qdrant cluster before scope is fixed.

Inventory and pilot

Before cutover, DeployOpen inventories what runs on the Community host: the .env file, the SECRET_KEY, uploaded files, the PostgreSQL database, the Weaviate vector data, installed plugins and any custom Nginx or proxy settings. A pilot then restores a copy of this data into a non-production namespace on the target cluster. The pilot shows which settings must be re-entered, which plugins need reinstalling and which knowledge bases need rebuilding. Its findings set the real cutover plan and the quote for the remaining work.

Data copy validation

Each data store is copied with a recorded checksum or row count, and the copy is checked before anyone uses it. PostgreSQL row counts for apps, datasets and accounts are compared between source and target. Object storage file counts and sizes are compared against the source volume. Knowledge base retrieval is tested with fixed queries so you can see whether answers still cite the same documents. Each check is written into a validation record that your team signs off.

Parallel run and cutover

During a parallel run, the Community instance stays online read-only for internal testers while the Enterprise instance serves the same apps. Cutover moves API clients, DNS records and webhook endpoints in a planned window, with a rollback path back to the Community host kept until the owners confirm. DeployOpen supports the cutover window and records each step so operations staff can repeat it. Ask how long the rollback path stays available and who authorizes the switch back.

Hardening and documentation

The target Enterprise deployment is hardened to your standards, covering secrets handling, network policy, SSO configuration and backup schedules. DeployOpen documents the resulting configuration, the runbooks for upgrades and the evidence your compliance team may request. Dify provides the controls, and DeployOpen prepares them for your assessment, but independent auditors and certification bodies issue any audit report or attestation.

Optional retainers after go-live

Once the Enterprise instance is live, ongoing upgrades, monitoring and security testing can move to a retainer. Dify ships minor releases about monthly, so a retainer should define which versions are tracked, who reviews the release notes, how the backup is taken before each upgrade and who handles the Enterprise license renewal. Ask for the retainer scope in writing and keep it separate from the migration agreement so that each can be reviewed on its own terms.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.