Configure bicep parameters

Modified on Wed, 15 Jul at 4:11 PM

To deploy Azure resources (i.e. App services, Databases) you need to create a bicep parameter file. To prepare your parameter file, you need to find values for your parameters. Please follow following steps and note down parameter values.

Step-1: Find your clientId, tenantId and audience

  1. Go to Azure Entra ID.

  2. Under overview tab, you'll find tenant Id. Please take note of the tenantId

    image.png

  3. Then from left menu, click App registrations. Select All application tab, then find for your Analytics UI app registration. Please take note of the Application (client) ID. Then click on the app. (Similarly, take note of the Application (client) ID for the Analytics API app registration)

    image.png

  4. Go to the app registration for the API and copy the Application ID URI. Please take note of this value, because this is the value for your audience parameter

    image.png

Please note down the names of resource group, key vault and certificates that you've used/created in this pre requisites step.

Now, please take note of custom domain name you've created in the pre-requisite step.

Step-3: Take note of parameters for SQL server admin

  1. Go to Azure Entra ID

  2. Then from left menu, click on Users.

    image.png

  3. Search for the user who you want to be your SQL server Entra admin.

    image.png

  4. Please take note of User principle name and Object ID

    image.png

Step-4: Get ILAP data exchange (IDE) API parameters

We fetch relevant ILAP terms (Fields in Ilap analytics) from ILAP data exchange API. For that we have to configure some parameters. First, take note of the IDE Api URL from below for your target environment (i.e. If you want to fetch fields from IDE beta environment then use beta Url).

Environment IDE API Url
Dev https://dev.ilapdataexchange.promineo.no/api/api
Beta https://beta.ilapdataexchange.promineo.no/api/api
Test https://ilaptest.collabor8.no/api/api/
Prod https://ilap.collabor8.no/api/api/
Environment IDE UI Url
Dev https://dev.ilapdataexchange.promineo.no
Beta https://beta.ilapdataexchange.promineo.no
Test https://ilaptest.collabor8.no
Prod https://ilap.collabor8.no

Now, to access IDE API, ILAP analytics needs an access token. We can use service token. We can generate IDE API access token from web UI page using the following steps.

  1. Go to IDE UI of your target environment. (For URL, refer to the table above)

  2. After login, go to Tenant Admin page. Click on Clients. Select ILAP Analytics

  3. Click Add New Component. (You can ignore this step if you already have a component.)

  4. Now, create the client by giving it some name and description.

    image.png

  5. Click on the three-dot menu on right of the client you've just created. Select Service Tokens.

    image.png

  6. Then click on Add New Token

    image.png

  7. Select an expiry date for the token, please note that you will have to create and register a new token for the Analytics Client prior to this expiration date. The generated token needs to be stored securely as it can be used to access data within your tenant.

    image.png

  8. Click on Create

    image.png

  9. Click on the Copy link and store the access token in a secure place. Also take a note of the instance Id after you click ok.

    image.png

Step-5 (optional): Use AAD authentication for swagger

For quick investigations, Swagger is a handy tool. However, it usually requires you to enter the Bearer token manually. To make this easier, we've added support for interactive authentication — the same way you log in through the web UI. To enable this, you'll need to configure the SwaggerAzureAdAuthOptions parameter. Follow the steps below to obtain the required values. Note: You may not want to do this for production environment

  1. Go to your Azure Entra ID. Find API app registration. Click on Endpoints, note down AuthorizationUrl and TokenUrl

    image.png

  2. From left menu, go to Expose an API tab. Note down name and description (display name) of the scopes

    image.png

  3. Now, go to web UI app registration. Copy the client ID. It will be used for SwaggerClientId parameter.

    image.png

  4. Construct swagger redirect URL. Go analytics API app service from Azure App Services. Click on Browse. A new window will open. Copy the URL and use it here.

    https://<your_analytics_api_app_service_url>/swagger/oauth2-redirect.html

  5. Add the redirect URL in the UI app registration. Save it.

    image.png

Step-6 (optional): Use AAD authentication for Hangfire Dashboard

  1. Go to Azure Entra ID. Find API app registration. Click on Authentication on the side menu. image.png

  2. Click on Add platform and select Web (if this platform is not already added). image.png

  3. Provide a redirect uri. The uri should be <your_hangfire_app_url>/<redirect_suffix_of_your_choice>. In the example screenshot, the suffix is /signin-oidc. It does not have to be strictly this. Note the suffix that you chose for this step. It will be required in the bicep. image.png

  4. Feel free to add more redirect uri if you want to support multiple environments. But you must use the same suffix. image.png

  5. Enable ID tokens to allow for implicit and hybrid flows. image.png

  6. You can restrict the access to Hangfire dashboard to only selected roles. In that case, assign app roles and note down the Value(s). In a later step, in the bicep parameter, you will put them in the AllowedRoles list. image.png

  7. You are all set. Make sure to set enableHangfireAzureAdAuth to true in the bicep parameter. Now the hangfire dashboard access will require AAD authentication.

Set bicep parameter

At this point you have everything you need to create parameter file. Create a file with .bicepparam extension. Dump the following code into the file. Update parameters as mentioned in the comments.

Note: The following Bicep parameters can also be found in the main.sample.bicepparam file located in the Azure.IaC folder you downloaded from the installation center.

using 'main.bicep'

var env = 'dev'  // Your environment name. Example: test, beta, prod etc.

var company = 'promineo'  // Your company name

param azureAd = {

  clientId: 'application client id of UI app registration' // Client id from step-1

  instance:'https://login.microsoftonline.com/'

  tenantId:'your_tenant_id' // Use tenant id from step-1

  audience:'analytics_api_audience_id' // Use audience from step-1
}

// Note: these values configure the UI at deploy time via app-service environment variables. They
// replace the legacy PublicConfigurations.js file, which is obsolete.

param publicConfigurations = {

  analyticsApiUrl: // Base URL of your ILAP analytics API app,

  //If you are using custom domain for analytics API, then use custom domain URL(+ '/api) here, instead of the default URL (i.e. URL that contains "[app-name].azurewebsites.net")

  // for example: 'https://app-ilapanalytics-api-dev.azurewebsites.net/api' or 'https://analytics-api.promineo.com/api'

  backgroundJobAppUrl: Base URL of your ILAP analytics background job app

// Example: 'https://app-ilapanalytics-backgroundjobs-dev.azurewebsites.net'. You can find the URL by clicking browse from azure app service.

  authenticationAuthority: //'https://login.microsoftonline.com/[your tenant id]/' for example: 'https://login.microsoftonline.com/8719bf0f-72ad-48f5-ba9d-da3dbbcd7509/'

  authenticationClientId: //'application client id of UI app registration'

  authenticationScopes: //'comma separated scopes from your API app registration' for example: 'api://970d7cfa-159b-45cd-9f97-9781b00e6624/user_impersonation,api://970d7cfa-159b-45cd-9f97-9781b00e6624/read'

  authenticationRedirectUri: //'your-ilapanalytics-ui-base-url'. // Base URL of your ILAP analytics UI app,

  //If you are using custom domain for analytics UI, then use custom domain URL here, instead of the default URL (i.e. URL that contains "[app-name].azurewebsites.net")

  ideUiBaseUrl: // Base URL of the ILAP Data Exchange (IDE) web UI, used to build links to IEAs. Use IDE UI Url from step-4. For example: 'https://ilaptest.collabor8.no' for test, 'https://ilap.collabor8.no' for production

}

// Note: if useCustomDomain is false, then leave customDomain and certficateName parameters as is.

// Note: if you are using custom domain for analytics API, then you must use custom domain URL in IDE connector, instead of the default URL (i.e. URL that contains ".azurewebsites.net")

param webAppParams = {

  ilapAnalyticsUi: {

    name: //Enter any name for your ILAP analytics web UI app. For example: 'app-promineo-ilapanalytics-ui-dev'

    customDomain: //Enter custom domain name for analytics web UI app. // For example: 'analytics-ui.promineo.com' if you're not using custom domain, put any random string here

    certificateName:   // Certificate name from Step-2. Applicable only if you are using custom domain

    useCustomDomain:  // If you do not want custom domain for Api then make it false

  }

  ilapAnalyticsApi: {

    name: //Enter any name for your ILAP analytics web API app. For example: 'app-promineo-ilapanalytics-api-dev'

    customDomain: //Enter custom domain name for analytics web API app. // For example: 'analytics-api.promineo.com' if you're not using custom domain, put any random string here

    certificateName: //Certificate name for API  Applicable only if you are using custom domain

    useCustomDomain:   // If you do not want custom domain for Api then make it false

  }

  ilapAnalyticsBackgroundJob: {

    name: //Enter any name for your ILAP analytics background job app. For example: 'app-promineo-ilapanalytics-bg-dev'

    customDomain: //Enter custom domain name for background job app. // For example: 'analytics-bg.promineo.com' if you're not using custom domain, put any random string here

    certificateName: //Enter certificate name for BackgroundJobs app  Applicable only if you are using custom domain

    useCustomDomain:  // If you do not want custom domain for BackgroundJobApp then make it false

  }
}

param timephasingServiceConfiguration = {

    BaseUrl: 'https://timephasing.promineo.com'

    AccessToken: 'Your_Access_Token' // Access token from time phasing service. Go to https://timephasing.promineo.com For more details.

    MaxNumberOfActivitiesPerRequest: 2000 // Maximum number of activities to send in a single request. Feel free to adjust based on your need.

    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 dataValidationConfiguration = {

  MaxIncrementLimit: 10 // In percentage

}

param databaseParams = {

  name: //Enter any name for ilap analytics database. For example: 'promineo-sqldb-ilapanalytics-dev-norwayeast'

  backupStorageRedundancy: 'Zone'// Use 'Zone' in prod. for dev environment you can use 'Local' to save cost.

  minCapacity: '2' // Use at least 2 in prod. For dev environment you can use '1' to save cost

  isZoneRedundant: true

  sku: {                 // Feel free to adjust based on your need.

    name: 'HS_S_Gen5' // Hyperscale Gen5 is recommended for production. For dev environment you can use S3

    tier: 'Hyperscale'

    family: 'Gen5'

    capacity: 8

  }

}

// Specifies the number of database entities to process per batch during read and write operations.

param dbOperationSettings = {
  ReadBatchSize: 15000
  WriteBatchSize: 10000
}

param archiveDatabaseParams = {

  name: //Enter any name for ilap analytics archive database. For example: 'promineo-sqldb-ilapanalytics-archive-dev-norwayeast'

  backupStorageRedundancy: 'Zone' // Use 'Zone' in prod. for dev environment you can use 'Local' to save cost.

  minCapacity: '2'// Use at least 2 in prod. For dev environment you can use '1' to save cost

  isZoneRedundant: true

  sku: {                 // Feel free to adjust based on your need.

    name: 'HS_S_Gen5'    //Hyperscale Gen5 is recommended for production. For dev environment you can use S3

    tier: 'Hyperscale'

    family: 'Gen5'

    capacity: 8

  }

}

var defaultAppServicePlanSku = { // Service plan SKU for all app services. in this sample we're using the same SKU for all app services.

// In order to save cost, you can use different SKU for the web ui

  name: 'P3v2'

  tier: 'PremiumV2'

  size: 'P3v2'

  family: 'Pv2'

}

param apiAppServicePlanName = 'Enter any name for ilap analytics api app service plan'

param bgAppServicePlanName = 'Enter any name for ilap analytics background job app service plan'

param webAppServicePlanName = 'Enter any name for ilap analytics web UI app service plan'

param appServicePlanParams = [
  {
    name: apiAppServicePlanName
    sku: defaultAppServicePlanSku
  }
  {
    name: bgAppServicePlanName

    sku: defaultAppServicePlanSku
  }
  {
    name: webAppServicePlanName
    sku: defaultAppServicePlanSku
  }
]

// Note: ILAP Analytics uses Azure AD-only authentication (azureADOnlyAuthentication: true). The SQL
// username/password administrator fields (administratorLogin / administratorLoginPassword) are
// obsolete for new customers and are no longer used.
param sqlServerParams = {

  name: //Enter any name for sql server. For example: 'promineo-sqlserver-ilapanalytics-dev-norwayeast'

  administrators: {

    administratorType: 'ActiveDirectory'

    azureADOnlyAuthentication: true

    principalType: 'User'

    login: //Enter sql server admin email (user principal name from step-3)

    sid: //Enter user Id of sql server admin (object ID from step-3)'.

    tenantId: //Enter tenant ID (tenant Id from step-1)

  }

}

// If you are not using any custom domain, then ignore the following param

param keyVaultParams = {

  name: //Enter name of the keyvault which stores certificates for custom domain (Key Vault name from step-2). for example: 'promineo-kv-ilapanalytics-dev-norwayeast'

  resourceGroupName: //Enter resource group name (resource group name from step-2). for example: 'promineo-rg-ilapanalytics-dev-norwayeast'

}

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'.

// If you do not want to move ILAP file to blob storage (in other words if moveIlapFileToBlobStorage param is false), then please ignore the following param

param storageAccountParams = {

  name: //Enter any storage name. For example: 'promineoilapanalyticsdevstorage'

  kind: 'StorageV2'

  sku: {               // Feel free to adjust based on your need.

    name: 'Standard_LRS'

    tier: 'Standard'
  }
}

param ideApiBaseUrl = 'https://dev.ilapdataexchange.promineo.no/api/api' // IDE API URL from step-4

param ideApiAccessToken = 'eyJhbGciOiJIUzI..........' // Access token from step-4

param synchronizeFieldsJobSchedule = '*/10 * * * *' // Means: Every 10 minutes. It specifies how often background job will fetch ILAP terms from IDE.

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

param SendJobStatusToIDE = 'false' // Send background job operation status to IDE

param instanceInformation = {

  Identifier: 'Identifier guid of your ILAP Analytics component in IDE' // Analytics client Identifier from IDE.
  // Go to IDE web page -> Tenant Admin -> Clients -> ILAP Analytics -> Copy Identifier column value

}

param planningScheduleDeleteConfiguration = {

  // Set to 'true' to automatically delete planning schedules that are no longer referenced by any report schedule.

  PlanningScheduleAutomaticDeletion: false

  // Specifies the retention period (in days) for unreferenced planning schedules

  // before they are deleted from the database.

  PlanningScheduleRetentionPeriodInDays: 7

}

param reportScheduleArchiveConfiguration = {

  // Set to 'true' to enable automatic archiving of closed report schedules.

  EnableReportScheduleAutomaticArchive: false

  // Defines how long (in days) closed report schedules should remain in the database

  // before being moved to the archive.

  ReportScheduleRetentionPeriodInDays: 7

  // Number of report schedule records to process in a single batch when archiving.

  // Reduce this value to decrease the load on the application and database,

  // but note that smaller batches may increase total archive time.

  QueryBatchSize: 3000

}

// Swagger Azure AD Authentication Options. If you don't want to use Azure AD authentication for Swagger UI, then leave the following parameters as is.
// Refer to Step 5 for instructions on how to obtain these values

param SwaggerAzureAdAuthOptions = {

  AuthorizationUrl: ''
  TokenUrl: ''
  SwaggerClientId: ''
  Scopes: [
    {
      Name: ''
      Description: ''
    }
    {
      Name: '' // Get from Azure Entra ID API app registration scopes from "Expose an API" tab
      Description: ''
    }
  ]
}

// Operation completion notifications
// Controls whether applications publish a notification to event hub when a report schedule import/revert is completed.
// Notes:
// - If you plan to enable this, configure the "eventhubConfig" block below.
// - If you plan to notify via HTTP callback, set "CallbackHostUrl" to your API host base URL.
param operationCompletionNotificationConfig = {
  // Enable or disable operation completion notifications (true|false)
  IsEnabled: false
  // Notification type:
  //      1 = Report Schedule Id Only,
  //      2 = Report Schedule Id With Activity Ids,
  //      3 = Report Schedule Ids With Activity Fqdns
  NotificationType: 2
  // Optional: Base URL for callback endpoints (used when notification type 3 is selected)
  CallbackHostUrl: publicConfigurations.analyticsApiUrl

  // Number of notifications to send in a single batch
  /*
    | Event hub pricing tier | Basic  | Standard | Premium | Dedicated |
    |------------------------|--------|----------|---------|-----------|
    | Batch size to use      | ~2000  | ~6000    | ~6000   | ~150000   |
  */
  BatchSize: 2000
}

// Event Hub configuration (optional, mandatory if operation completion notifications are enabled above)
// Provide only if you plan to publish operation completion notifications to an Azure Event Hub.
// - NamespaceUrl: The fully qualified namespace host (e.g., "your-namespace.servicebus.windows.net").
// - EventhubName: The Event Hub name to which events will be emitted.
// Note: Ensure that the application has the necessary permissions to send events to the specified Event Hub.
param eventhubConfig = {
  NamespaceUrl:// 'your-namespace.servicebus.windows.net'
  EventhubName: //'name-of-your-eventhub'
}

// Set to 'true' to enable Azure AD authentication for Hangfire dashboard.
// If set to 'false', then basic authentication will be used.
param enableHangfireAzureAdAuth = 'false'

param hangfireCredentials = {
  Username: 'admin' // provide your desired username
  Password: 'QwK?9MLzK+9UJjRT' // provide your desired strong password
}

// Only applicable if enableHangfireAzureAdAuth is set to 'true'.
param hangfireAzureAdAuthOptions = {
  Instance: 'https://login.microsoftonline.com/'
  TenantId: 'your_tenant_id'
  ClientId: 'analytics_api_client_id_from_step-1'
  CallbackPath: '/signin-oidc' // Your web platform redirect URI from Azure Entra app registration
  AllowedRoles: ['Administrator'] // List of roles allowed to access Hangfire dashboard. Leave empty if all authenticated users are allowed.
}

Bicep Parameter File Documentation (Tabular Format)

This table provides a detailed overview of the parameters and variables in the Bicep parameter file for configuring an ILAP analytics application deployment on Azure. It is designed to help new users understand each parameter's purpose, default values, significance, and examples.

Name Description Default Value Significance Examples
env Specifies the environment name for the deployment. 'dev' Indicates the deployment environment (e.g., development, testing, production) for resource naming and configuration. test, beta, prod
company Defines the company name associated with the deployment. 'promineo' Associates the deployment with a company for naming and organization. None
azureAd.clientId Client ID from the UI app registration in Azure AD. None Required for Azure AD authentication. application client id of UI app registration
azureAd.instance Azure AD instance URL. 'https://login.microsoftonline.com/' Standard URL for Azure AD authentication. None
azureAd.tenantId Tenant ID from Azure AD. None Identifies the Azure AD tenant for authentication. your_tenant_id
azureAd.audience Audience ID for the analytics API. None Specifies the API audience for authentication. analytics_api_audience_id
publicConfigurations.analyticsApiUrl Base URL of the ILAP analytics API app. None Configures the API endpoint; use custom domain URL if applicable. 'https://app-ilapanalytics-api-dev.azurewebsites.net/api', 'https://analytics-api.promineo.com/api'
publicConfigurations.authenticationAuthority Azure AD authentication authority URL. None Defines the authentication endpoint for Azure AD. 'https://login.microsoftonline.com/8719bf0f-72ad-48f5-ba9d-da3dbbcd7509/'
publicConfigurations.authenticationClientId Client ID for the UI app registration. None Required for UI authentication. application client id of UI app registration
publicConfigurations.authenticationScopes Comma-separated scopes from API app registration. None Defines permissions for API access. 'api://970d7cfa-159b-45cd-9f97-9781b00e6624/user_impersonation,api://970d7cfa-159b-45cd-9f97-9781b00e6624/read'
publicConfigurations.authenticationRedirectUri Base URL of the ILAP analytics UI app. None Specifies the redirect URL for authentication; use custom domain if applicable. None
publicConfigurations.ideUiBaseUrl Base URL of the ILAP Data Exchange (IDE) web UI. None Used to build links to IEAs; use the IDE UI Url for your target environment. 'https://ilaptest.collabor8.no', 'https://ilap.collabor8.no'
webAppParams.ilapAnalyticsUi.name Name of the ILAP analytics web UI app. None Identifies the UI app in Azure. 'app-promineo-ilapanalytics-ui-dev'
webAppParams.ilapAnalyticsUi.customDomain Custom domain name for the UI app. None Used for branding; use a random string if not using custom domain. 'analytics-ui.promineo.com'
webAppParams.ilapAnalyticsUi.certificateName Certificate name for the UI app. None Required for custom domain SSL; applicable only if using custom domain. None
webAppParams.ilapAnalyticsUi.useCustomDomain Boolean to enable/disable custom domain for UI. None Set to false to disable custom domain. None
webAppParams.ilapAnalyticsApi.name Name of the ILAP analytics web API app. None Identifies the API app in Azure. 'app-promineo-ilapanalytics-api-dev'
webAppParams.ilapAnalyticsApi.customDomain Custom domain name for the API app. None Used for branding; use a random string if not using custom domain. 'analytics-api.promineo.com'
webAppParams.ilapAnalyticsApi.certificateName Certificate name for the API app. None Required for custom domain SSL; applicable only if using custom domain. None
webAppParams.ilapAnalyticsApi.useCustomDomain Boolean to enable/disable custom domain for API. None Set to false to disable custom domain. None
webAppParams.ilapAnalyticsBackgroundJob.name Name of the ILAP analytics background job app. None Identifies the background job app in Azure. 'app-promineo-ilapanalytics-bg-dev'
webAppParams.ilapAnalyticsBackgroundJob.customDomain Custom domain name for the background job app. None Used for branding; use a random string if not using custom domain. 'analytics-bg.promineo.com'
webAppParams.ilapAnalyticsBackgroundJob.certificateName Certificate name for the background job app. None Required for custom domain SSL; applicable only if using custom domain. None
webAppParams.ilapAnalyticsBackgroundJob.useCustomDomain Boolean to enable/disable custom domain for background job app. None Set to false to disable custom domain. None
timephasingServiceConfiguration.BaseUrl Base URL of the time phasing service. 'https://timephasing.promineo.com' Specifies the endpoint for time phasing integration. None
timephasingServiceConfiguration.AccessToken Access token for the time phasing service. None Required for secure access to the time phasing service. 'Your_Access_Token'
timephasingServiceConfiguration.MaxNumberOfActivitiesPerRequest Maximum number of activities per request. 2000 Controls batch size for performance optimization. None
timephasingServiceConfiguration.IncludePerCalendar Boolean to fetch calendar hours from time phasing. false Enable only if calendar hours changes are merged into main branch. None
dataValidationConfiguration.MaxIncrementLimit Maximum allowed increment percentage. 10 Limits data changes to ensure integrity. None
databaseParams.name Name of the ILAP analytics database. None Identifies the database in Azure. 'promineo-sqldb-ilapanalytics-dev-norwayeast'
databaseParams.backupStorageRedundancy Backup storage redundancy type. 'Zone' 'Zone' for production high availability; 'Local' for dev cost savings. None
databaseParams.minCapacity Minimum database capacity. '2' At least 2 for production; 1 for dev cost savings. None
databaseParams.isZoneRedundant Boolean for zone redundancy. true Enables high availability across zones. None
databaseParams.sku.name SKU name for the database. 'HS_S_Gen5' Hyperscale Gen5 for production; S3 for dev. None
databaseParams.sku.tier SKU tier for the database. 'Hyperscale' Defines performance tier. None
databaseParams.sku.family SKU family for the database. 'Gen5' Specifies hardware generation. None
databaseParams.sku.capacity SKU capacity for the database. 8 Defines compute capacity. None
dbOperationSettings.ReadBatchSize Number of database entities to read per batch. 15000 Controls batch size for read operations to balance performance and load. None
dbOperationSettings.WriteBatchSize Number of database entities to write per batch. 10000 Controls batch size for write operations to balance performance and load. None
archiveDatabaseParams.name Name of the ILAP analytics archive database. None Identifies the archive database in Azure. 'promineo-sqldb-ilapanalytics-archive-dev-norwayeast'
archiveDatabaseParams.backupStorageRedundancy Backup storage redundancy type for archive database. 'Zone' Same as databaseParams.backupStorageRedundancy. None
archiveDatabaseParams.minCapacity Minimum archive database capacity. '2' Same as databaseParams.minCapacity. None
archiveDatabaseParams.isZoneRedundant Boolean for zone redundancy for archive database. true Same as databaseParams.isZoneRedundant. None
archiveDatabaseParams.sku.name SKU name for the archive database. 'HS_S_Gen5' Same as databaseParams.sku.name. None
archiveDatabaseParams.sku.tier SKU tier for the archive database. 'Hyperscale' Same as databaseParams.sku.tier. None
archiveDatabaseParams.sku.family SKU family for the archive database. 'Gen5' Same as databaseParams.sku.family. None
archiveDatabaseParams.sku.capacity SKU capacity for the archive database. 8 Same as databaseParams.sku.capacity. None
defaultAppServicePlanSku.name SKU name for app service plans. 'P3v2' Defines performance for all app services. None
defaultAppServicePlanSku.tier SKU tier for app service plans. 'PremiumV2' Specifies premium performance tier. None
defaultAppServicePlanSku.size SKU size for app service plans. 'P3v2' Matches the SKU name for consistency. None
defaultAppServicePlanSku.family SKU family for app service plans. 'Pv2' Specifies hardware family. None
apiAppServicePlanName Name of the API app service plan. None Identifies the API app service plan. None
bgAppServicePlanName Name of the background job app service plan. None Identifies the background job app service plan. None
webAppServicePlanName Name of the web UI app service plan. None Identifies the web UI app service plan. None
appServicePlanParams Array of app service plan configurations. Uses defaultAppServicePlanSku Centralizes app service plan settings. None
sqlServerParams.name Name of the SQL server. None Identifies the SQL server in Azure. 'promineo-sqlserver-ilapanalytics-dev-norwayeast'
sqlServerParams.administrators.administratorType Type of SQL server administrator. 'ActiveDirectory' Uses Azure AD for administration. None
sqlServerParams.administrators.principalType Principal type for SQL server admin. 'User' Specifies user-based administration. None
sqlServerParams.administrators.login SQL server admin email. None User principal name from step-3. None
sqlServerParams.administrators.sid User ID of SQL server admin. None Object ID from step-3. None
sqlServerParams.administrators.tenantId Tenant ID for SQL server admin. None Tenant ID from step-1. None
sqlServerParams.administrators.azureADOnlyAuthentication Boolean for Azure AD-only authentication. true Enforces Azure AD-only authentication. None
keyVaultParams.name Name of the Key Vault for certificates. None Stores certificates for custom domains. 'promineo-kv-ilapanalytics-dev-norwayeast'
keyVaultParams.resourceGroupName Resource group name for Key Vault. None Organizes Key Vault resources. 'promineo-rg-ilapanalytics-dev-norwayeast'
moveIlapFileToBlobStorage Determines if ILAP files are moved to blob storage. 'false' When true, stores ILAP files instead of deleting them. None
storageAccountParams.name Name of the storage account. None Identifies the storage account for ILAP files. 'promineoilapanalyticsdevstorage'
storageAccountParams.kind Storage account kind. 'StorageV2' Specifies the storage account type. None
storageAccountParams.sku.name SKU name for the storage account. 'Standard_LRS' Defines storage performance and redundancy. None
storageAccountParams.sku.tier SKU tier for the storage account. 'Standard' Specifies standard storage tier. None
ideApiBaseUrl Base URL for the IDE API. 'https://dev.ilapdataexchange.promineo.no/api/api' Specifies the IDE API endpoint. None
ideApiAccessToken Access token for the IDE API. None Required for secure IDE API access. 'eyJhbGciOiJIUzI..........'
synchronizeFieldsJobSchedule Schedule for fetching ILAP terms from IDE. '*/10 * * * *' Runs every 10 minutes for metadata synchronization. None
graphQlExecutionTimeout Timeout for GraphQL queries (in minutes). '15' Prevents indefinite query execution. None
enableFieldSyncronization Enables synchronization of ILAP terms with IDE. 'true' Keeps metadata fields in sync with IDE. None
enableFieldImport Enables importing ILAP terms from IDE. 'true' Allows importing metadata fields from IDE. None
SendJobStatusToIDE Sends background job status to IDE. 'false' When true, sends job statuses for monitoring. None
instanceInformation.Identifier Analytics component Identifier from IDE. None Links deployment to an ILAP analytics component. '8fa0e03b-e2bd-4052-b394-0aeaa2bf6c5f'
planningScheduleDeleteConfiguration.PlanningScheduleAutomaticDeletion Enables automatic deletion of unreferenced planning schedules. false Cleans up unused schedules when enabled. None
planningScheduleDeleteConfiguration.PlanningScheduleRetentionPeriodInDays Retention period for unreferenced schedules (in days). 7 Specifies how long to keep unreferenced schedules. None
reportScheduleArchiveConfiguration.EnableReportScheduleAutomaticArchive Enables automatic archiving of closed report schedules. false Archives closed schedules when enabled. None
reportScheduleArchiveConfiguration.ReportScheduleRetentionPeriodInDays Retention period for closed schedules (in days). 7 Specifies how long to keep closed schedules before archiving. None
reportScheduleArchiveConfiguration.QueryBatchSize Number of records per archiving batch. 3000 Balances performance and database load. None
operationCompletionNotificationConfig.IsEnabled Enables operation completion notifications. false When true, publishes a notification when a report schedule import/revert completes. true, false
operationCompletionNotificationConfig.NotificationType Type of notification payload. 2 1 = Report Schedule Id only; 2 = Report Schedule Id with Activity Ids; 3 = Report Schedule Ids with Activity Fqdns. 1, 2, 3
operationCompletionNotificationConfig.CallbackHostUrl Base URL for callback endpoints. publicConfigurations.analyticsApiUrl Used when notification type 3 is selected. None
operationCompletionNotificationConfig.BatchSize Number of notifications sent per batch. 2000 Tune by Event Hub pricing tier (Basic ~2000, Standard/Premium ~6000, Dedicated ~150000). None
eventhubConfig.NamespaceUrl Fully qualified Event Hub namespace host. None Mandatory if operation completion notifications are enabled. 'your-namespace.servicebus.windows.net'
eventhubConfig.EventhubName Event Hub name to which events are emitted. None Mandatory if operation completion notifications are enabled. 'name-of-your-eventhub'
enableHangfireAzureAdAuth Enable Azure AD authentication for Hangfire dashboard false If set to false, basic authentication will be used true, false
hangfireCredentials.Username Hangfire dashboard basic authentication username N/A Mandatory, if Azure AD auth is not enabled None
hangfireCredentials.Password Hangfire dashboard basic authentication password N/A Mandatory, if Azure AD auth is not enabled None
hangfireAzureAdAuthOptions Azure AD configuration to secure Hangfire dashboard N/A Mandatory, if Azure AD auth is enabled None

Notes

  • Custom Domains: If useCustomDomain is false, leave customDomain and certificateName as is (e.g., random string for customDomain). Use custom domain URLs in the IDE connector for APIs if enabled.
  • Blob Storage: storageAccountParams is relevant only if moveIlapFileToBlobStorage is 'true'.
  • Cost Optimization: Use 'Local' for backupStorageRedundancy, '1' for minCapacity, or S3 SKU in development to save costs.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article