Acumatica · DevOps

Acumatica Rollback Strategies

Acumatica Rollback Strategies is the Acumatica operations topic that you only get good at by doing it badly a few times.

John Kihiu12 min read

A rollback strategy is what you fall back on when a customization publish or an ERP version upgrade doesn't go the way the sandbox run suggested it would. Acumatica gives you a few distinct rollback mechanisms — database snapshots, customization unpublish/revert, and full restores from scheduled backups — and they are not interchangeable. Picking the wrong one, or not having one ready before you start, is how a ten-minute publish turns into a weekend.

Snapshots are the primary safety net

Before any risky production change — a major customization publish, a version upgrade, a bulk data import — take a database snapshot. On self-hosted instances this is done through the Instance Manager; on Acumatica Cloud it's the snapshot feature in the cloud portal. Either way, you get a point-in-time copy of the tenant database that you can restore to if the change goes wrong.

Snapshots should be tied to events, not a calendar. A nightly snapshot schedule is fine for general safety, but it's not a substitute for taking one immediately before you touch production. The snapshot you need is the one from five minutes before the bad publish, not the one from last night.

Customization rollback is not data rollback

If a bad customization is causing errors but hasn't corrupted any data yet, unpublishing it — or reverting to a previously exported version of the project via the Customization Projects screen — is the fastest fix. It's a code-level change, it doesn't touch the database, and it typically takes effect in seconds.

The trap is assuming that unpublishing "undoes" everything. It doesn't. If the broken customization already posted a GL batch, released a document, or wrote bad values into a DAC field while it was live, unpublishing removes the code but leaves the data damage in place. At that point you're not choosing between customization rollback and DB restore — you need the restore, and the customization fix is a separate, second step.

A snapshot restore rolls back everyone, not just the bad change

Restoring to a pre-publish snapshot reverts every transaction entered since that snapshot was taken — including legitimate work from other users. If detection takes two hours, you lose two hours of real invoices, receipts, and GL entries along with the bad data. Lock users out during risky publishes so the detection-to-rollback window doesn't quietly grow the blast radius.

Upgrade rollback is higher stakes than a customization rollback

Version upgrades touch schema, stored procedures, and every customization in the instance at once, so there's no equivalent to "just unpublish it." The only realistic rollback for a bad upgrade is a snapshot restore to the pre-upgrade state, which means the snapshot has to exist and be verified before you start.

Test the upgrade path on a cloned or sandbox instance first, not because it guarantees production will behave identically, but because it surfaces the customizations that won't survive the upgrade untouched — deprecated APIs, changed DAC fields, generic inquiry breakage. Fix what you can find there so production only has to absorb the unknowns.

After the upgrade completes, use a documented go/no-go checkpoint — smoke-test the core screens and any customization-heavy workflows — before opening the instance back up to all users. That checkpoint is what keeps the decision to roll back from being made three hours later with three hours of new data at stake.

A basic pre-deployment checklist

The pattern doesn't need to be elaborate. It needs to be followed every time, including the times it feels unnecessary.

TEXT · PRE-PUBLISH CHECKLIST
# Before a production customization publish or upgrade

1. Announce a maintenance window, lock out non-admin users
2. Take a snapshot via Instance Manager (self-hosted) or
   the cloud portal snapshot tool (Acumatica Cloud) — confirm
   it completed and note the snapshot name/timestamp
3. Export the current customization project(s) as a backup
   .zip from the Customization Projects screen
4. Publish / run the upgrade
5. Run the go/no-go smoke test against core screens and
   any customization-dependent workflows
6. If it fails: unpublish/revert customization first if no
   data was written; restore the snapshot if data was
   already touched
7. Only reopen the instance to all users after the checkpoint
   passes

Choosing the right rollback option

Each rollback mechanism trades recovery time against how much you lose. Match the option to what actually broke.

OptionRecovery timeData loss
Unpublish / revert customizationSeconds to minutesNone, if no bad transactions were posted while it was live
Snapshot restoreMinutes to an hour, depending on database sizeAll changes since the snapshot, including legitimate ones
Full DB restore from scheduled backupLongest — often involves infrastructure/ops, not just AcumaticaEverything since the last backup, potentially a full day

That is the working approach I use on Acumatica rollback planning. The same discipline applies whether the client is in Nairobi, Johannesburg, Kigali, Lusaka or Harare — snapshot before you touch production, know the difference between a code rollback and a data rollback, and don't let a slow detection turn a small mistake into a lost afternoon of real transactions. If you're setting up a rollback plan for an upcoming upgrade, reach out or browse more on the Acumatica blog.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.