The Straatos Cloud Archive provides a means to store- and retrieve documents and metadata in an archive. The data can be archived in the customers Azure environment, or alternatively, CumulusPro can host the archive in our data centers. This document describes how the Straatos Cloud Archive can be configured in the customers Azure cloud environment.
The archive uses an Archive Connector that connects to a SQL database, Azure AI Search and Azure Storage and uses an Azure Key vault to store all secrets- and passwords.
Via the CumulusPro BPM platform (workflow) the documents can be uploaded to the archive via our CumulusPro Archive Connector. Retrieving documents can be done via our CumulusPro Web User Interface (TaskUI) and/or via a secure REST API.

The following resources are required and have to be created in the customers Azure environment, and it is highly recommended to create all azure resources in the same Azure region (example West Europe):
A resource group is a container that holds related resources for an Azure solution. The resource group can include all the resources for the solution, or only those resources that you want to manage as a group. Below is an example of a resource group - and you can choose your own name for this group:

The Straatos Archive Connector runs on an Azure Web App Service which you can create in the Azure Portal. When creating the app service, ensure the app service uses the following configuration:
.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kemY4dnF2MjRlcWhnLmNsb3VkZnJvbnQubmV0L3VzZXJmaWxlcy8zMzg1LzUwNDYvY2tmaW5kZXIvaW1hZ2VzL3F1LzE2NTMvaW1hZ2UoMSkucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzY1ODYwMDk2fX19XX0_&Signature=PVGXu4lIiNFEFDRrSJ8F1CuQpJG77U8lQcev8qw8FJmlrFYEN4cTsSUCmOJv2e-HBCTpc51i9WN3b5G14lv3QmfEUVBU~rrUG~vY97GwTHKrrNPZ-RfDC7edw2O~4hhgcq5HaTKViWhjpqBajcv1QR~8tYz4ah5q~dbmCdsizqgIWA9cIjYIe0a69AdNQWLQO9WGFelw7xCLOoknZWuNy~~3WvZo1r3zAlUytfQLPd2-Qm-JoRxst1uyUFfeKoXgZ-qiwNS3j8YMH0LmCaSC9nMa1q4s7oAYVhHFysIbRw-IlFtm-BkuvvShPgtbL2eUJy7xs0QUuVqXoaoBZXml3g__&Key-Pair-Id=K2TK3EG287XSFC)
| Name | Web App Service Name (example above: webapp-cpro-archive ) |
| Publish | Code |
| Runtime Stack | .Net 7 (STS) |
| Operating System | Windows |
| Region | Same region as the other resources (example above: West Europe ) |
| Pricing Plan |
The size of the Archive Connector service depends on the usage (example: the amount of documents that are stored and retrieved). We recommend starting with a Standard S2 plan and adjusting the sizing based on peak usage for optimal performance. |
Azure AI Search provides secure retrieval of documents that are stored in the archive. When creating this component - please use the following recommended settings:

Azure Key Vault is a cloud service that provides a secure store for secrets. You can securely store keys, passwords, certificates, and other secrets. Azure key vaults can be created and managed through the Azure portal.



The Azure storage account contains all archived documents. When creating this component - please use the following recommended settings:

The Azure SQL Database is used to store all metadata / indexfields of all stored documents. Also, it contains the setup configuration of the Archive. You can make use of an existing database server in your own subscription. Both vCore and elastic pool databases are supported. A database should be created as follows:

Below is an overview of all components that you have created:

This chapter will describe the complete configuration of all Azure components in the customer Azure environment.
The complete archive setup/configuration is done in the App Service - and for this - you need the archive connector zip file (ArchiveConnector.zip).
This ZIP file will be provided by CumulusPro and please contact CumulusPro to obtain the latest version of this ZIP file (support@cumuluspro.com).
After you have received this file - please follow the following steps:




After the ZIP file is deployed - you can edit / modify the appsettings.json file. The purpose of this appsettings.json file is to configure the complete archive setup when there is no key vault available at the customer site.

Make sure the different sections are commented "out" by adding the underscore ( _ ) before each setting:

Note: Do this for every section- and key in the appsettings.json file
Web App Configuration

Create the following Web Application settings:

Note: please use your own created key vault name value
Note: please use your own created storage account name value
The value of the SearchIndex:IndexUri can be found in the Azure AI Search


Note: please use your own created Index Name value

Setup Managed Identity on the Web App
To enable the Managed Identity on the Web App:

Key vault access always uses Managed Identity and below is a description of how to set up Azure role-based access control on the Azure Key Vault







Add the database connection string to the Key Vault
Note: In order to create any secrets in the Key Vault - be sure that you have enough user rights


The database user specified should have the following access rights on the database:
If needed, these access rights can be revoked after the first (successful) startup.
Azure AI Search uses Managed Identity and below is a description of how to set up Azure role-based access control on the Azure AI Search







The Azure Storage Account is responsible for storing all documents in the archive. Therefore, the following settings must be applied:

Add the new created Azure Storage Account Container to Azure Web Application settings:


The Azure Storage Accounts also work with Managed Identity and you have to set the correct role rights so the Azure Web App can have access to the Azure Storage container you have just created:



NOTE: The Azure Service Bus will be configured in the CumulusPro Azure environment - so CumulusPro Professional Services will take care of the settings below
Create two new Queues in the Azure Service Bus - the "archive-result" is a mandatory queue and must have this name:

Add another queue - you can use your own name:

The following queues are now created:

Add the new created Azure Servicebus queue to the Azure Web Application settings:


Service bus Shared Access Policy
Create a Share Access Policy on the service bus:

Add the "Primary Connection String" to the Key vault


Create a secret
Example: Endpoint=sb://servicebuscproarchive.servicebus.windows.net/;SharedAccessKeyName=sharedcpro;SharedAccessKey=......

You will now have the following secrets in the Key Vault:

If the Azure API Management is used, then the following API calls to the archive connector need to be configured. The curl commands below do not include the body or the Authorization (Bearer Token). Highlighted parts are parameters that change between calls.
curl -X 'PUT'
'https://<your domain>/API/Document/<documentId>/SetLegalHold'
-H 'accept: */*'
curl -X 'PUT'
'https://<your domain>/API/Document/<documentId>/UnSetLegalHold'
-H 'accept: */*'
curl -X 'DELETE'
'https://<your domain>/API/Document/<documentId>/DeleteDocument'
-H 'accept: */*'
curl -X 'GET'
'https://<your domain>/API/File/<file>'
-H 'accept: */*'
curl -X 'GET'
'https://<your domain>/API/Index'
-H 'accept: application/json'
curl -X 'POST'
'https://<your domain>/API/Index/AddField'
-H 'accept: */*'
-H 'Content-Type: application/json-patch+json'
curl -X 'POST'
'https://<your domain>/API/Index/RemoveField'
-H 'accept: */*'
-H 'Content-Type: application/json-patch+json'
curl -X 'POST'
'https://<your domain>/API/Index/RemoveDocumentField'
-H 'accept: */*'
-H 'Content-Type: application/json-patch+json'
curl -X 'POST'
'https://<your domain>/API/Index/RebuildIndex'
-H 'accept: */*'
-H 'Content-Type: application/json-patch+json'
curl -X 'GET'
'https://<your domain>/API/Index/ListIndexes?definitionId=<definitionId>'
-H 'accept: application/json'
curl -X 'POST'
'https://<your domain>/API/Index/ActivateIndex?definitionId=<definitionId>'
-H 'accept: */*'
curl -X 'POST'
'https://<your domain>/API/Index/CancelRebuild'
-H 'accept: */*'
curl -X 'POST'
'https://<your domain>/API/Index/ResumeRebuild?definitionId=<definitionId>'
-H 'accept: */*'
curl -X 'GET'
'https://<your domain>/API/Index/IndexingLogs?limit=<limit>&order=<desc/asc>'
-H 'accept: application/json'
curl -X 'POST'
'https://<your domain>/API/Search'
-H 'accept: application/json'
-H 'Content-Type: application/json-patch+json'
After you have configured all Azure resources - you can test if the Archive is working:


.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kemY4dnF2MjRlcWhnLmNsb3VkZnJvbnQubmV0L3VzZXJmaWxlcy8zMzg1LzUwNDYvY2tmaW5kZXIvaW1hZ2VzL3F1LzgxMTUvaW1hZ2UoMSkucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzY1ODYwMDk2fX19XX0_&Signature=hPGtzf0mf3xVv9xhS0V9Z-ZhzQLrvd89OSn6FwyzNyg7xX-o0JH-isqjICw4oa2W3vlmHRArugZIpJRbTvolBkmQtCJuZXR6DZc-PNR1KqSWbqZB-MxpBeC3zSC9h9Rq8Vdxy6MyLgvEcQsJZ8QjSaroYcXhZS7K60FWrlHT3oj0D~YYtRlXAA7q3vwUHxrKLCCBqb2J9-qFyBEvd~X9cMpfQtJpy4yLmWXZBCykBhf9nKlmpCzOwXEg~N9M1ls~L7H3rARvLZKIIg-sFelQmtKKNn9ZsfTnnQ6xtLbAXXjwW7A1nL69adyW2x03u9r2U0G8wz89kB4PXrtmWKY0qA__&Key-Pair-Id=K2TK3EG287XSFC)




If there are no error messages, you can test the complete configuration by opening a browser and using the following URL:

In case of a successful deployment, you will get the following response:

This chapter describes the actions that have to be done by CumulusPro.
As an Organisation Admin, create an ArchiveDefinition, with an archiveconnector url pointing to the ArchiveConnector.