How migrating from Back4app to self-hosted Parse Server works
A team leaving Back4app for self-run Parse Server usually does so after a renewal, a per-app pricing change, or a residency or control requirement that a hosted plan cannot meet. The app's data, Cloud Code and client SDK wiring move across, while hosting, backups, scaling and security become the team's responsibility. Parse Server is Apache-2.0 licensed, so the code itself is free to run, but the operating cost and the operating duty move to you. The work is usually led by the backend or platform engineer who owns the app, with a DevOps or infrastructure engineer for the server, database and backup setup, and a security reviewer who signs off on access rules, secrets and network exposure. Someone from the product side should own the cutover window, since client apps must point at the new server URL.
Effort depends mostly on app complexity rather than on the number of users. The main drivers are the number of classes and their indexes, how much logic lives in Cloud Code triggers and jobs, whether the app uses Live Queries, push notifications or custom file adapters, and how many client app versions are still in the field and must keep working during the switch. Apps with simple schemas and few triggers are typically a smaller project than apps with heavy Cloud Code. Confirm the exact scope with a written plan before estimating time, and ask the vendor or consultant for the exact list of Parse Server and Parse Dashboard versions they will run.
The main risks sit in three places. First, data fidelity: confirm that exported records, relations, pointers and user password hashes import correctly and that the row and document counts match before cutover. Second, access control: Class-Level Permissions and ACLs that were enforced by Back4app must be re-tested on your own server, because a misconfigured master key or an open Dashboard endpoint is a direct exposure. Third, operations: you inherit backups, restore testing, monitoring, certificate renewal and upgrades. Plan a rollback path and a tested restore before you retire the Back4app app, and keep the old app read-only until both sides have been verified.
Which Back4app capabilities carry over to self-hosted Parse Server
This table maps each Back4app capability to its self-hosted Parse Server equivalent and marks it as clean, needs rework or gap. Read the status column first, then the confirm column for hosted-only items that need checking in your own environment. Most core data and API features move across, while managed operations and dashboard-level tooling are where the work and the cost shift to your team.
| Capability | Parse Server equivalent | Status and what to confirm |
|---|---|---|
| Classes and schema | Parse Server classes on MongoDB or PostgreSQL, with schema managed through the Parse API and database tooling | Clean for most schemas. Confirm index definitions and class-level permissions, which must be recreated on your database. |
| Users and sessions | Parse User and Session classes with the built-in authentication providers | Needs rework. Confirm how password hashes are exported from Back4app and whether your Parse Server version accepts them without forced resets. |
| Cloud Code functions and triggers | Cloud Code loaded by your Parse Server instance from the cloud directory | Needs rework. Confirm that code runs on your Node.js version and that any Back4app-specific helpers or environment variables are replaced. |
| Live Queries | Parse Server Live Query server with a WebSocket endpoint you configure and scale | Needs rework. Confirm the Live Query server is enabled, its class list is set, and your load balancer supports WebSocket connections. |
| Push notifications | Parse Server push adapters for Apple, Google and other providers, configured with your own credentials | Needs rework. Confirm each provider certificate or key is transferred and that device tokens are migrated with installations. |
| File storage | Parse Server file adapters for S3, GCS or the local file system | Needs rework. Confirm existing file URLs are rewritten or served through a proxy, and that bucket access and CDN settings are rebuilt. |
| Backups and point-in-time recovery | Your database tooling, such as MongoDB or PostgreSQL dumps and archiving, run on your own schedule | Gap. Back4app managed backups do not carry over. Confirm restore tests, retention and recovery targets with your team. |
| Monitoring and dashboard tooling | Parse Dashboard as a separate self-hosted app, plus logs and metrics you collect yourself | Gap for hosted-only views. Confirm which Back4app dashboards and alerts your team uses and plan replacements before cutover. |
What data and integrations you must move and rebuild
The first task is to inventory what a Back4app app actually holds, because the Parse data model is only part of it. Schema, objects, users, files and push installations each have a different export path, and the reader should confirm the exact export options, formats and limits in Back4app's own documentation before planning the cutover. Schema and objects are usually moved together so that class definitions, field types and pointer relations arrive intact. Users need separate handling, since the _User class carries password hashes and session tokens that do not behave like ordinary fields. Files live in Back4app's file storage and must be downloaded and re-uploaded through the adapter you choose for the new server, so their URLs in existing objects will change and need rewriting.
Password hashes and session handling are the step most likely to lock users out. Parse Server stores user passwords as bcrypt hashes by default. Before users sign in on the new server, confirm that the exported hashes can be imported without forcing resets, and test a sample account end to end on a staging instance. Session tokens generally should not be carried over: plan for active users to sign in again, and tell them ahead of the cutover. Also check any custom auth adapters, OAuth providers and email verification flows, because their callback URLs and client IDs usually point at the old host.
Cloud Code is rarely self-contained. Review every Parse.Cloud.define, Parse.Cloud.beforeSave and Parse.Cloud.job for calls to outside services, and list each one with its credentials and owner. Webhooks that Back4app or your code triggers, push providers such as APNs, FCM or a push gateway tied to the app's keys, email and SMS services, payment processors and analytics endpoints all need new configuration or allow-listed outbound addresses on your own network. Store these secrets in environment variables or a secrets manager, not in the repository, and keep an owner for each integration so that rotations and renewals do not stall.
Finally, record what the hosted service handled for you. Scheduled jobs, log retention, backups and push delivery reports may have no direct equivalent on a self-run Parse Server, and each one needs a replacement or an accepted gap. Confirm with the vendor which of these features are included in your current plan, then write a cutover checklist that marks each data set, integration and user path as moved, rebuilt, or retired.
Which data, identities and integrations to move
A Back4app to Parse Server move touches six areas that do not move the same way. Class data and files are copied, user credentials need a hash check, and Cloud Code, Live Queries and push integrations are redeployed and tested against your own server. Work through them in this order so that each one is verified before the client cutover.
Class data and schemas
Parse classes, their fields, indexes and object relations move as data plus schema. Export each class from Back4app, then decide whether you target MongoDB or PostgreSQL and recreate indexes and class-level permissions on the new database. Check row counts per class, pointer and relation integrity, and date and geopoint field types after import, since these are the fields most often altered by a conversion step.
User accounts and credentials
Parse user records include password hashes, session tokens and verified email flags. Confirm with Back4app support and your own test export which hash format is stored before you plan a bulk import, because password hashes that cannot be verified by your Parse Server force a reset. Sessions usually do not survive the move, so plan for users to sign in again and test the reset email flow end to end.
Files and storage adapters
Files stored on Back4app must be downloaded and re-uploaded to the storage adapter you configure, such as S3, GCS or the local file system adapter. Stored file URLs embedded in objects will point at the old host, so rewrite them or serve through a stable domain. Verify file counts and byte totals against the export, and confirm that access control on private files is enforced by the new adapter.
Cloud Code and triggers
Cloud Code functions, beforeSave and afterSave triggers, and background jobs are your application logic and must be redeployed to your own Parse Server. Review each one for dependencies on Back4app-specific configuration, environment variables and third-party keys, and replace those with your own secrets store. Test every trigger with real write paths, because a missing trigger fails silently in client code.
Live Query subscriptions
Live Queries require the Live Query server to be enabled and configured on your Parse Server, with its class list set explicitly. Clients subscribe through the SDK using the new server URL, so confirm the WebSocket path works through your load balancer and reverse proxy. Test subscription reconnects and permission checks, since a subscription that works in development can behave differently under production traffic.
Push and third-party integrations
Push notifications depend on certificates or keys for APNs and FCM that belong to your app, so they need to be reissued or re-linked to the new server. Also list payment, email, analytics and webhook integrations that Back4app or Cloud Code calls, and confirm each has an allowlisted outbound path from your network. Verify push delivery on each platform before cutover, as a silent failure here is hard to spot.
Migration sequence from inventory to decommission
This sequence moves a Back4app app to a Parse Server you run, in an order that keeps the production app working until each piece has been checked. Each step closes with a named artifact, so the cutover is a decision based on evidence rather than a single switch.
Inventory classes, Cloud Code and SDK versions
The engineering lead and the app owners list every Parse class with its fields, indexes, class-level permissions and triggers, plus every Cloud Code function, job, and webhook. They also record the Parse SDK version in each iOS, Android, JavaScript and other client build, because older SDKs may need upgrades before they can point at a self-run server. Confirm with the Parse Server release notes which server version supports each SDK you ship. The step is done when the team has a schema map and a dependency list that flags every client build needing a release.
Choose the database and file storage
The architect decides between MongoDB and PostgreSQL for Parse Server's data store, and between the file system adapter and an S3 or GCS adapter for uploaded files, based on the team's operational skills, backup tooling and residency requirements. If PostgreSQL is chosen, confirm the supported PostgreSQL major version against the PostgreSQL versioning policy before provisioning. The output is a decision record that names the database, the file adapter, the hosting location and the named owner for each.
Build a staging Parse Server and pilot the app
The platform engineer deploys Parse Server and Parse Dashboard in a staging environment, loads a copy of the schema, and redeploys Cloud Code there. A test build of one client, pointed at the staging server URL, runs the core flows: sign-in, reads and writes, file uploads, push notifications and any Live Queries. Each failure is logged against the schema map. The pilot is validated when every core flow passes with a copied dataset and the open issues are documented.
Export data and run a parallel sync
The data engineer exports Back4app data in batches, imports it into the new database, and runs incremental syncs while Back4app stays live for production traffic. Users with stored password hashes are checked against the import path so sign-in keeps working. Files are copied to the chosen storage adapter and their URLs are reconciled. The output is a reconciliation report comparing record counts, sample checksums and file counts per class, signed off by the app owner.
Write and rehearse the cutover runbook
The release manager writes a cutover runbook with the order of actions: freeze writes or accept a short write gap, run the final sync, verify the reconciliation, publish the new client build or configuration that sets the server URL, and check that traffic reaches the new server. A rollback path back to Back4app is documented with its exact steps. The team rehearses the runbook on staging. The runbook is approved when a rehearsal completes within the agreed window and every step has a named owner.
Cut over by repointing the SDK server URL
On the agreed date, the team runs the final sync, confirms the reconciliation, and points clients at the new server URL. Because app stores and users update at different speeds, the old server should keep serving or be monitored until adoption is acceptable for the business. Watch error rates, sign-in success and Cloud Code logs during this period. The step is complete when the monitoring dashboard shows the new server handling production traffic and the on-call owner signs the cutover record.
Decommission Back4app and record the retirement
After the agreed period of stable operation, the owner exports final backups from Back4app, confirms they are restorable, cancels the plan or app subscription, and removes stored credentials and webhooks that still point to Back4app. The team also updates its backup schedule, monitoring and access reviews for the self-run stack. The output is a retirement record listing the final export location, the cancellation confirmation and the handover of operational ownership to the team that runs Parse Server.
Choosing MongoDB or PostgreSQL for Parse Server
The database decision for a self-hosted Parse Server should start from your data shape and your team, not from the Back4app dashboard you are leaving. Parse Server supports MongoDB and PostgreSQL as its data store, and the choice affects how you query objects, how you run backups and who on your team can operate the database under load. Start by listing your Parse classes, the relations between them and the queries your Cloud Code and clients actually run. If your data is mostly document-shaped with flexible fields, MongoDB may fit the existing mental model. If your team already runs PostgreSQL for other systems, with established backup, monitoring and restore procedures, that operational familiarity often matters more than any single feature. Confirm the Parse Server version you plan to run supports your chosen database and driver before committing, and test the migrated schema against real queries.
PostgreSQL is released under the PostgreSQL License, a liberal open source license similar to the BSD or MIT licenses, so you can self-host it without per-seat or per-instance licensing fees. Supported major versions currently run from 14 through 18, with 18 first released on September 25, 2025, and 14 supported until November 12, 2026. Pick a major version that will still be supported for the life of your deployment, and plan for a yearly major release cycle and minor releases at least every three months. A major upgrade can use logical replication, which works between different major versions and, according to the PostgreSQL upgrade documentation, can limit downtime to several seconds. Whatever database you choose, rehearse the upgrade on a copy before the production window.
Neither database gives you automatic failover on its own in a typical self-hosted setup. PostgreSQL supports hot standby servers and both synchronous and asynchronous replication, but it does not detect a primary failure or promote a standby by itself, so you need external tooling and a tested runbook. Decide who owns that tooling, how failover is tested and what recovery point you accept, and check that your backup approach supports point-in-time recovery if you need it. Ask your MongoDB or PostgreSQL operator, managed provider or internal platform team to confirm their replication, failover and backup tooling in writing before you cut over.
What drives migration cost and duration
This table lists the main drivers of effort when moving a Back4app app to Parse Server you host, with why each matters and how to keep it down. Read each row as a question to answer about your own app before asking for a quote. The biggest takeaway is that data volume, Cloud Code surface and the number of app versions still in use usually matter more than the number of screens or features.
| Driver | Why it changes effort | How to reduce it |
|---|---|---|
| Number of classes and indexes | Each class needs a schema check, index recreation and data validation after import. Parse classes that rely on Back4app defaults or dashboard-created indexes must be recreated explicitly. | Export a schema inventory first, remove unused classes, and document every index in version control before the cutover. |
| Volume of stored objects | Row count drives export time, transfer time and the window in which both systems must stay consistent. Ask Back4app for export options and limits for your plan before estimating. | Archive old records that no longer need migrating, and run a test import on a production-sized copy to measure real timings. |
| Files and attachments | File bytes are often the largest data set. Each file must be downloaded from Back4app storage and written to an S3, GCS or file system adapter, with URLs rewritten in stored objects. | Inventory file counts and sizes per class, decide which files to copy and which to leave on Back4app, and confirm the adapter you will use. |
| Cloud Code complexity | Triggers, cloud functions, jobs and third-party calls must be redeployed and tested against your own Parse Server version. Hidden dependencies on Back4app-specific settings are common. | List every hook and job, pin the Parse Server version, and write tests for the top business flows before moving any code. |
| Live Query usage | Live Queries need a WebSocket-capable endpoint, a configured live query server and client subscriptions that reconnect correctly after the URL changes. Load behavior must be checked on your own infrastructure. | Confirm which features use Live Queries, keep the subscription list short, and load test the live query server before go-live. |
| SDK client versions in the field | Every installed app version points at the old Back4app URL and keys. Older builds may not reconnect cleanly, so each supported version needs its own test path and a forced-update plan. | Count active versions from analytics, set a minimum supported version, and plan a server URL change that old builds can still reach during a transition window. |
| Downtime tolerance | A zero-downtime move needs data synchronization between Back4app and your database, plus a controlled write freeze. A short maintenance window simplifies the cutover but limits how much change can happen in between. | Agree the acceptable write freeze in writing, rehearse the cutover, and keep Back4app available until rollback is no longer needed. |
| Authentication and user data | Moving user accounts usually means preserving password hashes or planning resets. Parse user records, sessions and third-party sign-in links all need checking. | Confirm which login methods are in use and test a sample of migrated users on the new server before the full import. |
What usually goes wrong and how to prevent it
Most failed Back4app-to-Parse Server migrations break at the edges: sessions, file links, Cloud Code, client versions, backups and the database layout. Each risk below has a prevention step you can check before the cutover window opens, so the move does not depend on luck.
Password and session incompatibility
Parse stores user password hashes in its own format, and exported hashes may not match what the new server expects. If they do not, every user is forced into a password reset and active sessions are invalidated. Before cutover, import a small set of test users, log in with each, and confirm that existing session tokens are accepted or that users are warned in advance. Ask Back4app support and your Parse Server version which hash formats and session behavior apply to your export.
File URLs that stop resolving
Files in Back4app are served from URLs tied to the hosted file store. After migration, those URLs point at a domain you no longer control, so images and attachments in old records appear broken. Plan the file adapter you will use (S3, GCS or the file system adapter) and copy every file, then confirm the URL rewrite strategy for stored Parse.File references. Test a sample of old records end to end, including files attached to objects your apps load most often.
Cloud Code behaving differently
Cloud Code runs on Parse Server with your own Node.js runtime, dependencies and environment, which can differ from what the hosted platform provided. Triggers, cloud functions and jobs may depend on platform-specific settings, secrets or npm packages that were never exported. Diff your deployed Cloud Code against your repository, run every function and trigger in a staging environment, and check scheduled jobs separately, since they often fail silently after a move.
Clients on outdated SDK versions
Mobile and web apps already in users' hands keep the Parse SDK version they shipped with, and each one needs the new server URL and application keys. Older SDKs may not support the server version you deploy, and mobile release cycles are slower than server changes. Inventory every shipped client, confirm which SDK version it uses, and pick a server version compatible with the oldest one still in use. Keep the old endpoint answering during the transition if your plan allows it.
No backups after cutover
On the hosted service, the provider handled database backups. Once the cutover is complete, your team owns that duty, and a Parse Server database without a tested backup and restore path is a single point of loss. Set up scheduled backups of the database and file store before the switch, and run one full restore into a separate environment. Document the recovery time you can actually achieve, and confirm who is accountable for each backup job.
An unplanned single-node database
A single MongoDB or PostgreSQL instance behind Parse Server is a common default after a quick migration, and any host failure then stops every app. PostgreSQL supports hot standby replicas, but it does not detect a failed primary or promote a standby on its own, so automatic failover needs external tooling. Decide the topology before cutover: whether you need a standby, who monitors it, and how failover is tested. Ask your implementation partner to write this down as part of the migration scope.
How the migration differs by app size and starting point
A single app with one Parse database, a modest Cloud Code file and a few file classes is the simplest starting point. The work is mostly sequential: export the data, stand up one Parse Server and one database, redeploy Cloud Code, then switch the SDK clients to the new server URL. Because the app has one owner, the cutover window can be planned around one release cycle rather than a coordinated program.
- Data export: Export classes from Back4app and confirm document counts per class before any import.
- Single database choice: Pick MongoDB or PostgreSQL once for the whole app and document the choice in the runbook.
- Files: Move the files for one storage adapter, such as S3, GCS or the file system adapter, and test a sample upload and download.
- Client cutover: Ship an app update that points the Parse SDK at the new server URL, and keep the Back4app app running until adoption is confirmed.
- Operations: Assign one person to own backups and Parse Server upgrades.
Before cutover, check that push notifications, scheduled jobs and any Cloud Code triggers behave the same on the new server, and confirm the backup restore procedure with a test restore.
An organization with several Back4app apps has to plan the migration as a program. Apps share teams, release calendars and sometimes data models, so the order in which apps move matters. A typical approach is to group apps by owner and risk, pilot one low-impact app, then move the rest in batches with a shared runbook and shared infrastructure decisions.
- Inventory first: List every app, its classes, Cloud Code size, file volume, push usage and SDK version before choosing an order.
- Shared platform decisions: Decide once whether apps share a database cluster or run separate ones, and how each app is isolated.
- Batching: Move low-risk apps first to refine the runbook, then move apps with tight release calendars in planned windows.
- Standard deployment: Use one deployment template for Parse Server and Parse Dashboard so each app is configured the same way.
- Ownership model: Name a platform owner for upgrades and a per-app owner for Cloud Code and client releases.
Ask your implementation partner or internal platform team to confirm how each app's SDK version handles the server URL change, since older clients may need an app update before cutover.
Apps that rely on Live Queries for realtime updates need extra attention in sequencing. Live Query subscriptions are held open by clients, so a server switch disconnects every active subscriber. The migration needs a plan for reconnection, for data written during the cutover and for load on the new server before traffic moves.
- Load testing: Test concurrent Live Query subscriptions on the new server at realistic counts before moving traffic. Confirm the expected numbers with your own usage data.
- Reconnection behavior: Verify that the SDK reconnects to the new server URL and re-establishes subscriptions without losing the user's view.
- Write freeze or dual writes: Decide whether writes pause briefly during the final data sync or whether a short period of dual operation is acceptable, and document the choice.
- Cloud Code triggers: Confirm that afterSave and similar hooks fire the same way, because realtime events often depend on them.
- Monitoring: Watch subscription counts, socket errors and database latency during the first hours after cutover.
Confirm with your team which Live Query features your apps use and how the open-source Parse Server version you choose handles them, because capabilities and configuration differ between versions.
Teams that must control where personal data is stored start from a different question: which country, data center or network the Parse database and file store must sit in. On a hosted platform this is often set by the provider. Self-hosting moves that decision to your side, so the region, network path and backup location must be chosen and documented before data is exported.
- Location decision first: Fix the region or data center for the database, file storage and backups before the first export, since moving them later means another migration.
- Backup location: Confirm where backups are written and who can restore them, because backup copies are also in scope for residency rules.
- Access paths: Restrict database and file store access to the Parse Server network and named administrators, and record that in the access review.
- Third-party services: List push providers, email services and analytics that receive personal data from the app, and confirm where each processes it.
- Evidence: Keep records of the location, encryption and access settings so an auditor can trace them.
Ask your legal or compliance team which rules apply to your data and whether any cross-border transfer is involved. DeployOpen prepares systems and evidence for assessments, but independent auditors and regulators decide compliance.
Questions teams ask before migrating from Back4app
How much does migrating from Back4app to self-hosted Parse Server cost?
The cost splits into a one-time migration project and recurring operations, and the migration fee follows from the written scope. Scope drivers include data volume, the number of Cloud Code functions to redeploy and test, how many apps use the Parse SDK, file migration volume and the hardening you require. Recurring costs include the servers or cloud accounts, a managed or self-run database, file storage and bandwidth, off-system backup storage, monitoring, and staff time to patch and upgrade Parse Server and the database. Ask any quote to separate one-time from recurring items and to state what is included. DeployOpen does not publish prices. A quote follows from the scope you agree in writing.
How long does a Back4app to Parse Server migration take?
The timeline depends on scope, so no single duration fits every app. The main variables are how much data and how many files must move, how many Cloud Code functions need redeploying and testing, how many mobile and web releases must ship with the new server URL, and how long you run both systems in parallel before cutover. Your team's availability for testing and sign-off also sets the pace. Ask for a written plan that lists each phase, its exit criteria, the cutover window and the rollback path. DeployOpen agrees timelines and deliverables in writing before work starts, and confirm with Back4app how long you can keep export access during the overlap period.
What does our team need to provide before a Parse Server migration starts?
The migration depends on access, inventory and named decisions from your side. The essentials are:
- An export of the Back4app schema, data and files, plus the current Cloud Code source and the app configuration.
- An inventory of every Parse SDK client, its version, and the app store or release schedule for each.
- A target cloud account or data center, network design, and DNS control for the new server URL.
- Named owners for data decisions, security sign-off, and user acceptance testing.
Confirm with Back4app which export options your plan provides before you commit to a date, because the export is the foundation of the project.
Can our in-house team migrate Back4app to Parse Server without a partner?
A capable in-house team can do it, but the work is more than copying data. You need experience running Parse Server, operating the database you choose, and managing the Parse SDK versions in your client apps. The highest-risk areas are user credentials, file references, Cloud Code behavior that depends on settings your app relies on, and the cutover itself. Teams that migrate alone usually keep a staging environment, rehearse the cutover, and test rollback before go-live. If you want a partner, DeployOpen plans, implements, integrates, hardens, backs up, documents and supports self-hosted open-source platforms in your own infrastructure, under a written scope, with retainers available for ongoing upgrades and support.
Will existing users keep their passwords after moving off Back4app?
Users keep their passwords only if the hashes in your export can be verified by the Parse Server you deploy. Confirm the exact hash algorithm and parameters from your export and from the Parse Server version you plan to run before you design the migration. If the hashes are verifiable, users sign in unchanged. If they are not, the usual options are a forced password reset or a login bridge that checks the old hash once and then stores a new one. Test with each account type you have, including social login and unverified email accounts, in a staging migration before you rely on the approach.
What backups and support do we take over after leaving Back4app?
You take over backup, recovery, patching and support, which the hosted service previously covered. Confirm with Back4app what it currently backs up, how long it retains backups, and how restores work before you leave, so you know what you are replacing. On your side, the database needs scheduled backups, and continuous archiving if you need point-in-time recovery. PostgreSQL documents continuous archiving for this. Failover needs separate planning, because PostgreSQL does not detect a failed primary or notify a standby on its own. Open-source Parse Server has no vendor support contract, so support comes from your team, community channels or a retainer you agree in writing.
Which database should we choose for Parse Server, MongoDB or PostgreSQL?
Choose the database your team can operate with confidence, because that choice drives your backup, upgrade and failover work for years. PostgreSQL is released under the PostgreSQL License, which is similar to the BSD and MIT licenses, and it ships a new major version about once a year with support for each major version for five years. PostgreSQL 14 is supported until November 12, 2026, and PostgreSQL 18 until November 14, 2030, so plan upgrades against those dates. It also supports hot standby servers and synchronous or asynchronous replication. If your existing data and tooling already depend on MongoDB, factor the migration cost of changing databases into the decision.
How DeployOpen scopes and runs this migration
DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, backs up, upgrades and documents self-hosted open-source platforms inside the client's own infrastructure, including the cloud accounts, data centers or air-gapped networks where a Parse Server deployment would run. For a move off Back4app, that means the work is scoped against your actual estate: the Parse Server and Parse Dashboard versions you intend to run, the MongoDB or PostgreSQL database and its backup target, the Cloud Code functions and triggers to be redeployed, the file storage adapter (S3, GCS or the file system), push configuration, and the Parse SDK clients that must be repointed to the new server URL. Before any work starts, you should expect the scope to name who owns each of these components, which environment each runs in, and how cutover and rollback are sequenced.
Most engagements are fixed-scope. Scope, deliverables and timelines are agreed in writing before work starts, and a quote follows from that written scope rather than from a published price list, because DeployOpen does not publish one. The variables that move a quote are the number of apps and environments, the data volume and how many classes and files must be exported and validated, whether user password hashes can be carried over, how many client builds need a release, and what hardening and documentation the compliance team needs as evidence. When you request a quote, ask for each deliverable listed separately, the assumptions behind it (for example, which Back4app features you are not replacing), what is excluded, and which items are one-time versus recurring. DeployOpen prepares systems, controls and evidence for compliance assessments, but does not issue audit reports or certifications; independent auditors and certification bodies do that.
After cutover, operating Parse Server is an ongoing responsibility that a fixed-scope project does not cover by default. Ongoing support, upgrades and continuous security testing are available as retainers, which you can use to keep the Parse Server, Node.js runtime and database versions current, rehearse restores, and review the platform after changes. Confirm in the written scope which of these responsibilities sit with your team and which sit with the retainer, and confirm the backup and restore evidence you will need for your own assessments. Before signing, ask for the names of the people who will do the work, the escalation path during the first weeks in production, and how a rollback to Back4app would be executed if a problem surfaces after the client URL switch.

