Blog Post

Azure Integration Services Blog
3 MIN READ

Azure Logic Apps Standard now supports Azure Functions v4

alexzuniga's avatar
alexzuniga
Icon for Microsoft rankMicrosoft
Oct 31, 2022

Azure Logic Apps Standard can now run on the Azure Functions v4 runtime with the approaching end of v3 support

 

To run and deploy both locally and in the cloud, Azure Logic Apps Standard requires the Azure Functions runtime as a prerequisite. We've now enabled support for Functions v4 to provide customers transition time before support for Functions v3 ends in late 2022. New Standard logic app workflows now target the v4 runtime, and existing apps will be automatically upgraded.

 

Note: This upgrade is designed to have no runtime impact and requires no customer action unless you pinned your logic app to a specific bundle version, or if you deployed your logic app as a NuGet-based project. For how to upgrade, see the later sections in this article.

 

How do we plan to roll out the updates?

  • In 2022, between October 17-31, we'll roll out an update that defaults new Standard logic app workflows to use Azure Functions v4. 
  • In 2022, between November 1- December 31, we'll automatically migrate existing Standard logic app workflows to use Azure Functions v4, unless they were deployed as NuGet-based projects, or their configurations were changed to pin a specific extension bundle version.

 

What about the Visual Studio Code extension?

Visual Studio Code extension support for Azure Functions V4 will be available by end of November 2022.

 

Try the v4 runtime now

We'll gradually upgrade existing logic apps, but if you want test the v4 runtime now, you can change your Standard logic app resource's FUNCTIONS_EXTENSION_VERSION app setting.

 

  1. In the Azure portal, on your logic app resource menu, under Settings, select Configuration
  2. On the Configuration pane, find the app setting named FUNCTIONS_EXTENSION_VERSION (1), and change the value from ~v3 to ~v4.
  3. If your app has FUNCTIONS_WORKER_RUNTIME (2) set to node, make sure WEBSITE_NODE_DEFAULT_VERSION (3) is set to ~14
  4. Make sure FUNCTIONS_V2_COMPATIBILITY_MODE is set to false or removed from the settings.

 

 

Upgrade an app that’s pinned to a specific bundle version

If you pinned your Standard logic app to a specific bundle version, Functions v4 won't work because support was added to version 1.2.13 and later.

 

  1. In the Azure portal, on your logic app resource menu, under Settings, select Configuration.
  2. On the Configuration pane, find the app setting named AzureFunctionsJobHost__extensionBundle__version. If the value isn't set to the default version range [1.*, 2.0.0), the Functions v4 runtime won't work.
  3. To resolve this problem, reset the app setting's default version to [1.*, 2.0.0).

 

Upgrade a NuGet-based project

If you deployed your Standard logic app as a NuGet-based project, you must redeploy with the Microsoft.Azure.Workflows.WebJobs.Extension NuGet package, version 1.2.12 or later. Also make sure your set the TargetFraemwork to net6.0, AzureFunctionsVersion to v4. Here is a sample csproj file.


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <MSBuildWarningsAsMessages>MSB3246;$(MSBuildWarningsAsMessages)</MSBuildWarningsAsMessages>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13"/>
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Workflows.WebJobs.Extension" Version="1.2.*"/>
  </ItemGroup>
  <ItemGroup>
    <None Update="Stateful1\**\*.*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <None Update="Artifacts\**\*.*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

Upgrade your ARM template

If your ARM template deployment includes the app setting named FUNCTIONS_EXTENSION_VERSIONWEBSITE_NODE_DEFAULT_VERSION and FUNCTIONS_V2_COMPATIBILITY_MODE  are updated to the values specified above. Otherwise, your deployments will still point to Azure Functions v3.

 

Known Issues

  • Host ID Collisions

    If your app name is longer than 32 characters and also if multiple apps use the same storage account, you may run into the host id collision. Please follow instructions here before you migrate your app.

 

Updated Dec 09, 2022
Version 6.0
  • JamieJones's avatar
    JamieJones
    Copper Contributor

    Hi,

     

    You say to make that WEBSITE_NODE_DEFAULT_VERSION is set to ~14. That Node version is also nearing its end of life. I guess there shouldn't be an issue upgrading it to ~18 (latest LTS)?

     

    Regards,

    Jamie

  • skyaddict's avatar
    skyaddict
    Copper Contributor

    After upgrading my nuget-based project I noticed new build warnings.

    warning NU1701: Package 'Microsoft.SqlServer.Types 11.0.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net6.0'. This package may not be fully compatible with your project.

    I added a package reference to ensure the newest version of Microsoft.SqlServer.Types library. This is a dependency of Microsoft.Azure.Workflows.WebJobs.Extension. seems like that dependency min version should be bumped up.

        <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13"/>
        <PackageReference Include="Microsoft.Azure.Workflows.WebJobs.Extension" Version="1.2.*"/>
        <PackageReference Include="Microsoft.SqlServer.Types" Version="160.1000.6" />