Upgrade to 2.7
Recommendations
To upgrade a Casewhere deployment to 2.7, you must be running a 2.6-series release.
Before upgrading Casewhere, always test your application in a staging environment before deploying the upgrade to your production environment. It would be best if you also backup your production database before upgrading.
If you are deploying Azure App Service using Kudu Zip Push Deploy, you don't have to modify the web.config
files manually, only need to update the keys in the Configuration / Application Settings.
Upgrade versions
The following changes must be applied in the described order.
2.7.0.0 - 25/11/2021
Worker Api - Casewhere.Worker.Api
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
- In the
appSettings
section, add the following keys:
<add key="serilog:disableSelfLog" value="false" />
- In the
runtime/assemblyBinding
section, add the followings:
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
- In the
runtime/assemblyBinding
section, update thedependentAssembly
forSystem.Runtime.CompilerServices.Unsafe
:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Job Site - Casewhere.Hangfire
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
- In the
runtime/assemblyBinding
section, add the followings:
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
- In the
runtime/assemblyBinding
section, update thedependentAssembly
forSystem.Runtime.CompilerServices.Unsafe
:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Configuration Site - Casewhere.Configuration.Web
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
In the appSettings
section, add the following keys:
<add key="logviewer:MaxJsonLength" value="10000000" />
- In the
runtime/assemblyBinding
section, add the followings:
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
- In the
runtime/assemblyBinding
section, update thedependentAssembly
forSystem.Runtime.CompilerServices.Unsafe
:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Log fatal events using Azure Application Insights
Important! This step is applied for deploying on Azure App Service only.
In Azure Portal, open the Worker Api App Service, navigate to Configuration / Application Settings and add the following keys:
Key | Value |
---|---|
serilog:using:ApplicationInsights | Serilog.Sinks.ApplicationInsights |
serilog:write-to:ApplicationInsights.telemetryConverter | Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights |
serilog:write-to:ApplicationInsights.restrictedToMinimumLev | Fatal |
serilog:write-to:ApplicationInsights.instrumentationKey | You can find the Instrumentation Key value in Azure portal. |
Enable logging for Worker Site
Apply the below changes in the web.config
:
Add the configSections
before appSettings
section:
<configSections>
<section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
In the appSettings
section, add the following keys:
<add key="serilog:minimum-level" value="Debug" />
<add key="serilog:using:MongoDB" value="Serilog.Sinks.MongoDB" />
<add key="serilog:write-to:MongoDB.collectionName" value="Logs" />
Add the secureAppSettings
section right under the appSettings
section:
<secureAppSettings>
<add key="serilog:write-to:MongoDB.databaseUrl" value="<Log database connection string. Hint: copy the value from your Worker.Api>" />
</secureAppSettings>
If you are deploying Azure App Service, just add all the above keys in Configuration / Application Settings.
2.7.1.0 - 17/01/2022
Worker Api - Casewhere.Worker.Api
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
- In the
appSettings
section, add the following keys:
<!-- Log settings -->
<add key="serilog:destructure:ToMaximumStringLength.maximumStringLength" value="100000000" />
<add key="serilog:destructure:ToMaximumCollectionCount.maximumCollectionCount" value="25" />
<!-- Event settings-->
<add key="events:EnableHotAndCold" value="false" />
- In the
runtime/assemblyBinding
section, modify the followings:
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
Worker Site - Casewhere.Web.CaseWorker
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
- In the
appSettings
section, modify the following key:
<add key="owin:appStartup" value="Casewhere.Worker.Web.Startup" />
- In the
runtime/assemblyBinding
section, add the followings:
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
</dependentAssembly>
Configuration Site - Casewhere.Configuration.Web
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
- In the
appSettings
section, add the following keys:
<!-- Event settings-->
<add key="events:EnableHotAndCold" value="false" />
Enable Hot and Cold
Warning! Only enable the feature when your project requires doing so
Please follow this guideline to learn about the Hot and Cold feature and enable it for your deployment.
2.7.1.1 - 14/02/2022
There is no change in configuration.
2.7.1.2 - 11/03/2022
Worker Api - Casewhere.Worker.Api
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
Apply the below changes in the web.config
:
In the
appSettings
section, remove the following keys:- serilog:using:ApplicationInsights
- serilog:write-to:ApplicationInsights.telemetryConverter
- serilog:write-to:ApplicationInsights.restrictedToMinimumLev
In the
secureAppSettings
section, remove the key:- serilog:write-to:ApplicationInsights.instrumentationKey
Important! This step is applied for deploying on Azure App Service only.
In Azure Portal, open the Worker Api App Service, navigate to Configuration / Application Settings and remove the following keys:
- serilog:using:ApplicationInsights
- serilog:write-to:ApplicationInsights.telemetryConverter
- serilog:write-to:ApplicationInsights.restrictedToMinimumLev
- serilog:write-to:ApplicationInsights.instrumentationKey
2.7.1.3 - 28/04/2022
Important! In this release we need run migration data for this bug: Duplicate ComponentRules when publishing the worker site
To remove the duplication, use the url with the following format:
[Admin domain]/Maintenance/RemoveWorkerSiteComponentDuplication
This Url to preview the list of duplicated components that will be removed later, but they are not removed
[Admin domain]/Maintenance/RemoveWorkerSiteComponentDuplication?acceptRemoval=true
This Url to remove the duplicated components and show the list of results.
2.7.1.4 - 07/06/2022
Information! If you're replacing the old web.config with the new one e.g. when deploying on Azure App Service, you can ignore this step
In Azure Portal, open the Worker site App Service, navigate to Configuration / Application Settings and add the new key:
- Name: fcn:StopMonitoringSubFolders
- Value: true
2.7.1.5 - 11/08/2022
Impact in this version, we had an upgrade of the latest version of Azure Storage SDK (12.13.0). So, these features will be affected:
- The management of the Files on Admin site
- The IDocumentApi in the Scripted Activity
- The Upload file component in the Form Activity
- The download file function from the Worker Site
Information! If you are replacing the old web.config with the new one, then you can ignore this step.
Worker Api - Casewhere.Worker.Api
Open the web.config and update the setting key below:
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
2.7.1.6 - 08/09/2022
Important! From this version, please following instructions below if we are using Azure Application Insight otherwise just skip it.
Enable Azure Application Insight codeless integration
2.7.1.7 - 20/10/2022
There is no change in configuration.
2.7.1.8.patch - 20/10/2023
Important! This version is a patch, please following instructions below to deploy a hotfix path.
- Extract the hotfix patch package to a temp folder.
On Azure
- Go to Kudu site and navigate to the Kudu wwwroot directory of each sites:
- Configuration.Web
- Casewhere.Web.CaseWorker
- Casewhere.Worker.Api
- Drag and drop corresponding files to the Kudu wwwroot directory of target sites:
- Configuration.Web.zip
- Casewhere.Web.CaseWorker.zip
- Casewhere.Worker.Api.zip
On Premise
- Copy all files and folders from patch to the target folders
- Configuration.Web
- Casewhere.Web.CaseWorker
- Casewhere.Worker.Api
2.7.2 - 20/07/2022
Migrating Parameters for Server rules:
Important! We need to run migration script for query string parameters are used in Web Trigger Server Rules
Run Api for migrating Parameters syntax for Web Trigger Server Rules:
[Admin domain]/Maintenance/MigrateParametersForServerRule
// Old script
@parameters["Code"] == "AP001"
// New script
@parameters["Code"].ToString() == "AP001"
Notes: The Query string Name will be case insensitive.
Web Trigger Support PUT/DELETE method:
- Should overwrite the web.config from release package.
- If not overwrite, we need to change the web.config of Worker API and add the setting bellow:
<system.webServer>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
Concurrency settings for Workflow Activity:
- Should overwrite the web.config from release package.
- If not overwrite, we need to change the web.config of Worker API and add the new setting keys bellow:
<appSettings>
<!-- Engine Settings -->
<add key="engine:ConcurrencyMaxTimeout" value="00:03:00" />
<add key="engine:ConcurrencyDelayTime" value="2000" />
<add key="engine:WorkflowExecutionLockMaxTimeout" value="00:01:00" />
</appSettings>
Update frontend libs for security patches:
- The client script of worker site will be migrated to:
- Jquery v3.2.1 -> v3.6.0
- Bootstrap v4.0.0 -> v4.6.0
- JqueryUI v1.12.1 -> v1.13.1
Important! Please consider Warning console log in Browser for migrating worker site client script.
DslCompilerContext: Improve SetTemp, GetTemp:
- The ctx.GetTemp will throw an exception when key is not existed.
- Support ctx.HasTempKey to check the temporary key existed or not.