AI Agents · Integration

Acumatica Azure Blob Storage Integration — A Complete Guide

Acumatica Azure Blob Storage Integration — A Complete Guide is the kind of integration that pays for itself the first time it runs without intervention.

John Kihiu12 min read

By default Acumatica stores uploaded files — attachments, generated reports, imported documents — as rows in the database. Move a busy tenant's attachments to Azure Blob Storage and the database gets smaller, backups get faster, and file storage becomes something you can scale independently. Acumatica supports this natively through its file storage provider mechanism; there is no custom code required for the standard case.

Why move files out of the database

Storing binaries in SQL Server is convenient — one backup covers everything, transactional consistency is free — but it does not age well. Attachments are usually the largest and fastest-growing part of an ERP database, and every one of those bytes rides along in every full backup, every restore, and every copy to a test environment. Moving files to blob storage keeps the database focused on relational data, shrinks backup windows dramatically, and lets you apply cheaper storage tiers to files that are rarely read.

The trade-off you are accepting

Files in blob storage are no longer inside the database transaction or the database backup. Your recovery plan now has two moving parts — the database and the blob container — and they must be restored to consistent points in time. This is manageable, but it is a real change to your DR story, not a free win.

How the file storage provider works

Acumatica abstracts file storage behind a provider. Out of the box it ships a database provider and cloud providers including Azure Blob Storage. You configure the provider, and thereafter every UploadFile that flows through the framework is written to blob storage instead of the UploadFileRevision table. Crucially, the file metadata (name, note references, which record it is attached to) stays in the database — only the binary content moves. That means all the existing attachment UI keeps working unchanged; users never see where the bytes actually live.

Configuring the Azure side

On Azure, create a storage account and a private blob container dedicated to Acumatica. Keep the container private — these are business documents, and public access is never appropriate. Grab the connection string (or, better, use a managed identity / shared access signature depending on your security posture). A few Azure-side choices matter:

TEXT · ACUMATICA FILE STORAGE SETUP
File Storage Preferences / Provider config:
  Provider          : Azure Blob Storage
  Connection string : DefaultEndpointsProtocol=https;AccountName=...;
                      AccountKey=...;EndpointSuffix=core.windows.net
  Container         : acumatica-attachments   (private access)

Scope: choose which files use the provider
  - new uploads only, or
  - migrate existing UploadFileRevision rows via the move process

Migrating existing files

Switching the provider only changes where new files go. Existing attachments already sitting in the database do not move by themselves — Acumatica provides a process to relocate them from the database provider to blob storage. Run it in batches, outside business hours, and verify a sample of migrated files opens correctly before you consider the migration complete. Do not delete the database copies until you have confirmed the blob copies are readable; a migration that reports success but leaves unreadable blobs is the worst-case outcome.

Test restore of both halves together

After migrating, run a real disaster-recovery drill: restore the database to a point in time and confirm the attachments (now in Azure) still resolve. If the blob container and the database drift apart, users get broken attachment links with no obvious cause. Snapshot or version the container so you can restore it to match a database restore point.

Operational considerations

Once files live in Azure, a few things change day to day. File access adds network latency, so a slow or throttled storage account shows up as slow attachment opens — monitor the storage account's metrics, not just the app server. Costs move from database storage to blob storage plus egress; egress is usually small for internal use but worth watching if you serve large documents to external portals. And security now spans two systems: the container's access keys are as sensitive as a database credential, so rotate them, store them in a secret store rather than plaintext config where possible, and keep the container private.

ConcernDatabase storageAzure Blob Storage
Backup sizeLarge — files includedSmall — files excluded
ScalingTied to DB tierIndependent, cheap
ConsistencyTransactional, one backupTwo systems to keep in sync
File open latencyLocal DB readNetwork round trip
Cost profilePremium DB storageTiered blob + egress

Wrapping up

Offloading Acumatica attachments to Azure Blob Storage is one of the higher-value infrastructure changes available without custom code: smaller database, faster backups, independent scaling. The catch is that it splits your data across two systems, so the work that matters is not the configuration screen — it is the migration verification and the DR drill that proves database and blobs restore together. Get those right and this is a change you set once and stop thinking about.

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.