Azure Blob
Azure Blob Storage is the right destination when your consumer is a downstream data pipeline, a long-term archive, or anything else that expects to pull files from an object store. It's not a great choice for BI consumers. Excel, Power BI, and Tableau can read from Blob, but they read from SharePoint and Google Drive more gracefully. Pick Blob when the consumer is a service, not a person.
Register an Azure AD app (one-time, per tenant)
Outpost authenticates to Azure Blob using the same client credentials flow as SharePoint and OneDrive. If you already registered an Outpost SuiteApp for those destinations, you can reuse it. Just assign the RBAC role in the next section.
- Sign in to the Azure Portal
- Azure Active Directory → App registrations → New registration, name it
Outpost SuiteApp, single-tenant - Note the Application (client) ID and Directory (tenant) ID
- Certificates & secrets → New client secret, copy the secret value
No API permissions need to be added in the registration itself. Azure Storage access is controlled by RBAC on the storage account, not by Graph API scopes.
Grant the app access to the storage account
- In Azure Portal, open the Storage account you want Outpost to write to
- Go to Access Control (IAM) → Add → Add role assignment
- Select the role Storage Blob Data Contributor
- Under Members, pick User, group, or service principal and search for the app registration by name (
Outpost SuiteApp) - Save
If you're locked down to container-level permissions, scope the role assignment to the individual container instead of the whole storage account. In that case, Outpost can't auto-create the container. It must already exist before you create the Connection.
Create the Connection in Outpost
- Open Outpost by VCG → Connections
- Click New Connection and pick Azure Blob
- Fill in:
- Connection name. e.g.
Data Lake Landing Zone. - Storage account name. The account name only, no
.blob.core.windows.netsuffix, e.g.contosodatalake. - Container / prefix. The container name, optionally followed by a prefix inside it, e.g.
exports/finance/daily. The first segment is the container; anything after is a blob key prefix. - Application (Client) ID, Directory (Tenant) ID, Client secret. From the Azure app registration.
- Connection name. e.g.
- Click Test connection. Outpost acquires a token, checks or creates the container (if account-level RBAC is in place), and writes and deletes a probe blob.
- Click Save.
Configure folder and filename on the export template
Same token system as every other destination. Inside Blob, the "folder" is really a key prefix. Outpost treats forward-slash-separated segments as hierarchical paths for display purposes. Example filename:
ar_aging_{date}.csvWith a container/prefix of exports/finance/daily, the full blob key becomes exports/finance/daily/ar_aging_2026-04-08.csv.
What to expect on delivery
- File format: CSV, UTF-8, with a header row
- Blob type: Block blob, standard tier
- Overwrite behavior: Outpost overwrites the blob at the same key on every run unless the filename contains a token
- Container creation: If the container doesn't exist and account-level RBAC allows it, Outpost creates it on first use. Otherwise the container must be pre-created in Azure Portal.
Tips & gotchas
- Storage account name only, no suffix. The Connection form asks for
contosodatalake, notcontosodatalake.blob.core.windows.net. Outpost builds the full endpoint URL internally. - RBAC propagation is not instant. If you granted the role recently, Azure can take up to 5 minutes to honor it. If Test connection fails with a 403 immediately after role assignment, wait and retry before debugging.
- Containers vs. prefixes. The first segment of the "Container / prefix" field is always treated as the container name. Everything after is a blob key prefix. Don't put slashes at the start, and don't include the storage account in this field.
- No SAS tokens, no account keys. Outpost intentionally uses Azure AD identity, not static credentials. This gives you a full audit trail via the storage account's diagnostic logs and lets you rotate secrets via Azure AD rather than the storage account itself.
- Lifecycle management is your job. Azure Blob doesn't auto-expire old files. If you want to keep only the last 90 days of daily exports, configure a lifecycle management rule on the storage account.
Permissions & access control
Access to files written by Outpost is controlled entirely by the storage account's RBAC and network rules. Outpost writes the file; whoever has Storage Blob Data Reader or stronger on the account (or specific container) can read it.
For sensitive data:
- Put the container inside a private-endpoint-enabled storage account so only resources inside your VNet can read it
- Use container-scoped RBAC rather than account-scoped
- Enable storage account diagnostic logs so you have a full audit trail of who read which blob when
When to pick Azure Blob (and when not to)
Troubleshooting
403 AuthorizationPermissionMismatch. The app registration doesn't haveStorage Blob Data Contributoron the storage account yet, or RBAC hasn't propagated. Wait 5 minutes and retry.404 ContainerNotFoundand Outpost can't auto-create it. Your RBAC is scoped to a specific container, not the whole account. Pre-create the container in Azure Portal.AADSTS7000215: Invalid client secret. The secret expired or was copied wrong. Generate a new one in Azure Portal and update the Connection.- Test works, scheduled runs fail. Usually a secret expiry. Rotate the secret.