CAM Azure Stack utilizes Microsoft Azure services and resources to provide the ability to move documents and content and sync metadata between multiple Document Management Systems (DMS). CAM Content Mover and Data Sync (Content Sync) use Azure storage blobs as an intermediary place while moving content between the supported Document Management Systems.
To deploy the CAM Azure Stack, you need to deploy the Azure template into your Azure environment. The template deploys a complete solution that contains multiple resources such as function apps, MySQL instances, Blob Storages, and others. These resources are provided and hosted by Microsoft Azure in your Azure account to provide more control over moving content.
As of January 30, 2021, Azure is not allowing custom token expiry settings. The conditional access policies determine how the token expires are configured. This requires at least a P1 license in Azure. See the Microsoft link here. |
Content Mover in CAM uses REST APIs to work with 7 functions, 4 queues, and two triggers to move content.
Data Sync (Content Sync) uses REST APIs to work with 3 functions, 1 queue, and one trigger to sync content.
Requirements
|
Create a Resource Group
![]() 2. Click Create from the Resource groups toolbar. ![]() 3. Enter the following resource group details on the Create a Resource group page:
4. Click Review + Create to validate and create new resource groups. 5. Click Next: Tags > to navigate to the next screen. Please skip entering any tags as they aren’t required. 6. Click Review + Create to validate and create new Resource groups successfully. The Validation passed message is displayed if validation passes successfully.
|
Deploying CAM Azure Stack to the Azure Subscription
![]() ![]() 5. Enter the following project details for your Azure deployment:
6. Click Review + Create - Validates and create the template if the validation passes as displayed in the following screen. 7. If the form is valid, then the message Validation passed will be displayed. Now, click the Create button to start the deployment process. ![]()
2. The deployment process takes a few minutes to complete. The resources are created one after the other. ![]()
3. Once the deployment is completed successfully, you can see the following screen. ![]()
Flexible Server from Single Server ConfigurationThese steps are used to convert a single server deployment to the flexible server as designated by Azure.
Update the server configuration within the CAM config yml file next.
Note: Single server username format is username@servername eg: abc@mysql-clientname-io Flexible Server FAQs
|
Initialize CAM Azure Stack Configuration
2. Click Outputs, from the template deployment page left panel. 3. The following screen is displayed. Copy the initializeFunctionUrl and paste it into your Internet browser’s URL address bar. ![]() 4. The initialization function process URL will respond with the initialization status in JSON format. A successful response looks like the following: ![]() 5. Display the bucketname. 6. Display the apiEndPointBaseUrl.
|
Azure CLI: Ensure Azure CLI is installed on your machine. You can download it from Microsoft here: https://learn.microsoft.com/en-us/cli/azure/
Administrator Access: Open Powershell with the “Run as administrator“ privilege.
Go to the Github repo: https://github.com/Prosperoware/cam-azure-deployment .
Download functionAppsCodeUpdate.ps1
Function App: The function app should already be created in the Client stack otherwise this Powershell script will fail.
Important notes: |
If you haven’t logged in via az login
, The script will prompt you to log in through a browser. Please use the Azure account associated with your client stack deployment.
If the wrong account is used , you will be prompted to log in again , with up to three attempts allowed.
The script will prompt you to enter the resource group name where your stack is deployed.
If an incorrect resource group is entered, you will be prompted to re-enter the correct name, with up to three attempts allowed.
The script will list all function apps targeted for the JAR upgrade.
It will automatically determine whether to update ETL (Content Mover), ContentSync (Data Sync), or both options, based on the function apps present in your resource group.
The script will maintain a log file named CAM_Azure_Stack_log_timestamp.txt
to record the latest operations
Older logs will be deleted each time the script runs.
The script will download and upload the ZIP file from the same directory where 'functionAppsCodeUpdate.ps1' is located.
After running the functionappsCodeupdate script the jar files will be updated automatically.
Configure CAM Content Mover to Utilize your Azure Stack
2. Navigate to your CAM instance, click Administration > click Content Mover. The following screen appears: ![]() 3. Navigate to the Configuration tab, the following screen appears: ![]()
4. Click Save to save the configuration. 5. Click Cancel to close the configuration screen without saving any changes to the fields. 6. If using Data Sync, repeat the above steps but after clicking Administration- Data Sync |
Configure CAM Data Sync to Utilize your Azure Stack
2. Navigate to your CAM instance, click Administration >> click Data Sync, and the following screen appears. ![]() 3. Navigate to the Content Sync Settings tab, and the following screen appears: ![]()
4. Click Save to save the configuration. 5. Click Cancel to close the configuration screen. |
When using Azure Stack, Azure Storage bucket retention rules are used to delete the files from the at rest data using Data Sync or Data Uploader appropriately. The rules are: #NameOfRule - Example DeleteAfter30Days #daysafterModificationGreaterThan: = #NumberofDays
|
Optional Azure Resources Configurations
|
Deployment Errors, Workarounds, and SolutionsIn this section, we are going to document:
Finding logs and running queries for troubleshooting on MS AzureOn MS Azure, go to the resource group on the left-top corner click on Logs, and select one of the entries. Entries in this list will be tied to one of these: All Queries, Alerts, Browsing Data, Performance, and Reports Failures. ![]() Workarounds and Solutions for Common Errors
|
![]() |
All resources created by CAM Azure Stack will be secured using the Azure standard security. Permission will only be granted to the CAM function apps and other CAM Azure Stack resources in the same resource group. No users, accounts, or external apps will be granted access by default except what the Azure subscription administrator has setup previously (inheritance rules). The details of permissions are as follows:
Except for the CAM Azure Stack function apps, none of the resources in the resource group will be accessed externally. For the MySQL Database, the option to “Allow access to Azure services” is enabled during the deployment process and all other IPs are restricted by default. Even though the function apps will be accessed externally, those will be accessed by CAM instance only. If you plan to restrict the function apps inbound IP’s, the Litera Customer Care team (support@litera.com) can provide the list of IPs that should be whitelisted based on your CAM instance Zone. The current list of IPs can be found at iManage . For additional security, the data container in the storage account will be encrypted using Microsoft-managed-keys encryption scope. After the template deployment, this encryption scope can be updated to use your managed keys or to use an encryption with a key in the managed HSM as explained in the following MS article (https://docs.microsoft.com/en-us/azure/storage/common/customer-managed-keys-configure-key-vault-hsm ). Managing Security of the Azure Client StackIn addition to the strong security provided by MS Azure, Litera strengthens data security by controlling and filtering access to even the virtual private clouds hosted by industry-leading cloud services such as MS Azure. While managing the Azure cloud, customers can also take precautions to detect and prevent suspicious activities. Litera helps you to track and monitor logs, audit system calls, and set up alerts for potential intrusions. Litera’s systems support the latest secure cypher suites, including TLS 1.2 and later protocols, AES256 encryption, and SHA2 signatures.
Communication in CAM is completely secure as it happens between the AWS and Azure clouds. By default, SSL is set to False in the templates. However, when you set SSL to True, it works only for some regions. Communication in CAM is completely secure as it happens between the AWS and Azure clouds. By default, SSL is set to False in the templates. However, when you set SSL to True, it works only for some regions.
As part of our disaster recovery plan, Litera provides secure-tested backups. Data is backed up automatically and the backups are encrypted and stored securely. |
While upgrading your Azure Stack deployment with a new build, you can find the parameters of your past deployments on the Inputs tab of the Microsoft Templates page.
While upgrading your Azure Stack deployment with a new build, you can find the parameters of your past deployments on the Inputs tab of the Microsoft Templates page.
To Setup SSL on the MYSQL database, set the following on the appconfig.yml in Content Mover:
useSSL = True
requireSSL = True
Log into Azure DevOps at the https://dev.azure.com/
In the right-hand corner select User Settings and then Personal access tokens
Create the PAT for the deployment - This token will be used only for the setup and the Expiration can be set for only 1 day.
a. Select the New Token option.
b. Select a Name for the token, and organization where you will deploy, and expiration. For the expiration select one day using the Custom Defined option.
c. In the scope section select:
Agent Pools | Read & manage |
Build | Read & execute |
Code | Read & write |
Connected Server | Connected Server |
Deployment Groups | Read & manage |
Environment | Read & manage |
Project & Team | Read, write & manage |
Release | Read, write, execute & manage |
Secure Files | Read, create & manage |
Service Connections | Read, query & manage |
Variable Groups | Read, create & manage |
a. Select New Token”option.
b. Select a Name for the token, organization where you will deploy, and expiration. For the expiration, select at least 12 months. This token will have to be rotated when it is close to the expiration date.
c. In the scope section select:
Code | Read & write |
Configuring a token expiration of one year is recommended for security purposes. Upon expiration of the token, the token must be refreshed with CAM manually or updates of the Content Mover software will be prevented from automatically deploying to your environment.
|
Caution: By design, after successfully adding a client token, the userid and password details associated with that user will show empty if a user tries to edit that client token. |
Syncing Content from M365 to DMS | Configuring Data Sync