Skip to main content
Version: 3.2

Fusion 3.0 to Fusion 3.2

Upgrading will remove the following resources:

  • app-historyuploadrequest - Replaced by app-fusion-ui, fd, and plan-fusion-ui
  • appi-elevate - Elevate services now log to appi-fusion. To preserve existing logs, export them or remove the resource from the state file.
  • func-starsync - Removed; functionality is handled in func-tagcontroller.
  • func-telemetry - NEW Sends Elevate service logs and metrics to App Insights.
  • log-export, log-fusfollow - Follower ADX cluster and ADLS export now log to log-fusion. To preserve existing logs, export them or remove the resource from the state file.

Additionally, the following storage account containers will be removed:

  • bulk-history-parquets, model-input - Model data and parquet files are now uploaded via the IoT hub and stored in the "uploads" container (before ingestion by ADX).
  • ignition - No longer used by Fusion. To preserve any content, download it or remove the container from the state file.
  • model-input-history- No longer used by Fusion. To preserve any content, download it or remove the container from the state file.
  • pi-event-frames - No longer used by Fusion. Event frame data is uploaded via the IoT hub and stored in ADX.

All upload requests will be deleted and tag upload states will be reset (i.e., all tags will be in state "NoData").

Wait for Requests to Complete

It is recommended, but not strictly required, to wait for any history upload requests to finish before upgrading. I.e., wait for any requests with an end time to have uploaded all of their data.

  1. If upgrading a "dev" environment and preserving SQL Server is desired, set "tagControllerDevSqlServer = true" within the consumer module of the main.tf file.
  2. terraform refresh -var pre_install=true
  3. terraform state mv "module.consumer.azurerm_sql_database.sqldbTagController[0]" "module.consumer.azurerm_sql_database.sqldbTagController[\"tagcontroller-companyname-environment`"]"` (Elevate deployments only)
  4. terraform import -var pre_install=true module.consumer.azurerm_service_plan.appServicePlan /subscriptions/subscription-Id/resourceGroups/resource-group-name/providers/Microsoft.Web/serverfarms/app-service-plan-name
  5. terraform state rm module.consumer.azurerm_app_service_plan.appServicePlan
  6. terraform state rm module.consumer.azurerm_storage_blob.configurationJson (Elevate deployments only)
  7. terraform state rm module.consumer.module.adls.module.data_lake_storage_account.module.storage_account_diagnostic_setting[\"`"]`
  8. terraform state rm module.consumer.azurerm_iothub_endpoint_eventhub.controlMessages
  9. terraform state rm module.consumer.azurerm_iothub_route.controlMessageRoute
  10. terraform state rm module.consumer.azurerm_iothub_enrichment.controlMessageEnrichment
Note

If in 3.0 Post Deployment steps an event hub consumer group was created for ehub-dpp and named "adx", then this must be imported into the state file; run the following command: terraform import -var pre_install=true "module.consumer.azurerm_eventhub_consumer_group.eventHubAdxDppConsumerGroup" "/subscriptions/subscription-Id/resourceGroups/resource-group-name/providers/Microsoft.EventHub/namespaces/eventhub-namespace/eventhubs/ehub-dpp/consumerGroups/adx"

Otherwise, delete the event hub consumer group that was created in the 2.5 Post Deployment steps. This deletion is an optional clean-up step.

Note

If in 3.0 Post Deployment steps an ADX database data connection was created and named "adx-connection", then this must be imported into the state file; run the following command: terraform import -var pre_install=true "module.consumer.azurerm_kusto_eventhub_data_connection.adxConnection" "/subscriptions/subscription-Id/resourceGroups/resource-group-name/providers/Microsoft.Kusto/clusters/adx-cluster-name/databases/adx-database-name/dataConnections/adx-connection"

Otherwise, delete the ADX database data connection that was created in the 3.0 Post Deployment steps. It's name could be anything, but it's Source is ehub-dpp. Failing to delete this connection will result in duplicate data being pushed into ADX.

  1. If upgrading an Elevate system, to prevent data loss, stop all Elevate services.
  2. In ADX, wait for any current ingestion to finish and then run the fusion3.2_pre-install.kql script.
  3. az iot hub message-enrichment delete --key iotHubName -n iothubname
  4. az iot hub route delete --route-name controlMessageRoute --hub-name iothubname
  5. az iot hub routing-endpoint delete -n controlMessages --hub-name iothubname
  6. If func-tagcontroller is backed by a SQL Server database, follow step 1 of Preserve Upload Requests and Tag States.
  7. terraform apply -var lock=false
  8. terraform apply
  9. If func-tagcontroller is backed by a SQL Server database, complete remaining steps in
    Preserve Upload Requests and Tag States.
  10. If the CurrentValue table needs to be migrated, run the fusion3.2_post-install.kql script.

Post Upgrade

In the SQL database, sqldb-tagcontroller:

  1. This database has changed significantly and migration of existing upload requests and tag states is not easy. Whether the requests are kept or not, any data currently being collected will continue to be collected. To preserve existing upload requests and tag states, see Preserve Upload Requests and Tag States and then proceed with the next step. If it is not necessary to keep these, then the existing data can be deleted with the following SQL commands. Note that all tags will then be in the "NoData" state, so any future run of StarSync will cause new requests to be made with these tags and some amount of duplicate data – one to five days, probably, depending on StarSync configuration – to be uploaded.
DROP TABLE UploadContent
DROP TABLE EventRequest
DROP TABLE HistoryUploadRequest
DROP TABLE TagMap
DELETE FROM __EFMigrationsHistory
  1. Delete the following users:
  • the Fusion admin group
  • the Fusion read/write group
  • the Fusion read-only group
  • the application registration (e.g., fusioncompanyname-environment)