Skip to content

Tag: EnvironmentVariable

Retrieve EnvironmentVariableValue in JavaScript

Posted in Power Platform, and Dynamics 365

In my private project (Key Box), I stored a JSON configuration in an Environment Variable. To retrieve its value, I had could use two queries. The first query to retrieve the GUID of the Environment Variable Definition and the second query to retrieve the Environment Variable Value. But there is a better way: the RetrieveEnvironmentVariableValue WebApi function.

Below is the async function I wrapped around it to make it easy reusable.

Retrieve EnvironmentVariableValue JavaScript

async function getEnvironmentVariableValue (schemaName) {
  return Xrm.WebApi.online
    .execute({
      DefinitionSchemaName: schemaName,
      getMetadata: function () {
        return {
          boundParameter: null,
          parameterTypes: { 
            DefinitionSchemaName: { 
              typeName: "Edm.String", 
              structuralProperty: 1, 
            } ,
          },
          operationType: 1,
          operationName: "RetrieveEnvironmentVariableValue",
        };
      },
    })
    .then(function success(response) {
      if (response.ok) {
        return response.json();
      }
    })
    .then(function (responseBody) {
      return responseBody["Value"];
    })
    .catch(function (error) {
      console.error(error.message);
    });
}

Retrieve EnvironmentVariableValue in Power Fx

Posted in Power Platform, and Dynamics 365

In my private project (Key Box), I store a JSON configuration in an Environment Variable. To retrieve its value, I use two queries. The first query to retrieve the GUID of the Environment Variable Definition and the second query to retrieve the Environment Variable Value. I don’t use the Retrieve EnvironmentVariableValue function because I also need to update the environment variable later.

Power Fx to query an EnvironmentVariable and its EnvironmentVariableValue

1. Get the environment variable definition record by schema name

Set(
    envVarDefRec; 
    First(
        Filter(
            'Environment Variable Definitions';
            'Schema Name' = "new_YourSchemaName"
        )
    )
);;

Set(name; value) to create the variable envVarDefRec and store the value.
First(table) to get the first record of the passed table.
Filter(table; condition) to filter the Environment Variable Definitions table by scheme name.

2. Get the EnvironmentVariableValue record

Set(
    envVarValRec; 
    First(
        envVarDefRec.'Environment Variable Values'
    )
);;

Set(name; value) to create the variable envVarValRec and store the value.
First(table) to get the first record of the passed table.

3. Get the value from the EnvironmentVariableValue record

Set(name; value) to create the variable envVarVal and store the value of envVarValRec.Value.

Set(envVarVal; envVarValRec.Value);;

Bonus: Apply the default value from EnvironmentVariableDefinition record if the EnvironmentVariableValue is empty.

If(condition; then) to do the next action only if the condition is fulfilled.
IsBlank(value) to check is envVarVal contains data.
Set(name; value) to fill the variable envVarVal and store the value of envVarValRec.Value.

If(
    IsBlank(envVarVal);
    Set(envVarVal;envVarDefRec.'Default Value')
);;

Update EnvironmentVariableValue in Power Fx

Posted in Power Platform, and Dynamics 365

In my private project (Key Box), I stored a JSON configuration in an Environment Variable. The configuration is displayed in a custom page and can be edited there. Here is how to update an EnvironmentVariableValue in Power Fx.

To update a Dataverse record, you need a reference to it. In my case, I already retrieved it as record in the step before, stored as global variable “envVarValRec” and I just reuse it now.

Update EnvironmentVariableValue in Power Fx

Patch(
   'Environment Variable Values'; // the table name
   envVarValRec; // the record to update
   Defaults('Environment Variable Values');
   {
      Value: "payload" // the string to store
   }
)