Deployment Steps - 2025_JUL_01
Deployment
Potential Issues
- If the deployment admin does not have access to Storage Accounts, the Storage Account deployment part will fail. There are no changes to the storage accounts in this release, so this can be ignored
- The Custom Functions Function App (npobp_common) tends to have trouble with deployment and may need to be manually deployed
- The Seed Data step may not work if APIM is secured within a vnet. In that instance, the #Manual Steps below will allow the same changes to be added manually
Prerequisites
We will follow the deployment instructions from: Hosted Model Deployment Guide Please read and understand the additional prerequisites below before continuing:
- Ensure the logged in user has access to the following storage accounts. If the storage account is part of a VNet, the user's IP address needs to be explicitly added:
- Do the same for the following, for both the Main site and Advanced Tools site:
- In your existing customerconfig.json file, ensure the following settings are correct:
- prerequisutes.validateEnabled
- otherSettings.downloadAdditionalScripts
- otherSettings.downloadArtifacts
- The Custom Functions Function App (npobp_common) function app tends to fail when run manually through the script, so it may need to be manually redeployed
$resourceGroupName = 'NAME_OF_YOUR_RESOURCE_GROUP' $functionAppName = 'NAME_OF_YOUR_COMMON_FUCNTION_APP' $deployZipPath = 'PATH_TO_THE_ARTIFACTS_ZIP_FILE_IN_ARTIFACT_FOLDER_34' az account set --subscription "" az functionapp deployment source config-zip ` --resource-group $resourceGroupName ` --name $functionAppName ` --src $deployZipPath
Manual Steps:
We need to upgrade the .NET framework for all the function apps to .NET 8 Isolated. This can be done manually or via script.
The affected function apps are: - Config Function App (npobp_config) - Master Maintenance Service (npobp_mastmaint) - Translation Layer - Dataverse (npobp_trdataverse) - Translation Layer SQL (npobp_trsql) - Execution Engine (npobp_exec) - Polling Engine (npobp_poll)
The scripted method (recommended)
This script will use deployment slots to allow for rollback if we have issues with the .NET upgrade
- Download the script from the link provided to you by ProcessFactorial
- In the downloaded script, open the script and replace the following parameters:
- $TenantId
- $SubscriptionId
- $ResourceGroup
- $FunctionApps
- Run the script
.\UpdateDotNetFunctionApp.ps1. This will update each of the function apps to .NET 8 isolated:- Confirm that
Settings -> Environment Variableshas FUNCTIONS_WORKER_RUNTIME asdotnet-isolated - Confirm that
Settings -> Configuration -> General Settings (tab)has .NET Version as.NET 8 Isolated
- Confirm that
- Now run the normal deployment as usual (Hosted Model Deployment Guide#Deployment)
If issues happen during deployment or smoke testing, we can swap the deployment slots back by running the .\SwapDeploymentSlots.ps1 script again. The way to know which is the correct deployment is to look at the Environment Settings. The dotnet-isolated is the new version and dotnet is the original (rollback) version.
Later, to delete the staging slots, run .\DeleteStagingSlots.ps1
The manual method (fallback)
For each of the function apps:
1. Open the function app In Azure Portal
2. Go to Settings -> Environment Variables
1. Update FUNCTIONS_WORKER_RUNTIME from dotnet to dotnet-isolated
2. Save
3. Go to Settings -> Configuration -> General Settings (tab)
1. Change the .NET Version to .NET 8 Isolated
2. Save
4. If issues happen during deployment:
1. Manually revert the changes above
2. Redeploy the previous version (2025_JUN_04) again