You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Sample Terraform config that describes how the new resource might look.data"powerplatform_solution_checker_rules""example_data_source" {
environment_id="GUID"
}
output should be
rules (set)
outputs for each rule
code
description
summary
how_to_fix
guidance_url
component_type
primary_category
include
severity
optionally include fields like
component_type_description
primary_category_description
[
{
"description": "Checks for duplicate Dataverse plug-in registrations",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/data-platform/best-practices/business-logic/do-not-duplicate-plugin-step-registration",
"include": true,
"code": "meta-remove-dup-reg",
"summary": "Duplicate plug-in registration",
"componentType": 0,
"primaryCategory": 1,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for filtering attributes with Dataverse plug-in registrations",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/data-platform/best-practices/business-logic/include-filtering-attributes-plugin-registration",
"include": true,
"code": "meta-avoid-reg-no-attribute",
"summary": "Check plug-in filtering attributes",
"componentType": 0,
"primaryCategory": 1,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for Dataverse plug-ins registered for Retrieve and RetrieveMultiple messages",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/data-platform/best-practices/business-logic/limit-registration-plugins-retrieve-retrievemultiple",
"include": true,
"code": "meta-avoid-reg-retrieve",
"summary": "Check plug-ins for Retrieve messages",
"componentType": 0,
"primaryCategory": 1,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for inactive plug-in configurations in Dataverse",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/model-driven-apps/best-practices/business-logic/remove-deactivated-disabled-configurations",
"include": true,
"code": "meta-remove-inactive",
"summary": "Check inactive plug-ins",
"componentType": 0,
"primaryCategory": 7,
"severity": 2,
"howToFix": ""
},
{
"description": "Checks for usage of unpublished APIs",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-unpub-api",
"include": true,
"code": "web-avoid-unpub-api",
"summary": "Avoid unpublished APIs",
"componentType": 0,
"primaryCategory": 8,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks if modal dialogs are used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-modals",
"include": true,
"code": "web-avoid-modals",
"summary": "Check using modal dialogs",
"componentType": 0,
"primaryCategory": 8,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for usage of the Dynamics CRM 2011 Odata 2.0 endpoint",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-crm2011-service-odata",
"include": true,
"code": "web-avoid-crm2011-service-odata",
"summary": "Avoid CRM 2011 OData endpoint",
"componentType": 0,
"primaryCategory": 2,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for usage of the Dynamics CRM 2011 SOAP endpoint",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-crm2011-service-soap",
"include": true,
"code": "web-avoid-crm2011-service-soap",
"summary": "Avoid CRM 2011 SOAP endpoint",
"componentType": 0,
"primaryCategory": 2,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for usage of Internet Explorer legacy APIs or browser plug-ins",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-browser-specific-api",
"include": true,
"code": "web-avoid-browser-specific-api",
"summary": "Avoid browser specific APIs",
"componentType": 0,
"primaryCategory": 2,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for usage of the deprecated Dynamics CRM 2011 object model",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-2011-api",
"include": true,
"code": "web-avoid-2011-api",
"summary": "Avoid CRM 2011 API",
"componentType": 0,
"primaryCategory": 2,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for usage of absolute Dataverse endpoint URIs",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-relative-uri",
"include": true,
"code": "web-use-relative-uri",
"summary": "Use relative URIs",
"componentType": 0,
"primaryCategory": 7,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for async pattern in web resources",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-async",
"include": true,
"code": "web-use-async",
"summary": "Check async pattern",
"componentType": 0,
"primaryCategory": 1,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for usage of window.top API",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-window-top",
"include": true,
"code": "web-avoid-window-top",
"summary": "Avoid window.top",
"componentType": 0,
"primaryCategory": 8,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks if client context is used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-client-context",
"include": true,
"code": "web-use-client-context",
"summary": "Use client context",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if navigation API parameters are used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-navigation-api",
"include": true,
"code": "web-use-navigation-api",
"summary": "Use navigation API",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if offline mode is used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-offline",
"include": true,
"code": "web-use-offline",
"summary": "Use offline mode",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if the grid APIs are used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-grid-api",
"include": true,
"code": "web-use-grid-api",
"summary": "Use grid API",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for usage of isActivityType",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-isactivitytype",
"include": true,
"code": "web-avoid-isactivitytype",
"summary": "Avoid isActivityType",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for usage of Silverlight",
"guidanceUrl": "https://learn.microsoft.com/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming#BKMK_Silverlight",
"include": true,
"code": "meta-avoid-silverlight",
"summary": "Avoid Silverlight",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for registering a plugin on RetrieveMultiple of annotation",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/data-platform/best-practices/",
"include": true,
"code": "meta-avoid-retrievemultiple-annotation",
"summary": "Check plug-ins for RetrieveMultiple of annotations",
"componentType": 0,
"primaryCategory": 3,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for the usage of debug scripts",
"guidanceUrl": "https://learn.microsoft.com/powerapps/developer/model-driven-apps/best-practices/",
"include": true,
"code": "web-remove-debug-script",
"summary": "Remove debug scripts",
"componentType": 0,
"primaryCategory": 3,
"severity": 3,
"howToFix": "Remove debug script prior to inclusion in a release"
},
{
"description": "Checks if strict mode is used",
"guidanceUrl": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode/Transitioning_to_strict_mode",
"include": true,
"code": "web-use-strict-mode",
"summary": "Use strict mode",
"componentType": 0,
"primaryCategory": 3,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if strict equality operators are used",
"guidanceUrl": "https://developer.mozilla.org/docs/Web/JavaScript/Equality_comparisons_and_sameness",
"include": true,
"code": "web-use-strict-equality-operators",
"summary": "Use strict equality operators",
"componentType": 0,
"primaryCategory": 3,
"severity": 3,
"howToFix": "Convert == to === and != to !==."
},
{
"description": "Checks for usage of eval function or its functional equivalents",
"guidanceUrl": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/eval",
"include": true,
"code": "web-avoid-eval",
"summary": "Avoid eval",
"componentType": 0,
"primaryCategory": 4,
"severity": 5,
"howToFix": ""
},
{
"description": "Checks for high severity formula issues in Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/formula-reference",
"include": true,
"code": "app-formula-issues-high",
"summary": "Fix high severity formula issues",
"componentType": 0,
"primaryCategory": 5,
"severity": 5,
"howToFix": "Review the formula issues reported in app checker while editing the app."
},
{
"description": "Checks for medium severity formula issues in Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/formula-reference",
"include": true,
"code": "app-formula-issues-medium",
"summary": "Fix medium severity formula issues",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Review the formula issues reported in app checker while editing the app."
},
{
"description": "Checks for low severity formula issues in Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/formula-reference",
"include": true,
"code": "app-formula-issues-low",
"summary": "Fix low severity formula issues",
"componentType": 0,
"primaryCategory": 5,
"severity": 2,
"howToFix": "Review the formula issues reported in app checker while editing the app."
},
{
"description": "Checks if delayed loading is used in Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/performance-tips#use-delayed-load",
"include": true,
"code": "app-use-delayoutput-text-input",
"summary": "Use delay load",
"componentType": 0,
"primaryCategory": 1,
"severity": 3,
"howToFix": "Enable DelayOutput property of the text input control."
},
{
"description": "Checks for excessive controls on a screen in Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/performance-tips#limit-the-number-of-controls",
"include": true,
"code": "app-reduce-screen-controls",
"summary": "Reduce screen controls",
"componentType": 0,
"primaryCategory": 1,
"severity": 3,
"howToFix": "Break the app up into more screens."
},
{
"description": "Checks if accessible labels are included in Canvas apps",
"guidanceUrl": "https://www.w3.org/WAI/tutorials/forms/labels/",
"include": true,
"code": "app-include-accessible-label",
"summary": "Include accessible label",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Edit the accessible label property to describe the item."
},
{
"description": "Checks if all interactive elements are accessible to alternative inputs in Canvas apps",
"guidanceUrl": "https://www.w3.org/WAI/tips/developing/#ensure-that-all-interactive-elements-are-keyboard-accessible",
"include": true,
"code": "app-include-alternative-input",
"summary": "Include alternative input",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Add a text input in addition to the pen control for an accessible experience."
},
{
"description": "Checks for autostart on players within a Canvas app",
"guidanceUrl": "https://digital.gov/2014/06/30/508-accessible-videos-use-a-508-compliant-video-player/",
"include": true,
"code": "app-avoid-autostart",
"summary": "Avoid autostart in app",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Set autostart for video and audio to False."
},
{
"description": "Without captions, people with disabilities may not get any of the information in a video or audio segment.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-captions",
"summary": "Missing captions",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Use the ClosedCaptionsURL property to add the URL for captions."
},
{
"description": "If the focus isn't visible, people who don't use a mouse won't be able to see it when they're interacting with the app.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-make-focusborder-visible",
"summary": "Focus isn't showing",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Change the FocusedBorderThickness property to be more than 0."
},
{
"description": "Changing this property setting will give the user better information about the function of the controls in your app.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-helpful-control-setting",
"summary": "Missing helpful control settings",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Select the warning and set the item property to true to enable control setting."
},
{
"description": "Your app won't work correctly and will not be accessible if you place interactive HTML elements.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-avoid-interactive-html",
"summary": "If this HTML contains interactive elements, consider using another method, or remove the HTML from this element.",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Use another method instead of HTML, or remove the HTML from this element."
},
{
"description": "People who are blind, have low vision, or a reading disability rely on screen titles to navigate using the screen reader. ",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-readable-screen-name",
"summary": "Revise screen name",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Give the screen a title that describes what's on the screen or what it's used for."
},
{
"description": "Users won't get confirmation of their actions if the state of the control isn't showing.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-state-indication-text",
"summary": "Add State indication text",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Set ShowValue = true to show the current state of the control."
},
{
"description": "When a screen reader reads the elements of a slide, it's important that they appear in the order that a user would see them, instead of the order they were added to the slide.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-tab-order",
"summary": "Check the order of the screen items",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Make sure that your screen elements match the order in which you'd want to tab through them."
},
{
"description": "People who use the keyboard with your app will not be able to access this element without a tab stop.",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/canvas-apps/accessibility-checker#types-of-issues",
"include": true,
"code": "app-include-tab-index",
"summary": "Missing tab stop",
"componentType": 0,
"primaryCategory": 9,
"severity": 3,
"howToFix": "Set TabIndex to 0 or greater to ensure that interactive elements have a tab stop."
},
{
"description": "Avoid recursive action as they may result in an infinite trigger loop",
"guidanceUrl": "https://learn.microsoft.com/flow/error-checker",
"include": true,
"code": "flow-avoid-recursive-loop",
"summary": "Avoid recursive action as they may result in an infinite trigger loop",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": ""
},
{
"description": "Include valid references for actions",
"guidanceUrl": "https://learn.microsoft.com/flow/error-checker",
"include": true,
"code": "flow-avoid-invalid-reference",
"summary": "Include valid references for actions",
"componentType": 0,
"primaryCategory": 3,
"severity": 4,
"howToFix": ""
},
{
"description": "Include all required outlook attachment information",
"guidanceUrl": "https://learn.microsoft.com/flow/error-checker",
"include": true,
"code": "flow-outlook-attachment-missing-info",
"summary": "Include all required outlook attachment information",
"componentType": 0,
"primaryCategory": 3,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for missing unmanaged dependencies in the solution",
"guidanceUrl": "https://learn.microsoft.com/troubleshoot/power-platform/power-apps/solutions/missing-dependency-on-solution-import",
"include": true,
"code": "meta-include-missingunmanageddependencies",
"summary": "Checks for missing unmanaged dependencies in the solution. Missing unmanaged dependencies will cause a solution to fail to import in a target environment",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Add or Remove references to any reported unmanaged dependencies not included within the solution."
},
{
"description": "Checks for usage of alert function or its functional equivalents",
"guidanceUrl": "https://eslint.org/docs/rules/no-alert",
"include": true,
"code": "web-remove-alert",
"summary": "Remove alerts",
"componentType": 0,
"primaryCategory": 3,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for the usage of methods on console",
"guidanceUrl": "https://eslint.org/docs/rules/no-console",
"include": true,
"code": "web-remove-console",
"summary": "Remove console statements",
"componentType": 0,
"primaryCategory": 3,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if global context is used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-global-context",
"include": true,
"code": "web-use-global-context",
"summary": "Use global context",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks if org settings are used",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-org-setting",
"include": true,
"code": "web-use-org-setting",
"summary": "Use organization settings",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for high severity formula issues in Test Studio Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/working-with-test-studio#test-functions",
"include": true,
"code": "app-testformula-issues-high",
"summary": "Fix high severity formula issues for Test Studio",
"componentType": 0,
"primaryCategory": 5,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for medium severity formula issues in Test Studio Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/working-with-test-studio#test-functions",
"include": true,
"code": "app-testformula-issues-medium",
"summary": "Fix medium severity formula issues for Test Studio",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for low severity formula issues in Test Studio Canvas apps",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/canvas-apps/working-with-test-studio#test-functions",
"include": true,
"code": "app-testformula-issues-low",
"summary": "Fix low severity formula issues for Test Studio",
"componentType": 0,
"primaryCategory": 5,
"severity": 2,
"howToFix": ""
},
{
"description": "Use connection references instead of connections.",
"guidanceUrl": "https://learn.microsoft.com/powerapps/maker/data-platform/create-connection-reference#updating-a-flow-to-use-connection-references-instead-of-connections",
"include": true,
"code": "flow-avoid-connection-mode",
"summary": "Use connection references instead of connections.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": ""
},
{
"description": "Checks for usage of 'with' operator",
"guidanceUrl": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/with",
"include": true,
"code": "web-avoid-with",
"summary": "Avoid 'with' operator",
"componentType": 0,
"primaryCategory": 1,
"severity": 4,
"howToFix": ""
},
{
"description": "Checks for usage of the loadTheme Fluent v8 API",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/avoid-loadtheme",
"include": true,
"code": "web-avoid-loadtheme",
"summary": "Avoid LoadTheme API",
"componentType": 0,
"primaryCategory": 8,
"severity": 2,
"howToFix": "It's recommended to replace it with `ThemeProvider`. That way, your application consistently has one way of providing a theme."
},
{
"description": "Checks for usage of userSettings.securityRolePrivileges",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-getsecurityroleprivilegesinfo",
"include": true,
"code": "web-use-getsecurityroleprivilegesinfo",
"summary": "Avoid securityRolePrivileges",
"componentType": 0,
"primaryCategory": 1,
"severity": 3,
"howToFix": ""
},
{
"description": "HTTP cookies are an old client-side storage mechanism with inherent risks and limitations. Use Web Storage, IndexedDB or other modern methods instead.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-cookies.md",
"include": true,
"code": "web-sdl-no-cookies",
"summary": "Do not use HTTP cookies in modern applications",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Writes to document.domain property must be reviewed to avoid bypass of same-origin checks. Usage of top level domains such as azurewebsites.net is strictly prohibited.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-document-domain.md",
"include": true,
"code": "web-sdl-no-document-domain",
"summary": "Do not write to document.domain property",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Calls to document.write or document.writeln manipulate DOM directly without any sanitization and should be avoided. Use document.createElement() or similar methods instead.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-document-write.md",
"include": true,
"code": "web-sdl-no-document-write",
"summary": "Do not write to DOM directly using document.write or document.writeln methods",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Direct calls to method html() often (e.g. in jQuery framework) manipulate DOM without any sanitization and should be avoided. Use document.createElement() or similar methods instead.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-html-method.md",
"include": true,
"code": "web-sdl-no-html-method",
"summary": "Do not write to DOM directly using jQuery html() method",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Assignments to innerHTML or outerHTML properties manipulate DOM directly without any sanitization and should be avoided. Use document.createElement() or similar methods instead.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-inner-html.md",
"include": true,
"code": "web-sdl-no-inner-html",
"summary": "Do not write to DOM directly using innerHTML/outerHTML property",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Insecure protocols such as HTTP or FTP should be replaced by their encrypted counterparts (HTTPS, FTPS) to avoid sending potentially sensitive data over untrusted networks in plaintext.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-insecure-url.md",
"include": true,
"code": "web-sdl-no-insecure-url",
"summary": "Do not use insecure URLs",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Calls to MSApp.execUnsafeLocalFunction() bypass script injection validation and should be avoided.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-msapp-exec-unsafe.md",
"include": true,
"code": "web-sdl-no-msapp-exec-unsafe",
"summary": "Do not bypass script injection validation",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Always provide specific target origin, not * when sending data to other windows using postMessage to avoid data leakage outside of trust boundary.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-postmessage-star-origin.md",
"include": true,
"code": "web-sdl-no-postmessage-star-origin",
"summary": "Do not use * as target origin when sending data to other windows",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Calls to WinJS.Utilities.setInnerHTMLUnsafe() and similar methods do not perform any input validation and should be avoided. Use WinJS.Utilities.setInnerHTML() instead.",
"guidanceUrl": "https://github.com/microsoft/eslint-plugin-sdl/blob/main/docs/rules/no-winjs-html-unsafe.md",
"include": true,
"code": "web-sdl-no-winjs-html-unsafe",
"summary": "Do not set HTML using unsafe methods from WinJS.Utilities",
"componentType": 0,
"primaryCategory": 4,
"severity": 3,
"howToFix": ""
},
{
"description": "Ensure brand color is a valid hexadecimal color and should not be white (#ffffff) or default (#007ee5).",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244386",
"include": true,
"code": "connector-validate-brandcolor",
"summary": "Invalid brand color",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure brand color is a valid hexadecimal color and should not be white (#ffffff) or default (#007ee5)."
},
{
"description": "Ensure a) icon is in PNG format with size below 1MB b) icon's dimensions are 1:1 and fall within the range of 100x100 to 230x230 pixels c) icon matches the brand color with non-transparent, non-white color (#ffffff) and not-default color (#007ee5) background d) logo dimensions are below 70% for image's height & width with consistent background.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244166",
"include": true,
"code": "connector-validate-iconimage",
"summary": "Invalid Icon Image Size",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure a) icon is in PNG format with size below 1MB b) icon's dimensions are 1:1 and fall within the range of 100x100 to 230x230 pixels c) icon matches the brand color with non-transparent, non-white color (#ffffff) and not-default color (#007ee5) background d) logo dimensions are below 70% for image's height & width with consistent background."
},
{
"description": "Ensure the openapidefinition is a well formatted JSON.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244842",
"include": true,
"code": "connector-validate-swagger-isproperjson",
"summary": "The openapidefinition.json is not a valid JSON.",
"componentType": 0,
"primaryCategory": 5,
"severity": 4,
"howToFix": "Ensure the openapidefinition is a well formatted JSON."
},
{
"description": "Ensure swagger definition complies with OpenAPI 2.0 standard.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2245509",
"include": true,
"code": "connector-validate-swagger",
"summary": "Swagger definition does not confirm to the OpenAPI 2.0 standard.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure swagger definition complies with OpenAPI 2.0 standard."
},
{
"description": "Ensure swagger definition complies with OpenAPI 2.0 standard and connectors' extended standard.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2245307",
"include": true,
"code": "connector-validate-swagger-extended",
"summary": "Swagger definition does not confirm to the connector extended standards.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure swagger definition complies with OpenAPI 2.0 standard and connectors' extended standard."
},
{
"description": "Ensure connector title is unique and distinguishable from pre-existing connector title.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2247920",
"include": true,
"code": "connector-validate-title",
"summary": "Connector title is not unique.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure connector title is unique and distinguishable from pre-existing connector title."
},
{
"description": "Ensure the connectionparameters is a well formatted JSON.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2248011",
"include": true,
"code": "connector-validate-connectionparam-isproperjson",
"summary": "The connectionparameters.json is not a valid JSON.",
"componentType": 0,
"primaryCategory": 5,
"severity": 4,
"howToFix": "Ensure the connectionparameters is a well formatted JSON."
},
{
"description": "Ensure the property is updated with appropriate value.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2247861",
"include": true,
"code": "connector-validate-connectionparameters",
"summary": "The connectionparameter is not well formed.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure the property is updated with appropriate value."
},
{
"description": "Ensure the identity provider is from the list of supported oauth2 providers.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2248012",
"include": true,
"code": "connector-validate-connectionparam-oauth2idp",
"summary": "Invalid OAuth2 Identity Provider",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Ensure the identity provider is from the list of supported oauth2 providers."
},
{
"description": "Dynamics 365 SDK messages require users executing these operations to be licensed with any of the Dynamics 365 licenses entitled to this operation. Check product documentation and the Dynamics 365 Licensing Guide for additional information and license entitlements.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2247983",
"include": true,
"code": "meta-license-sales-sdkmessages",
"summary": "Dynamics 365 SDK messages require users executing these operations to be licensed with any of the appropriate Dynamics 365 license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Ensure that any user of this application is properly licensed with a Dynamics 365 license entitled to this operation."
},
{
"description": "Some operations performed on Dynamics 365 entities require users executing these operations to be licensed with any of the Dynamics 365 licenses entitled to this operation. Check product documentation and the Dynamics 365 Licensing Guide for additional information and license entitlements.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2248081",
"include": true,
"code": "meta-license-sales-entity-operations",
"summary": "Some operations performed on Dynamics 365 entities require users executing these operations to be licensed with any of the appropriate Dynamics 365 license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Ensure that any user of this application is properly licensed with a Dynamics 365 license entitled to this operation."
},
{
"description": "Some Dynamics 365 Sales controls require users accessing these controls to be licensed with a Dynamics 365 Sales license. Check product documentation for additional information.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2248449",
"include": true,
"code": "meta-license-sales-customcontrols",
"summary": "Some Dynamics 365 Sales controls require users accessing these controls to be licensed with a Dynamics 365 Sales license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Ensure that any user of this application is properly licensed with a Dynamics 365 Sales license."
},
{
"description": "Checks for usage of legacy Xrm.Panel APIs",
"guidanceUrl": "https://learn.microsoft.com/power-apps/maker/data-platform/powerapps-checker/rules/web/use-appsidepane-api",
"include": true,
"code": "web-use-appsidepane-api",
"summary": "Use the AppSidePane APIs",
"componentType": 0,
"primaryCategory": 2,
"severity": 3,
"howToFix": ""
},
{
"description": "Dynamics 365 SDK messages require users executing these operations to be licensed with any of the Dynamics 365 licenses entitled to this operation. Check product documentation and the Dynamics 365 Licensing Guide for additional information and license entitlements.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2262812",
"include": true,
"code": "meta-license-fieldservice-sdkmessages",
"summary": "Dynamics 365 SDK messages require users executing these operations to be licensed with any of the appropriate Dynamics 365 license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Please ensure that any user of this application is properly licensed with a Dynamics 365 license entitled to this operation."
},
{
"description": "Some operations performed on Dynamics 365 entities require users executing these operations to be licensed with any of the Dynamics 365 licenses entitled to this operation. Check product documentation and the Dynamics 365 Licensing Guide for additional information and license entitlements.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2262812",
"include": true,
"code": "meta-license-fieldservice-entity-operations",
"summary": "Some operations performed on Dynamics 365 entities require users executing these operations to be licensed with any of the appropriate Dynamics 365 license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Please ensure that any user of this application is properly licensed with a Dynamics 365 license entitled to this operation."
},
{
"description": "Some Dynamics 365 Field Service controls require users accessing these controls to be licensed with a Dynamics 365 Field Service license. Check product documentation for additional information.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2262812",
"include": true,
"code": "meta-license-fieldservice-customcontrols",
"summary": "Some Dynamics 365 Field Service controls require users accessing these controls to be licensed with a Dynamics 365 Field Service license.",
"componentType": 0,
"primaryCategory": 10,
"severity": 2,
"howToFix": "Please ensure that any user of this application is properly licensed with a Dynamics 365 Field Service license."
},
{
"description": "Do not add managed entities with all assets to a solution, as this will result in unexpected missing solution dependencies.",
"guidanceUrl": "https://learn.microsoft.com/troubleshoot/power-platform/power-apps/solutions/missing-dependency-on-solution-import",
"include": true,
"code": "meta-avoid-managed-entity-assets",
"summary": "Managed entities should not be added to a solution with all assets included.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Remove the managed entity from the solution, and then add it back without including all assets."
},
{
"description": "Please add unmanaged entities with all assets to a solution, or this will result in sub-component loss due to segmentation.",
"guidanceUrl": "https://learn.microsoft.com/troubleshoot/power-platform/power-apps/solutions/missing-dependency-on-solution-import",
"include": true,
"code": "meta-include-unmanaged-entity-assets",
"summary": "Unmanaged entities should be added to a solution with all assets included.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Remove the unmanaged entity from the solution, and then add it back with including all assets."
},
{
"description": "The brand color is invalid. Update the brand color with a valid hexadecimal color.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244386",
"include": true,
"code": "connector-validate-hexadecimalbrandcolor",
"summary": "The brand color is invalid. Update the brand color with a valid hexadecimal color.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Update the brand color with valid a hexadecimal color."
},
{
"description": "The icon image is invalid.Icon image should be valid image file and must be submitted in PNG format as icon.png.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244166",
"include": true,
"code": "connector-validate-pngiconimage",
"summary": "The icon image is invalid.Icon image should be valid image file and must be submitted in PNG format as icon.png.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "The icon image is invalid.Icon image should be valid image file and must be submitted in PNG format as icon.png."
},
{
"description": "The icon image size is invalid. Update the icon dimensions to 1:1 within the range of 100x100 to 230x230 pixels.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244166",
"include": true,
"code": "connector-validate-iconsize",
"summary": "The icon image size is invalid. Update the icon dimensions to 1:1 within the range of 100x100 to 230x230 pixels.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Update the icon dimensions to 1:1 within the range of 100x100 to 230x230 pixels."
},
{
"description": "The background color of icon image is invalid. Update with consistent background.",
"guidanceUrl": "https://go.microsoft.com/fwlink/?linkid=2244166",
"include": true,
"code": "connector-validate-backgroundwithbrandiconcolor",
"summary": "The background color of icon image is invalid. Update with consistent background.",
"componentType": 0,
"primaryCategory": 5,
"severity": 3,
"howToFix": "Update the background with consistent background."
},
{
"guidanceUrl": "http://go.microsoft.com/fwlink/?LinkID=398563&error=web-unsupported-syntax&client=PAChecker",
"include": true,
"code": "web-unsupported-syntax",
"componentType": 0,
"primaryCategory": 3,
"severity": 3
}
]
Definition of Done
Data Transfer Objects (dtos)
Data Client functions
Resource Implementation
Resource Added to Provider
Unit Tests for Happy Path
Unit Tests for error path
Acceptance Tests
Example in the /examples folder
Schema Documentation in code
Updated auto-generated provider docs with make docs
Contributions
Do you plan to raise a PR to address this issue? YES / NO?
See the contributing guide for more information about what's expected for contributions.
The text was updated successfully, but these errors were encountered:
Description
Resource
Resource Name:
powerplatform_solution_checker_rules
API documentation:
Estimated complexity/effort: Easy
Related resources/data sources:
powerplatform_managed_environment
Use the environment id to get the runtime endpoints from bapi. you want the power apps advisor
Potential Terraform Configuration
output should be
outputs for each rule
optionally include fields like
Definition of Done
make docs
Contributions
Do you plan to raise a PR to address this issue? YES / NO?
See the contributing guide for more information about what's expected for contributions.
The text was updated successfully, but these errors were encountered: