Before you start

For guidance on how to do the deployment and configuration setup, read the procedures below or watch the Annata Dealer Portal Demo - Deployment & Configuration Setup video.

Annata 365 Service package installation

The services package is available in LCS via the ‘Annata 365 Dealer Portal’ solution. You can get the required version details suitable for you by going to the version matrix using this link.

 

Register Dynamics 365 client in Azure

The Annata 365 services are consumed by registering the Dynamics 365 F&O client in the Azure Active Directory applications. To register, go to the Azure Portal, select Azure Active Directory, and find App registrations and add a new registration.

 

Click on ‘Certificates and secrets’ and add a new client secret.


 

After the registration is completed, note down the client secret generated and Application (client) ID from ‘Overview’. You will need it for the next steps.

Configure the app in Dynamics 365 F&O

Go to System Administration -> Setup -> Azure Active Directory applications. Configure a new app by using the client ID from the previous step and assign a user.

All the communications using the registered app will be done using this user. So, make sure it has proper privileges.

Note: The portal will be linked to the default legal entity of this user.

 

Annata 365 Services – Azure Function Apps

We need to deploy the function app in the Azure portal. Use the below link to deploy the Function App using ARM template. The resource group deployed will have three components

  • Storage account
  • Azure Function App
  • App plan
Deploy Function App

 

This creates a function app with a consumption plan. Use the client Id and Client Secret recorded from the steps above. The function name would be the service prefix + resourcegroupId. You can edit the template if you want to name the function name differently just by clicking Edit template. Once deployed, note down the ‘Resource group’ and the deployed function name from the resource group for the next step.

Important: It is best to use the location nearest to the Dynamics 365 F&O deployment.

Annata 365 Dealer portal

Deploy the Dealer portal using the link below. The resource group must be different than the one used in the previous step for the services. This is because of the App plans. We cannot have two different App plans (windows and Linux) in the same resource group. The resource group deployed will have the below components:

  • Azure SQL Server
  • Azure SQL Database
  • App plan
  • 3 App services

There are two options to host the container images for app services.

Docker Hub Account

The customer/partner needs to create an account on the Docker hub and share the credentials with Annata. They also need to create a private repository in that account and share the repository name with Annata. Annata will then publish the latest version of Dealer portal to that account which will then be consumed by the app services. 

Link: Deploy Annata Dealer Portal

Azure Container Registry (Recommended if they don’t already own a docker hub account) 

The customer/partner needs to create a container registry in the Azure Portal and share the username and password with Annata. Annata will then publish the latest version of Dealer portal to that account which will then be consumed by the app services.  You can get the username and password for container registries by enabling the admin user as in the below image.

Link: Deploy Annata Dealer Portal





Annata Services Resource Group: The resource group used to deploy the Function App.
Annata Services Function Name: The deployed function app name.
Website name: Your choice of name for the portal website. However, it will be appended with the resource group Id by default from the portal to make it unique. This can be changed from the deployment template.
Docker Account: Name of the docker account
Docker Password: Password for the docker account.
Repository: Name of the private repository in the docker account.
Version: Version of the dealer portal. By default, it will have the value for the latest version.
Jwt Issuer: The name of the tenant.
Jwt Secret Key: A 256-bit hex key. You can generate the key for example by using this link Secret Key. Select security level as 256-bit and set Hex to ‘Yes’.
Once deployed, your resource group will have the following objects. The web app prefixed with ‘portal’ is the Dealer portal. The web app prefixed with backend the Dealer portal WebAPI. You can turn on the ‘App service logs’ here to view the application logs.

Updates

When a new version of the dealer portal is released, you will need to update the app services. Annata will publish the new version to your container registry repositories. You can get the version details by going to the Version matrix and check the compatible version for your deployment.
When a new version of the dealer portal is released, you will need to update the app services. Annata will publish the new version to your container registry repositories. Check the version matrix from this link to get the correct version
 

First, you need to update the Annata 365 Services Model from LCS, Function App and App Services.

A. To update the Annata 365 Services Model:
 

1. Go to LCS website, Click Asset Library.
2. On the Asset Library, click 'Solution Package’.
3. Click on 'Annata 365 Dealer Portal' and then click on the top 'Versions.'
4. Select the latest version and click 'Get Version’.
5. Go to 'Software deployable package’.
6. Select 'Annata 365 Services' and click on top 'Copy'.
7. Go to Cloud hosted environments and open the FO environment.
8. Click on 'Maintain' and then 'Apply Updates’.
9. Click on 'Annata 365 Services' and then Apply.

B. To update the Function App:

1. Go to the resource group where the function App resources are created.
2. Click on the Function App resource.
3. In the Setting section, click ‘Configuration’.
4. In the “Application Settings’, copy the values for Authority, ClientID, Client Secret and Resource.


 
5. Use the below link to update the Function App using ARM template Deploy Function App

6. In the ‘Subscription’ field, enter the subscription which was used first time to deploy the dealer portal.
7. In the ‘Resource group’ field, search for the resource group name in which the function app was already deployed.
8. In the ‘Region’ field, enter the region name in which the region name was already deployed.
9. In the ‘Resource’ field, paste the value for Resource from step 4.
10. In ‘Version’ field, select the latest version.
11. In the ‘Authority field, paste the value for Authority from step 4.
12. In the ‘ClientID’ field, paste the value for ClientID from step 4.
13. In the ‘Client Secret’ field, paste the value for Client Secret from step 4.
14. Finally, click ‘Review + create’.

C. To update the App services:
 
1. Go to the resource group where the App Services resources are created.
2. Click on the ‘backend-worker-xxxxxxx’ resource.
 
In the Setting section, click ‘Configuration’.
In the “Application Settings’, copy the values for Seed__AdminEmail, Seed__AdminPassword, Jwt__Issuer and Jwt__SecretKey.


 
3. Next go to the Container Registry created.
In the Setting section, click ‘Access Keys’ and copy the Registry Name and Password.



In the Services section, click on ‘Repositories’ and copy the repository name.

4. In the same resource group, copy the app service name for the front end (the app service which does not start with backend -api or worker).

 
5. Next, go to the resource group where the function App resources are created and copy the resource group name and the function app name as they will be needed to update the app services.
6. Use the below link to update the App Services using ARM template Deploy Annata Dealer Portal
7. In the ‘Subscription’ field, enter the subscription which was used first time to deploy the dealer portal.
8. In the ‘Resource group’ field, search for the resource group name in which the app services were already deployed.
9. In the ‘Region’ field, enter the region name in which the region name was already deployed.
10. In the ‘Annata Services Resource group’ field, enter the Function App resource group name from step 5.
11. In the ‘Annata Services Function name’ field, enter the Function App name from step 5.
12. In the ‘Website name’ field, enter the name of the front end from step 4.
13. In the ‘Admin email’ field, enter the admin username from step 2 (Seed__AdminEmail).
14 In the ‘Admin Password’ field, enter the admin password from step 2 (Seed__AdminPassword).
15. In the ‘Account name’ field, enter the Azure Container Registry name from step 3.
16. In the ‘Password’ field, enter the Azure Container Registry password from step 3.
17. In the ‘Repository’ field, enter the repository name from step 3.
18. In the ‘Jwt issuer’ field, enter the Jwt Issuer from step 2.
19. In the ‘Jwt Secret Key’ field, enter the Jwt secret key from step 2.
20. Finally, click ‘Review + create’.