Thursday, May 2, 2024

Permission error when running "Power Platform Backup Environment" in Azure DevOps

 When we run action "Power Platform Backup Environment" in Azure Devops with an App Registration account, we get the error "Principal with id '...' for application *** does not have permission to access the path 'https://10.0.1.21:20414/providers/Microsoft.BusinessAppPlatform/environments/.../backups?api-version=2020-08-01' in tenant ...". This means this account is missing the permission to run the backup. However we cannot setup the permission for it in Power Platform Admin Center for Microsoft 365 Admin Center. You can setup this permission by using powershell with the guideline in this link: https://learn.microsoft.com/en-us/power-platform/admin/powershell-create-service-principal#registering-an-admin-management-application


$appId = "CLIENT_ID_FROM_AZURE_APP"

# Login interactively with a tenant administrator for Power Platform
Add-PowerAppsAccount -Endpoint prod -TenantID $tenantId 

# Register a new application, this gives the SPN / client application same permissions as a tenant admin
New-PowerAppManagementApp -ApplicationId $appId

 After that, the action can run successfully.

Thursday, March 21, 2024

Error (ESLint) i.CLIEngine is not a constructor in Visual Studio 2019

To correct the ESLint error 'i.CLIEngine is not a constructor' in Visual Studio 2019 with ESLint version 8.57.0, you can follow these steps:


1. Navigate to the following file path and open the file in a text editor: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\ServiceHub\Services\TypeScriptLintingService\TypeScriptLintingService.all.js. It is recommended to create a backup of the original file before proceeding.


2. Locate the function e.prototype.eslint within the file and replace it with the following code:


e.prototype.eslint = function(e) {

return new Promise(async (resolve) => {

try {

var config = JSON.parse(e);

var ESLintModule = this.dynamicRequire(config.linterPath + n.sep + "node_modules" + n.sep + "eslint");

var results = [];


if (ESLintModule.ESLint) {

var options = {

cwd: config.projectRoot,

resolvePluginsRelativeTo: config.linterPath

};


var eslintInstance = new ESLintModule.ESLint(options);

results = await eslintInstance.lintText(config.fileContents, { filePath: config.fileName });

} else {

var optionsLegacy = {

cwd: config.projectRoot,

ignorePattern: ["wwwroot/lib/**", "**/node_modules/**", "**/bower_components/**", "**/jspm_packages/**"],

resolvePluginsRelativeTo: config.linterPath

};


if (config.parserPath) {

optionsLegacy.parser = config.parserPath;

}


results = new ESLintModule.CLIEngine(optionsLegacy).executeOnText(config.fileContents, config.fileName).results;

}


var report = results[0];

if (report) {

report.messages.forEach(this.addRuleIdToParseError);

var validMessages = report.messages.filter((message) => message.ruleId != null);

validMessages.forEach(this.addLocationInfoFromSourceCode);

resolve({ lintMessages: validMessages });

} else {

resolve({});

}

} catch (error) {

resolve({ errorMessage: error.message });

}

});

}


3. After making the changes, save the file and restart Visual Studio to apply the update.


Saturday, July 15, 2023

Power Automate Desktop error: The request content is not valid and could not be deserialized: 'Unexpected character encountered while parsing value: %. Path '', line 0, position 0.'

 When you use "Invoke web service" action with URL that has special character "%", you can escape this character with "%%". But when you run, this error happens.

I got this error and I tried many methods. Only one method helped me to solve this. I turned the option "Encode request body" to Off in the Advanced setting of "Invoke web service" action.








Sunday, September 12, 2021

Tips for setting lookup value of using Dynamics 365 Web API

 Working with Dynamics 365 CRM, when you set a value for lookup field, maybe you will get the error “Invalid property ‘your_field' was found in entity ‘the_entity’. ---> Microsoft.OData.ODataException: Does not support untyped value in non-open type” or error “An undeclared property ‘your_field' which only has property annotations in the payload but no property value was found in the payload. In OData, only declared navigation properties and declared named streams can be represented as properties without values.”. This means you are not setting this field incorrectly.

The first situation is you are not using the field schema name.

The second situation is you are not setting it correctly. There are several situations with the lookup field to do this:

  • Non-activity entity/table, single lookup field (lookup to only one table)

entity[<your_schema_field_name>@odata.bind] = “/<entity_logical_name in plural>(<entity_id>)”

For example: A custom field new_account lookups to account table

entity[new_accountid@odatabind] = “/accounts(b2ce603e-5bb9-eb11-8236-0022481736ba)”

  • Activity entity/table, single lookup field

entity[<your_schema_field_name>_<ActivityName>@odata.bind] = “/<entity_logical_name in plural>(<entity_id>)”

For example:

entity[new_accountid_PhoneCall@odatabind] = “/accounts(b2ce603e-5bb9-eb11-8236-0022481736ba)”

entity[new_accountid_Task@odatabind] = “/accounts(b2ce603e-5bb9-eb11-8236-0022481736ba)" 

  • For regarding field

entity[<your_schema_field_name>_<entity_lookup_logical_name>@odata.bind] = “/<entity_logical_name in plural>(<entity_id>)”

For example:

entity[regardingobjectid_account@odatabind] = “/accounts(b2ce603e-5bb9-eb11-8236-0022481736ba)” 

Sunday, June 20, 2021

Error 0x80131500 when installing SQL Server Integration Service Project Extension in Visual Studio 2019

If you install SQL Server Integration Service Project extension in Visual Studio 2019 and get this error 0x80131500, you can check the log in folder  %TEMP%\SsdtisSetup. From the log detail of files in this folder, you can know more about the error detail.

Monday, June 14, 2021

Container with WSL

  • Install Docker with WSL
With WSL 2, we can setup Docket Desktop and enable WSL 2 based engine.

First you install WSL 2. Then you download Docker Desktop from https://www.docker.com/products/docker-desktop and install it. After that, you have to log out and log in again to run Docker Desktop. Then, right click on the Docker icon on the system tray and select Setting. Enable the option Use the WSL 2 based engine to configure Docker run under WSL 2 rather than a Virtual Machine.


 For the tab Resources, we can configure which Linux distro to access Docker from.

  • Setup Kubernetes
In the Docker Desktop settings, we can enable the Kubernetes option to setup the Kubernetes cluster.






Permission error when running "Power Platform Backup Environment" in Azure DevOps

 When we run action "Power Platform Backup Environment" in Azure Devops with an App Registration account, we get the error "P...