cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Django
MVP

Updating Environment Variables in Managed Solution

Documentation (Use environment variables in solutions - Power Apps | Microsoft Docs) states that we should remove Current Value of Environment Variables before exporting an Unmanaged Solution to a Managed Solution --> this will provide a popup during Managed Solution Import to enter the Environment Variable.

 

How can an Environment Variable Current Value be updated after import?

  1. In the Modern Interface it states 
    This environment variable definition cannot be edited because it is in a managed solution.
  2. In the CDS Data / Dataverse Table it states
    You do not have permission to access these records. Contact your Microsoft Dynamics 365 administrator for help.

I also mentioned this to the Center Of Excellence Starter Kit creators because there I see that Environment Variable Current Values behave in the same way when trying to update existing Environment Variable Values: [BUG]: Edit Environment variable from managed solution · Issue #591 · microsoft/powerapps-tools (git...

 

Anyh other ways that we can edit the values of these variables when imported as Managed Solution?

38 REPLIES 38
JCarlsen
Frequent Visitor

@Django  Thanks for responding.

I have tried the first option which seems to update the variable fine. When i edit the app in the maker experience it points to the correct value aka the current value. But the user experience still points toward the wrong datasource.

 

maker experiencemaker experienceuser experienceuser experienceVariableVariable

 

 

Django
MVP

I see now!

Data sources as an Environment Variable need to be considered a special type of Environment Variable... I do not have a lot of experience in using Data Source Environment Variable in Canvas Apps.

See Use environment variables in solutions - Power Apps | Microsoft Docs. Especially the Current Limitation section at the bottom because there are few limitations when it comes to SPO:

Django_0-1655896456238.png

I suggest you log a ticket with Microsoft if it does not behave as expected.

 

Just to be sure: if you are using Environment Variables in your Canvas App you should not edit the Canvas App in the target environment to change the source right? This can create an Unmanaged Layer around your Canvas App making it "ignore" changes you make to a Data Source Environment Variable. If this does not make any sense to you: investigate more on the purpose of environment variables and power platform solutions before using this.

 

A few checks:

  1. In your screenshot it states Test2 as Current Value of your Data Source Environment Variable.
    How did you achieve this?
  2. Some assumptions:
    1. You have an (development?) Environment where you created a Power Platform Solution that contains a Canvas App and a SharePoint Data Source Environment Variable.
    2. In this DEVenvironment you are referencing the SharePoint Data Source Environment Variable to the Test list.
    3. You have another (production) Environment where you imported the Power Platform and referenced the SharePoint Data Source Environment Variable to the Test2 list.

Issue:

  1. The Canvas App in PRDenvironment when playing the app is still referencing the Test list??
    1. Verify that you do not have an accidentally created Unmanaged Layer in PRDenvironment over your Canvas App.
      (it is best to not open the Power Apps Studio in your PRDenvironment because you should only edit it in the DEVenvironment --> that is the whole purpose of Environment Variables)

Sorry I cannot help into much detail.

I suggest you create an own topic where other experts can help you specific on Canvas Apps and SharePoint Data Source Environment Variables.

JCarlsen
Frequent Visitor

@Django 

  1. Imported a solution with environment variables only containing default values(from DEV --> PROD). As you point out the default value references Testsource 1.
  2. In the target environment(prod) I update the variables through the default solution so that the current value is set to Testsource 2.
  3. Expected result is that the app now points toward testsource 2, as the current value is always used if it is present(trumphs default value). As you correctly say one should not edit the managed app, so im not actually making any changes to the app, its just to find out if its a variable error or a canvas app error. The maker responds to the change in the variable, but the player doesnt. Disabling browser cache makes no difference however, when i close the browser and clear all cache, the correct reference will show, so it seems the issue might be a cache issue in the user experience.

I have even tried removing the default value(referencing Testsource 1) from the variable but the player(user experience) still somehow references Testsource 2.

In short, i have found no reliable way where you can make a change to a variable in a managed solution except when importing blank variables for the first time.

 

There are no unmanaged layers.

 

I appreciate all your effort, I will contact MS support to follow up on the issue.

Regards,

J

Disabling browser cache makes no difference however, when i close the browser and clear all cache, the correct reference will show, so it seems the issue might be a cache issue in the user experience.

So clearing the cache works? You just need to clear the cache everytime you change the Current Value?

 

This could be expected because when publishing an App with a newer version, the caching (or designed workings of Canvas Apps) seems to remember the previous version for quite some (CTRL+F5) refreshes / cache clearing before the newest version is loaded.

JCarlsen
Frequent Visitor

@Django sometimes it works, sometimes not it seems. It might be as you suggest a version memory thing for the user experience. The maker experience updates right away.

ThomasWi
New Member

If you want to use environment variables for environment specific data eg. Test-Path vs. Prod-Path, the the way to do this is add the Environment Variables to a second unmanaged solution. These can be published to and edited in every solution independently.

The managed solution can use the environment variables published in the unmanaged solution and will not need any changes when publishing to another environment.

Hi @ThomasWi, I definitely like this as an option but I also think that Environment Variables should be importable as a managed solution so I am less inclined to say that this is "the (only) way".

Whether it is a a separate solution (which I very much like) or part of a bigger / smaller business solution ==> "It depends..." 😁

mjburley
Resolver II
Resolver II

I prefer to have environment variables in a separate solution to the main solution - I find once imported environment variables virtually never need to change, and the amount of times I forget to clear out the current values in dev before pushing to test wastes me hours!

 

Another approach I use if this is not workable (DataVerse for Teams in particular!) is to include a generic instant flow in the solution (managed) which can be run manually, and takes as an input the env variable definition and value, and then the Flow updates the values for you.

 

Its a write once deploy to any solution model which saves so much anguish.

 

I can point to my example Flow if required, using FetchXML to get back the specific env vars from the DataVerse table and then updating them.

 

Another approach I use more and more is for each app to have a config page for app admins, with fields that can be updated and triggered to update the environment variables directly from the app.

Arkay71
Frequent Visitor

Thanks for all the research here - I have the exact same problem.  I've explored your cache suggestion a bit and one thing that works for me is to specifically remove the powerapps.com cached cookies and site data as shown below.  Once I removed all those shown below the correct data sources started showing up...

 

Arkay71_0-1658398227906.png

 

Helpful resources

Announcements
Ignite 2022

WHAT’S NEXT AT MICROSOFT IGNITE 2022

Explore the latest innovations, learn from product experts and partners, level up your skillset, and create connections from around the world.

Power Apps Africa Challenge 2022

Power Apps Africa Challenge

Your chance to join an engaging competition of Power Platform enthusiasts.

Users online (1,755)