Storage providers connect XEOX to your own file storage. Once a provider is configured you can use it in automations to download files (for example installers or config files) onto managed devices and to upload files (for example logs or reports) from devices into your storage.
Files are transferred directly between the device and the storage provider. They never pass through XEOX, and the device never sees the provider's credentials. XEOX only hands the device a short-lived, pre-authorised link.
Supported provider types:
Type | Typical use |
Amazon S3 / S3 compatible | Amazon S3, MinIO, DigitalOcean Spaces, Wasabi, Ceph and other S3 compatible services |
SharePoint / OneDrive (Microsoft Graph) | A document library of a SharePoint site in your Microsoft 365 tenant |
Nextcloud | A self-hosted or hosted Nextcloud instance |
Note: Plain WebDAV servers are not supported. The Nextcloud provider needs the Nextcloud sharing API to create download and upload links.
Requirements
- You need the Organisation administrator role to manage storage providers.
- The Upload to storage provider action requires XEOX agent version 2.4.0.90 or newer on the device.
- The storage backend must be reachable from the XEOX servers (for the connection test and file browser) and from your managed devices (for the actual file transfer).
Where to find storage providers
- Open Administration - Integrations.
- Click the Storage Providers card.

The list shows all configured providers with their type, whether they are the default provider, and whether they are enabled.

The … menu of each row offers Test connection, Open file browser and Delete.

How to create a storage provider
- In the storage provider list click Create.
- Select the Provider type. The type cannot be changed after the provider has been saved.
- Enter a Name. This name is shown in automations and file pickers.
- Fill in the Connection fields of the selected type (see the sections below).
- Click Test connection to verify the configuration. The result is shown directly below the connection fields.
- Click Save.



Options
- Use as default storage provider - uploads and automations use this provider unless another one is selected explicitly. Only one provider can be the default, and a disabled provider cannot be the default.
- Enabled - disabled providers are kept but no longer offered in automations and file pickers. Automation actions that still reference a disabled provider fail until it is enabled again or a different provider is chosen.
Tip: When editing an existing provider, secret fields (secret key, client secret, app password) are shown empty. Leave them blank to keep the current value.
Amazon S3 / S3 compatible

Prerequisites
- Create a bucket (or choose an existing one).
- Create an access key for a user that may access the bucket. The key needs the following permissions on the bucket:
s3:ListBuckets3:GetObjects3:PutObjects3:DeleteObject
Example IAM policy for Amazon S3 (replace my-bucket):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::my-bucket"
},
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}Connection settings
Field | Description |
Region | The region of the bucket, e.g. eu-central-1. For S3 compatible services enter the region name the service uses (e.g. fra1 for DigitalOcean Spaces, us-east-1 for most MinIO setups). |
Bucket | Name of the bucket. |
Endpoint (optional) | Leave empty for Amazon S3. For S3 compatible services enter the service URL, e.g. https://fra1.digitaloceanspaces.com or https://minio.example.com. |
Key prefix (optional) | Folder inside the bucket that XEOX uses, e.g. xeox. All files are stored below this prefix. |
Path style access | Enable for MinIO and most self-hosted S3 compatible services. Leave disabled for Amazon S3, DigitalOcean Spaces and Wasabi. |
Access key | The access key ID. |
Secret key | The secret access key. |
Good to know
- Download and upload links for S3 are valid for at most 7 days. Longer automation runtimes are capped at this limit.
- A single upload from a device is limited to 5 GB per file.
Troubleshooting
Message | What to check |
Signature mismatch (HTTP 403) | The secret key is wrong, or the Region does not match the service. For S3 compatible services the region must be the service's own region (e.g. fra1), not an AWS region. |
Access denied (HTTP 403) | The access key is not allowed to list the bucket. Check the permissions above, and for S3 compatible services also check region, endpoint and Path style access. |
Bucket not found (HTTP 404) | The bucket name or the endpoint is wrong. |
Could not resolve the host | The endpoint URL contains a typo or is not reachable from XEOX. |
SharePoint / OneDrive (Microsoft Graph)
XEOX stores files in the default document library of a SharePoint site. Access is granted through an app registration in Microsoft Entra ID (Azure AD) using application permissions, so no user account is needed.

Prerequisites: create an app registration
- Sign in to the Azure portal as a global administrator.
- Open Microsoft Entra ID - App registrations - New registration.
- Enter a name (e.g.
XEOX Storage), keep Accounts in this organizational directory only and click Register.
- On the overview page note the Application (client) ID and the Directory (tenant) ID.
- Open Certificates & secrets - New client secret. Choose an expiry and click Add. Copy the secret Value immediately, it is only shown once.
- Open API permissions - Add a permission - Microsoft Graph - Application permissions.
- Select Sites.ReadWrite.All and click Add permissions.
- Click Grant admin consent for <your tenant> and confirm.
Note: Without admin consent the connection test fails with an authorisation error.
Connection settings
Field | Description |
Tenant ID | The Directory (tenant) ID from the app registration, or your tenant domain, e.g. contoso.onmicrosoft.com. |
Application (client) ID | The Application (client) ID from the app registration. |
Site URL | The full URL of the SharePoint site, e.g. https://contoso.sharepoint.com/sites/Team. Files are stored in the site's default document library (usually "Documents"). |
Folder (optional) | Folder inside the document library that XEOX uses, e.g. xeox. |
Client secret | The client secret value from the app registration. |
Good to know
- A single upload from a device is limited to 60 MB per file.
- Download links are valid for about one hour.
- Client secrets expire. Create a new secret before the old one expires and update the provider, otherwise transfers stop working.
Troubleshooting
Message | What to check |
Authentication failed / token error | Tenant ID, client ID or client secret is wrong, or the secret has expired. |
Insufficient privileges / access denied | The application permission Sites.ReadWrite.All is missing or admin consent has not been granted. Make sure it is an application permission, not a delegated one. |
Site not found | The Site URL is wrong. Use the URL of the site itself, not of a document library or folder. |
Nextcloud
XEOX stores files in the files area of a Nextcloud user and creates public share links for downloads and uploads.

Prerequisites
- Sharing via link must be allowed on the Nextcloud instance: Administration settings - Sharing - Allow users to share via link. For uploads from devices, Allow public uploads must be enabled as well.
- Create an app password for the Nextcloud user XEOX should use:
- Log in to Nextcloud as that user.
- Open Settings - Security.
- Under Devices & sessions enter a name (e.g.
XEOX) and click Create new app password. - Copy the generated password.
App passwords also work when two-factor authentication is enabled for the user.
Connection settings
Field | Description |
Nextcloud server URL | Base URL of the instance, e.g. https://cloud.example.com. |
Nextcloud user | Login name of the user. |
Folder (optional) | Folder inside the user's files that XEOX uses, e.g. xeox. It is created automatically if it does not exist. |
App password | The app password created above. |
Recommendation: Set a Folder. Nextcloud cannot create upload links for the root folder of a user, so uploads from devices only work into a folder. If no folder is configured, a folder has to be picked in the upload action.
Good to know
- Share links created by XEOX expire automatically. If your Nextcloud administrator enforces a maximum link lifetime, XEOX uses that limit.
- The maximum upload size is limited by the free quota of the Nextcloud user.
- Only real Nextcloud instances are supported. A plain WebDAV server is rejected by the connection test.
Troubleshooting
Message | What to check |
Authentication failed (check username / app password) | The user name or app password is wrong. |
The server does not offer the Nextcloud sharing API (OCS) | The URL does not point at a Nextcloud instance, or it points at a sub path (e.g. the WebDAV endpoint) instead of the base URL. |
Share creation rejected | Sharing via link is disabled for the user or the instance. Check the sharing settings above. |
Cannot create an upload link in the root folder | Set a Folder on the provider or pick a folder in the upload action. |
Browsing files
Click Open file browser (in the row menu or on the provider page) to see the files XEOX can access. The browser is read-only: files are managed in the storage backend itself. Click the link icon next to a file to generate a temporary download link.

Using storage providers in automations
Two automation actions use storage providers:
- Download from storage provider - downloads a file from the provider onto the target device. Pick the provider, choose the file in the file browser and optionally set a destination directory. Without a destination the file is downloaded to the task's working directory.
- Upload to storage provider - uploads a file from the target device into a folder of the provider. Enter the full path of the file on the device (e.g.
C:\logs\report.zip), pick the provider and the destination folder, and optionally a new file name.
The results of these actions are shown in the task result under Download results and Upload results, including the storage provider, the file key, transfer size, speed and checksum. Generate download link creates a temporary link (15 minutes to 24 hours) to fetch an uploaded file.
Managing storage providers
- Edit - click the provider name in the list. The provider type cannot be changed; create a new provider instead.
- Disable - untick Enabled on the provider page. The provider is kept but no longer offered in automations and file pickers.
- Delete - choose Delete from the row menu. Files that were stored through the provider are not deleted in the backend, but they are no longer accessible from XEOX.
