Table of contents
- Introduction
- 1. Find Key Values
- 2. Note Custom Domain Parameters
- 3. Note SQL Server Admin Details
- 4. Get Flow API Parameters
- 5. Build the Bicep Parameter File
- 6. Key Additional Parameters
- Checklist for Bicep Parameters
Introduction
This guide outlines how to prepare and configure your Bicep parameter file to deploy the necessary Azure resources for ILAP Analytics.
1. Find Key Values
You need the following values to configure your parameter file: clientId, tenantId, and audience.
Steps:
Go to the Azure Portal and search for Entra ID.
Under the Overview tab, locate the
tenantId. Copy this value.Navigate to App Registrations in the left menu.
Search for your Analytics API (created during API registration).
Copy the
clientIdfrom the application.
Under Expose an API, copy the
Application ID URI. This will be the value for youraudienceparameter.
2. Note Custom Domain Parameters
If you're using custom domains:
Document the custom domain names you created during the prerequisites setup.
Note the Key Vault name, resource group, and certificate names associated with these custom domains.
3. Note SQL Server Admin Details
To configure SQL Server, note:
The User Principal Name of the Azure AD admin for your SQL Server:
Go to Entra ID > Users, and search for the intended admin.
The Object ID for this user.
4. Get Flow API Parameters
To configure ILAP Analytics' connection to the Flow API:
Select the appropriate environment URL:
Dev:
https://dev.ilapdataexchange.promineo.no/api/apiBeta:
https://beta.ilapdataexchange.promineo.no/api/apiProd:
https://ilap.collabor8.no/api/api
Log in to the Flow UI of your target environment and:
Go to Analytics Client.
Click Add New Component, provide a name and description, and create it.
From the three-dot menu of the created component, select Service Tokens and Add New Token.
Set an expiration date and click Create.
Copy the generated access token and store it securely.
5. Build the Bicep Parameter File
With all the required values, create a .bicepparam file and paste the following code as follows:
Code:
using 'main.bicep'
var env = 'dev' // Your environment name. Example: test, beta, prod etc.
var company = 'promineo' // Your company name
param azureAd = {
clientId: '5f9d20ce-8ac7-4115-80a7-2f1b2acd7bda' // client id from step-1
instance:'https://login.microsoftonline.com/'
tenantId:'e8ddb777-121f-4abc-a113-6b91d4b5defc' // tenant id from step-1
audience:'api://5f9d20ce-8ac7-4115-80a7-2f1b2acd7bda' // audience from step-1
}
// Note: if useCustomDomain is false, then leave customDomain and certficateName parameters as is.
param webAppParams = {
ilapAnalyticsUi: {
name: 'app-ilapanalytics-ui-${env}'
customDomain: '${env}.ilapanalytics.${company}.no' // Custom domain name from Step-2
certificateName: '${env}-ilapanalytics-${company}-no' // Certificate name from Step-2
useCustomDomain: true
}
ilapAnalyticsApi: {
name: 'app-ilapanalytics-api-${env}'
customDomain: 'api.${env}.ilapanalytics.${company}.no' // Ilap Analytics Api domain name
certificateName: 'api-${env}-ilapanalytics-${company}-no' // SSL certificate name for Api
useCustomDomain: true // If you do not want custom domain for Api then make it false
}
ilapAnalyticsBackgroundJob: {
name: 'app-ilapanalytics-backgroundjobs-${env}'
customDomain: 'jobs.${env}.ilapanalytics.${company}.no' // Ilap Analytics BackgroundJobs app domain name
certificateName: 'jobs-${env}-ilapanalytics-${company}-no' // SSL certificate name for BackgroundJobs app
useCustomDomain: true // If you do not want custom domain for BackgroundJobApp then make it false
}
}
param timephasingServiceConfiguration = {
BaseUrl: 'https://timephasing.promineo.com'
AccessToken: 'Your_Access_Token'
MaxNumberOfActivitiesPerRequest: 2000
IncludePerCalendar: false // To fetch calendar hours from time phasing. You can make it true if calendar hours related changes in timePhasing dev merged into main
}
param databaseParams = {
name: 'sqldb-ilapanalytics-${env}-norwayeast'
backupStorageRedundancy: 'Zone'
minCapacity: '2'
isZoneRedundant: true
sku: { // Feel free to adjust based on your need.
name: 'HS_S_Gen5'
tier: 'Hyperscale'
family: 'Gen5'
capacity: 8
}
}
var defaultAppServicePlanSku = { // Feel free to adjust based on your need.
name: 'S1'
tier: 'Standard'
size: 'S1'
family: 'S'
}
param apiAppServicePlanName = 'plan-ilapanalytics-api-${env}'
param bgAppServicePlanName = 'plan-ilapanalytics-bgjob-${env}'
param webAppServicePlanName = 'plan-ilapanalytics-ui-${env}'
param appServicePlanParams = [
{
name: apiAppServicePlanName
sku: defaultAppServicePlanSku
}
{
name: bgAppServicePlanName
sku: defaultAppServicePlanSku
}
{
name: webAppServicePlanName
sku: defaultAppServicePlanSku
}
]
param sqlServerParams = {
name: 'sql-ilapanalytics-${env}-norwayeast'
administratorLogin: 'your_sql_server_admin_name' // Example: ilapsa; This credential will be used by analytics applications to access background job
administratorLoginPassword: 'your_password' // Please choose a strong password
administrators: {
administratorType: 'ActiveDirectory'
principalType: 'Group'
login: 'atle@promineo.no' // User principal name from step-3
sid: '3e20f45a-ed46-4094-87ed-35533c55efdb' // Object ID from step-3
tenantId: 'e8ddb777-121f-4abc-a113-6b91d4b5defc' // Tenant Id from step-1
azureADOnlyAuthentication: false
}
}
param keyVaultParams = {
name: 'promineodevilapnoekv' // Key Vault name from step-2
resourceGroupName: 'rg-ide-dev-norwayeast' // Resource group name from step-2
}
param storageAccountParams = {
name: 'dlailapanalytics${env}'
kind: 'StorageV2'
sku: { // Feel free to adjust based on your need.
name: 'Standard_LRS'
tier: 'Standard'
}
}
param flowApiBaseUrl = 'https://dev.ilapdataexchange.promineo.no/api/api' // Flow API URL from step-4
param flowApiAccessToken = 'eyJhbGciOiJIUzI..........' // Access token from step-4
param synchronizeFieldsJobSchedule = '*/10 * * * *' // Means: Every 10 minutes. It specifies how often background job will fetch ILAP terms from Flow.
param moveIlapFileToBlobStorage = 'false' // Ilap files are deleted from Database after background jobs are completed. So, if you want to store Ilap files to above storage account then make it 'true'.
param graphQlExecutionTimeout = '15' // In munites
param enableFieldSyncronization = 'true' // To syncronize ilap terms (aka. metadataFields) with IDE
param enableFieldImport = 'true' // To import ilap terms (aka. metadataFields) from IDE
Replace the placeholders (YOUR_CLIENT_ID, etc.) with the actual values gathered in previous steps.
6. Key Additional Parameters
Database Parameters:
Include
administratorLoginandadministratorLoginPasswordfor the SQL server.Example:
param databaseParams = { name: 'sqldb-ilapanalytics-${env}' administratorLogin: 'YOUR_SQL_ADMIN' administratorLoginPassword: 'YOUR_PASSWORD' }
Timephasing Service Configuration:
Add the
BaseUrlandAccessTokenfor timephasing services.Example:
param timephasingServiceConfiguration = { BaseUrl: 'https://timephasing.promineo.com' AccessToken: 'YOUR_ACCESS_TOKEN' // From Step 4 }
Checklist for Bicep Parameters
clientId,tenantId, andaudiencevalues are accurate.Custom domain details (if applicable) are included.
SQL Server administrator details are configured.
Flow API URL and access token are properly set.
Parameter values match your target environment.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article