- Release Notes
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-026 - Delay Activity Usage
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- ST-USG-005 - Hardcoded Activity Arguments
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- Variables
- Arguments
- Imported Namespaces
- Recording
- UI Elements
- Control Flow
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Automating Citrix Technologies
- RDP Automation
- Salesforce Automation
- SAP Automation
- VMware Horizon Automation
- Logging
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- Test Suite - Studio
- Extensions
- Troubleshooting
- About troubleshooting
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- JxBrowser applications troubleshooting
- User Events Monitoring
- Citrix Troubleshooting
- Automating Applications Running Under a Different Windows User
Governance
To ensure Studio users adhere to development standards and comply with certain rules, organizations can enforce governance policies that control Studio functionalities.
You can enforce governance policies in one of the following ways:
- Create and deploy policies from Automation Ops, an easy-to-use web application.
- Use a file-based governance model that consists of creating a JSON policy file and deploying the file locally, externally, or via Orchestrator.
The current capabilities are:
- enforce different policies per Studio profile.
- restrict usage of package feeds from the Manage Packages window and Backstage View>Settings > Manage Sources.
- enforce organizational development standards using Workflow Analyzer rules.
- enforce design and location settings, and configure several settings that are not available Studio.
- enable sending Studio usage data to your organization.
- enforce the use of specific repositories for GIT source control.
Watch the following video for an overview of the governance capabilities available in Studio and a demo of how to use them in StudioX.
To enforce a governance policy, start by generating a governance file from Studio, then configure the file using the parameters it contains, and apply the policy in one of the following ways:
- Using a local file (for testing purposes) - Place the governance file in the Roaming folder on the machine where Studio is installed.
- Using an external file (for large deployments) - Place the governance file at a path (for example, an HTTP/HTTPS server) referenced by either a registry key or an asset in Orchestrator.
- Using an asset in Orchestrator - Copy the contents of the governance file to an asset in Orchestrator.
The first step in enforcing development standards in your organization is to generate a governance file from Studio or manually create a similar file that would incorporate all or part of the capabilities we listed above.
.config
with the following name uipath.policies.config
.
To generate a governance file with your current configuration from Studio, go to the Backstage view > Help tab, and select Generate Governance File. The exported file can be shared across your team.
Use the button below to download the sample that includes all Workflow Analyzer rules. Modify the sample to fit your organization's needs.
Governance files may have different versions and a custom name.
{
"Metadata": {
"Version": "1.0"
"LastUpdatedUtc": "2021-08-25T07:49:26.3089368Z",
"Availability": null
},
"Info": {
"Name": "Sample Policy Registry Key"
}
}
{
"Metadata": {
"Version": "1.0"
"LastUpdatedUtc": "2021-08-25T07:49:26.3089368Z",
"Availability": null
},
"Info": {
"Name": "Sample Policy Registry Key"
}
}
Parameters |
Values |
---|---|
"Metadata" > "Version" |
major.minor between quotation marks "" |
"Info" > "Name" |
Label written between quotation marks "", visible in Home > Help, under Company Policy. |
The governance file may contain policies for Studio and StudioX users, however, these must be structured per profile. Policies for Studio must be separated from those for StudioX as in the example below:
{
"Profiles": {
"Development": {
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false
},
"PackageManager": {},
"Analyzer": {}
},
"Business": {
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false
},
"PackageManager": {},
"Analyzer": {}
}
}
}
{
"Profiles": {
"Development": {
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false
},
"PackageManager": {},
"Analyzer": {}
},
"Business": {
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false
},
"PackageManager": {},
"Analyzer": {}
}
}
}
Parameters |
Values |
---|---|
"Profiles" |
You can add both profiles in the same file. |
The parameters under "Shell" enable you to prevent production runs from StudioX by setting a limit for the number of runs a user can perform for a project without any changes.
In addition, you can configure whether the feedback form and welcome screen are available to users.
{
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false,
"RequireUserPublish": {
"PermittedConsecutiveRuns": 3,
"DialogMessage": null,
"LogToQueue": {
"QueueName": "NameOfQueue",
"QueueFolder": "NameOfQueueFolder"
}
}
}
}
{
"Shell": {
"IsFeedbackEnabled": true,
"HideGettingStartedScreen": false,
"RequireUserPublish": {
"PermittedConsecutiveRuns": 3,
"DialogMessage": null,
"LogToQueue": {
"QueueName": "NameOfQueue",
"QueueFolder": "NameOfQueueFolder"
}
}
}
}
Studio Setting |
Parameters |
Values |
---|---|---|
Enables or disables the Send feedback form that can be accessed from the Studio title bar. |
"IsFeedbackEnabled" |
Either
true or false .
|
Enables or disables the welcome screen with links to the UiPath Academy, an introduction video, and tutorials that is displayed when users open Studio |
"HideGettingStartedScreen" |
Either
true or false .
|
The parameters under "RequireUserPublish" enable you to limit the number of consecutive runs that can be triggered from Studio for a project that has no changes, and to configure logging settings for events where the limit is exceeded. This can be used to prevent users from triggering production runs from Studio. As a best practice, projects that are ready for production should be published to Orchestrator and executed from the Assistant. |
"RequireUserPublish"
1 |
N/A |
Maximum number of consecutive times a project without changes can be run. |
"PermittedConsecutiveRuns"
1 |
Enter the allowed number of times. If the value is
null or a negative number, no limit is set.
|
Message to display to the user in a dialog box when the allowed number of consecutive executions is exceeded. The dialog box prompts the user to either publish the project or cancel the execution. |
"DialogMessage" |
Enter a custom message to display between quotation marks "". If the value is
null , the following message is used: It appears you are performing production runs directly from your project. Your organization requires you to publish your project
to Orchestrator and run from your Assistant.
|
The parameters under "LogToQueue" give you the option to configure an Orchestrator queue where to log events. The following information is logged for each event: username, project name, hash of the main XAML file, and timestamp from the local machine. |
"LogToQueue" |
N/A |
Orchestrator queue in which to save the records. |
"QueueName" |
Enter the name of the queue between quotation marks "". If the value is
null , no records are saved.
|
Orchestrator folder containing the queue in which to save the records. |
"QueueFolder" |
Enter the name of the Orchestrator folder between quotation marks "". If the value is
null , no records are saved.
|
1
- Changes take effect only in the StudioX profile.
You can prevent the Getting Started, Official, and Marketplace feeds from appearing in Home (Studio Backstage View) > Templates in the list of locations from which templates can be added. The feeds are enabled by default.
{
"TemplatesManager": {
"Feeds": [
{
"Name": "GettingStarted",
"IsEnabled": true
},
{
"Name": "Official",
"IsEnabled": true
},
{
"Name": "Marketplace",
"IsEnabled": true
}
]
}
}
{
"TemplatesManager": {
"Feeds": [
{
"Name": "GettingStarted",
"IsEnabled": true
},
{
"Name": "Official",
"IsEnabled": true
},
{
"Name": "Marketplace",
"IsEnabled": true
}
]
}
}
Parameters |
Values | ||
---|---|---|---|
"TemplatesManager" |
"Feeds" |
"Name" |
The template location (GettingStarted, Official, Marketplace) written between quotation marks. |
"IsEnabled" |
Either
true or false .
|
You can restrict accessing, adding, or removing package sources per Studio or StudioX using the governance file.
{
"PackageManager": {
"AllowAddRemoveFeeds": false,
"AllowEnableDisableFeeds": false,
"AllowOrchestratorFeeds": true,
"Feeds": [{
"Name": "Organization Internal Feed",
"Source": "https://[company].pkgs.visualstudio.com/_packaging/nuget-packages/nuget/v3/index.json",
"IsEnabled": true
},
{
"Name": "Official",
"Source": "https://www.myget.org/F/workflow",
"IsEnabled": true
}
]
}
}
{
"PackageManager": {
"AllowAddRemoveFeeds": false,
"AllowEnableDisableFeeds": false,
"AllowOrchestratorFeeds": true,
"Feeds": [{
"Name": "Organization Internal Feed",
"Source": "https://[company].pkgs.visualstudio.com/_packaging/nuget-packages/nuget/v3/index.json",
"IsEnabled": true
},
{
"Name": "Official",
"Source": "https://www.myget.org/F/workflow",
"IsEnabled": true
}
]
}
}
Parameters |
Values | ||
---|---|---|---|
"Package Manager" |
"AllowAddRemoveFeeds" |
Either
true or false .
| |
"AllowEnableDisableFeeds" |
Either
true or false .
| ||
"AllowOrchestratorFeeds" |
Either
true or false .
| ||
"Feeds" |
"Name" |
Label written between quotation marks "", visible in Manage Packages. | |
"Source" |
Feed source written between quotation marks ", visible in Manage Packages. | ||
"IsEnabled" |
Either
true or false .
|
true
, the user may modify feeds available in the Package Manager. If any changes are made, they are persisted when Studio is restarted.
true
and the Robot is Connected to Orchestrator, users cannot disable the default Orchestrator feeds.
Feeds that are defined in the governance file are added to the Default package sources section in the Manage Packages window and the user can add the custom feeds (if provided with the required rights in the governance file) to the User defined package sources section.
C:\Users\CurrentUser\AppData\Local\Programs\UiPath\Studio\Packages
.
The settings under ActivitiesManager enable you to hide specific activities and enforce the use of the Show Developer filter in StudioX.
"ActivitiesManager": {
"AllowShowDeveloper": false,
"HiddenActivities": ["UiPath.Mail.Activities.Business.GmailApplicationCard","UiPath.Mail.Activities.Business.OutlookApplicationCard"]
}
"ActivitiesManager": {
"AllowShowDeveloper": false,
"HiddenActivities": ["UiPath.Mail.Activities.Business.GmailApplicationCard","UiPath.Mail.Activities.Business.OutlookApplicationCard"]
}
Setting |
Parameters |
Value |
---|---|---|
Allows users to select the Show Developer filter in the activities panel in StudioX. If set to
False , the option becomes unavailable.
|
"AllowShowDeveloper" |
Either
true or false .
|
A list of activities to be hidden from the activities panel. |
"HiddenActivities" |
Enter activity names in the array, separated by commas. In the example below, the Use Gmail and Use Desktop Outlook App activities have been hidden. "HiddenActivities": ["UiPath.Mail.Activities.Business.GmailApplicationCard", "UiPath.Mail.Activities.Business.OutlookApplicationCard"] |
The settings under "SourceControl" enable you to enforce the use of allowed repositories when working with GIT, and committing changes before publishing.
{
"SourceControl": {
"CheckInBeforePublishParam": {
"AllowEdit": false,
"Value": false
},
"RepositoriesConfigParam": {
"AllowEdit": true,
"Value": {
"AllowSaveLocal": null,
"AllowEditRepositories": null,
"Repositories": [
{
"SourceControlType": 0,
"Name": null,
"Url": null,
"DefaultFolder": null
}
]
}
}
{
"SourceControl": {
"CheckInBeforePublishParam": {
"AllowEdit": false,
"Value": false
},
"RepositoriesConfigParam": {
"AllowEdit": true,
"Value": {
"AllowSaveLocal": null,
"AllowEditRepositories": null,
"Repositories": [
{
"SourceControlType": 0,
"Name": null,
"Url": null,
"DefaultFolder": null
}
]
}
}
The "AllowEdit" parameter indicates whether or not users are allowed to change the default setting configured by the governance file.
Studio Setting |
Parameters |
Value |
---|---|---|
Enforce Check-In before Publish Note: This setting is available in Home > Settings > Design.
|
"CheckInBeforePublishParam" |
Either
true or false .
|
The parameters under RepositoriesConfigParam enable you to govern the use of source control repositories. This applies only for GIT. |
"RepositoriesConfigParam" |
N/A |
Allow users to save projects locally on their machine. |
"AllowSaveLocal"
1 |
Either
true or false . If the value is null , the parameter is interpreted as true .
When set to false, users can't select This PC as the location when creating a new project in StudioX and will save the project to a repository. |
Allow users to add and edit repositories. |
"AllowEditRepositories" |
Either
true or false . If the value is null , the parameter is interpreted as true .
If set to
false :
|
A list of allowed GIT repositories. This parameter accepts a JSON array of repositories. |
"Repositories" Note: A repository that is already checked out locally by a user is allowed for both profiles even if it is on the allowed list
for only one of them.
|
Enter repositories in the array by adding the Name, Url, and optionally DefaultFolder (the default folder of the repository). Example of a repository: "Name":
"%username%'s Repo" ,
"Url": "
https://github.com/uipath/%username% ",
"DefaultFolder":
null
|
1
- Changes take effect only in the StudioX profile.
The following parameters enable you to configure settings found in Home (Studio Backstage View) > Settings. For more information, see Configuring Studio Settings.
{
"Workflow": {
"DefaultProjectLanguageParam": {
"Value": VisualBasic,
"AllowEdit": false
},
"DefaultProjectFrameworkParam": {
"Value": "Classic",
"AllowEdit": true
},
"AllowedProjectFrameworks": {
"Classic": true,
"Modern": true,
"CrossPlatform": true
},
"DockedAnnotationsParam": {
"AllowEdit": false,
"Value": true
},
"IsCollapsedViewSlimParam": {
"AllowEdit": false,
"Value": false
},
"UseSmartFilePathsParam": {
"AllowEdit": true,
"Value": true
},
"EnableLineNumberingParam": {
"AllowEdit": true,
"Value": true
},
"EnableActivityOnlineRecommendationsParam": {
"AllowEdit": true,
"Value": true
},
"EnforceReleaseNotes": null,
"AnalyzeOnPublishParam": {
"AllowEdit": false,
"Value": false
},
"AnalyzeOnPushParam": {
"AllowEdit": true,
"Value": false
},
"AnalyzeOnRunParam": {
"AllowEdit": false,
"Value": false
},
"AnalyzeRpaXamlsOnlyParam": {
"AllowEdit": false,
"Value": false
},
"AdditionalAnalyzerRulePathParam": {
"AllowEdit": false,
"Value": null
},
"DefaultProjectFolderParam": {
"AllowEdit": false,
"Value": null
},
"DefaultProcessPublishUrlParam": {
"AllowEdit": false,
"Value": null
},
"DefaultLibraryPublishUrlParam": {
"AllowEdit": false,
"Value": null
},
"DefaultTemplatePublishUrlParam": {
"AllowEdit": false,
"Value": "C:\\Users\\username\\Documents\\UiPath\\.templates"
},
"ModernBehaviorParam": {
"AllowEdit": false,
"Value": false
},
"ObjectRepositoryEnforcedParam": {
"AllowEdit": false,
"Value": false
},
"UseConnectionServiceParam": {
"AllowEdit": true,
"Value": false
}
},
}
{
"Workflow": {
"DefaultProjectLanguageParam": {
"Value": VisualBasic,
"AllowEdit": false
},
"DefaultProjectFrameworkParam": {
"Value": "Classic",
"AllowEdit": true
},
"AllowedProjectFrameworks": {
"Classic": true,
"Modern": true,
"CrossPlatform": true
},
"DockedAnnotationsParam": {
"AllowEdit": false,
"Value": true
},
"IsCollapsedViewSlimParam": {
"AllowEdit": false,
"Value": false
},
"UseSmartFilePathsParam": {
"AllowEdit": true,
"Value": true
},
"EnableLineNumberingParam": {
"AllowEdit": true,
"Value": true
},
"EnableActivityOnlineRecommendationsParam": {
"AllowEdit": true,
"Value": true
},
"EnforceReleaseNotes": null,
"AnalyzeOnPublishParam": {
"AllowEdit": false,
"Value": false
},
"AnalyzeOnPushParam": {
"AllowEdit": true,
"Value": false
},
"AnalyzeOnRunParam": {
"AllowEdit": false,
"Value": false
},
"AnalyzeRpaXamlsOnlyParam": {
"AllowEdit": false,
"Value": false
},
"AdditionalAnalyzerRulePathParam": {
"AllowEdit": false,
"Value": null
},
"DefaultProjectFolderParam": {
"AllowEdit": false,
"Value": null
},
"DefaultProcessPublishUrlParam": {
"AllowEdit": false,
"Value": null
},
"DefaultLibraryPublishUrlParam": {
"AllowEdit": false,
"Value": null
},
"DefaultTemplatePublishUrlParam": {
"AllowEdit": false,
"Value": "C:\\Users\\username\\Documents\\UiPath\\.templates"
},
"ModernBehaviorParam": {
"AllowEdit": false,
"Value": false
},
"ObjectRepositoryEnforcedParam": {
"AllowEdit": false,
"Value": false
},
"UseConnectionServiceParam": {
"AllowEdit": true,
"Value": false
}
},
}
Two parameters are available for most options:
- "AllowEdit" - Indicate whether or not users are allowed to change the default setting configured by the governance file (
true
to allow,false
to deny). - "Value" - Indicate the default setting, as described in the following tables.
Under "Workflow":
Studio Setting |
Parameters |
Value |
---|---|---|
Use C# Language |
"DefaultProjectLanguageParam"
1 |
|
Create docked annotations |
"DockedAnnotationsParam" |
Either
true or false .
|
Default project target framework |
"DefaultProjectFrameworkParam"
1 |
|
The parameters under "AllowedProjectFrameworks" determine the target frameworks allowed when creating or opening a project in the Studio profile. To enable a framework,
set its parameter to
true .
Note: This setting cannot be configured from the Studio UI
|
"AllowedProjectFrameworks"
1 |
Either
true or false . for each of the following:
|
Use Smart File Paths |
"UseSmartFilePathsParam"
2 |
Either
true or false .
|
Enable line numbering |
"EnableLineNumberingParam"
2 |
Either
true or false .
|
Enable AI activity suggestions |
"EnableActivityOnlineRecommendationsParam" |
Either
true or false .
|
Make the Release Notes field in the Publish wizard mandatory Note: This setting cannot be configured from the Studio UI.
|
"EnforceReleaseNotes" |
Either
true or false .
|
Slim View for Collapsed Activities |
"IsCollapsedViewSlimParam" |
Either
true or false .
|
Enforce Analyzer before Publish |
"AnalyzeOnPublishParam" |
Either
true or false .
|
Enforce Analyzer before Push/Check-in |
"AnalyzeOnPushParam" |
Either
true or false .
|
Enforce Analyzer before Run |
"AnalyzeOnRunParam" |
Either
true or false .
|
Analyze RPA XAML Files Only |
"AnalyzeRpaXamlsOnlyParam" |
Either
true or false .
|
Workflow Analyzer Rules Location |
"AdditionalAnalyzerRulePathParam" |
|
Project Path |
DefaultProjectFolderParam |
|
Publish Process URL |
"DefaultProcessPublishUrlParam" |
|
Publish Library URL |
"DefaultLibraryPublishUrlParam" |
|
Publish Project Templates URL |
"DefaultTemplatePublishUrlParam" |
To change the location, enter the path between quotation marks. |
Use Modern for new projects |
"ModernBehaviorParam" |
Either
true or false .
|
Object Repository enforced |
"ObjectRepositoryEnforcedParam" |
Either
true or false .
|
Default to managed connections |
"UseConnectionServiceParam" |
Either
true or false .
|
1
- Changes take effect only in the Studio profile.
2
- Changes take effect only in the StudioX profile.
Under "ObjectBrowser":
Studio Setting |
Parameters |
Value |
---|---|---|
Send anonymous UI Descriptors |
"SendUiDescriptors" |
Either
true or false |
The parameters under "Telemetry" allow you to enable sending Studio usage data to an Application Insights resource in your Azure portal. This data allows you to monitor and analyze what users are doing in Studio. To enable this feature, enter the instrumentation key of your Application Insights instance in the "instrumentation-keys" parameter.
{
"Telemetry": {
"TelemetryOptions": {
"TelemetryOptionsDictonary": {
"instrumentation-keys": ""
}
}
}
}
{
"Telemetry": {
"TelemetryOptions": {
"TelemetryOptionsDictonary": {
"instrumentation-keys": ""
}
}
}
}
See the following table for information about the telemetry data that is sent to Application Insights.
Action |
Event Name |
Data Collected |
---|---|---|
Studio is started |
StudioStarted |
|
Studio is closed |
StudioClosed |
|
Project is opened |
OpenProject |
|
Project is created
1 |
|
|
Project is run |
|
|
File is run |
|
|
Project is debugged |
|
|
File is debugged |
|
|
Run to this Activity is executed |
Designer_RunTo |
|
Project is published |
PublishProject |
|
Activity package is installed |
PackageAdded |
|
Activity is added to a project |
S.Activities.ActivityAdded |
|
Target is indicated in UI Automation activity |
S.Activities.PropertyChanged |
|
1
- When a project is created, NewProject is generated when the user selects to create a new project in the Studio Backstage View, and NewProjectCreated is generated when the user clicks the Create button in the new project dialog.
2
- The StartDebug event tracks the target robot that executed the operation - the local robot (Local) or a remote robot (Orchestrator for unattended robot connection, Remote for remote machine connection).
Using the Data in Application Insights
In addition to the use case scenarios described in the official Microsoft documentation, you can test and build queries using Log Analytics in the Azure Monitor of your Azure Insights instance. To see all possible data for an event, you can build a simple query that will explore all its occurrences in the predefined time range. For example:
customEvents
| where name == "StudioStarted"
customEvents
| where name == "StudioStarted"
See the following table for examples of telemetry queries and a description for each one. You can also check the list of known issues.
Event |
Example Query |
Query Description |
---|---|---|
StudioStarted Studio is started |
customEvents | where name == "StudioStarted" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | summarize count(name) by bin(timestamp, 1d) | order by timestamp desc |
How many times per day Studio was opened in the last 30 days, excluding the current day. |
StudioClosed Studio is closed |
customEvents | where name == "StudioClosed" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | summarize count(name) by bin(timestamp, 1d) | order by timestamp desc |
How many times per day Studio was closed in the last 30 days, excluding the current day. |
StudioClosed Studio is closed |
customEvents | where name == "StudioClosed" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend TotalSessionTimeInSeconds = tostring(customDimensions.TotalSessionTimeInSeconds) | extend SessionId = tostring(parse_json(tostring(customDimensions.Context)) .SessionId) | summarize AvgSessionTime_inMinutes = round(avg(todouble(TotalSessionTimeInSeconds))/60,2) by bin(timestamp, 1d) | order by timestamp desc |
The average daily session duration for the last 30 days, excluding the current day (in minutes rounded to two decimal points). |
OpenProject Project is opened |
customEvents | where name == "OpenProject" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | summarize count(name) by bin(timestamp, 1d) | order by timestamp desc |
How many times per day a project was opened in the last 30 days, excluding the current day. |
NewProjectCreated Project is created |
customEvents | where name == "NewProjectCreated" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend ActionArgs = tostring(customDimensions .ActionArgs) | where ActionArgs != "" | summarize count(name) by ActionArgs, bin(timestamp, 1d) | order by timestamp desc |
How many projects and of what type were created in the last 30 days, excluding the current day. |
StartDebug Project is run or debugged / File is run or debugged |
customEvents | where name == "StartDebug" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend RunTarget = tostring(customDimensions .RunTarget) | summarize count(name) by RunTarget, bin(timestamp, 1d) | order by timestamp desc |
How many runs were started and for what target in the last 30 days, excluding the current day. |
Designer_RunTo Run to this Activity is executed |
customEvents | where name == "Designer_RunTo" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | summarize count(name) by bin(timestamp, 1d) | order by timestamp desc |
How many times Run to this Activity was executed in the last 30 days, excluding the current day. |
PublishProject Project is published |
customEvents | where name == "PublishProject" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | summarize count(name) by bin(timestamp, 1d) | order by timestamp desc |
How many projects were published in the last 30 days, excluding the current day. |
PackageAdded Activity package is installed |
customEvents | where name == "PackageAdded" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend ActionArgs = tostring(customDimensions. ActionArgs) | summarize count(name) by ActionArgs, bin(timestamp, 1d) | order by timestamp desc |
How many packages and the names of the packages that were installed in the last 30 days, excluding the current day. |
S.Activities.ActivityAdded Activity is added to a project |
customEvents | where name == "S.Activities.ActivityAdded" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend ActivityType = tostring(customDimensions. ActivityType) | extend PackageName = tostring(customDimensions.PackageName) | extend PackageVersion = tostring(customDimensions.PackageVersion) | summarize count(name) by ActivityType, PackageName, PackageVersion, bin(timestamp, 1d) | order by timestamp desc |
How many activities were added in the last 30 days, excluding the current day. Includes the name and version of the package
each activity comes from.
3 |
S.Activities.PropertyChanged Target is indicated in UI Automation activity |
customEvents | where name == "S.Activities.PropertyChanged" | where timestamp >= startofday(ago(30d)) and timestamp <= endofday(ago(1d)) | extend ActivityType = tostring(customDimensions.ActivityType) | extend PropertyName = tostring(customDimensions.PropertyName) | summarize count(name) by ActivityType, PropertyName, bin(timestamp, 1d) | order by timestamp desc |
How many times properties of used activities were changed in the last 30 days, excluding the current day. Includes the activity names and the name of each property that was changed. |
The following table lists additional parameters that are included by default in events.
Parameter |
Description |
In-Query Representation (on a selected event) |
---|---|---|
customDimensions |
A detailed collection of data and parameters related to every event. |
customEvents | where name == "StudioStarted" | extend customDimensions |
Context |
A part of the customDimensions collection that handles details about the project, including profile, user ID, license type, robot type, session ID. |
customEvents | where name == "StudioStarted" | extend Context = parse_json(customDimensions.Context) |
Environment |
A part of the customDimensions collection that consists of the machine name, OS version, and username. |
customEvents | where name == "StudioStarted" | extend Environment = parse_json(customDimensions.Environment) |
Log Analytics gives you the option to explicitly extend each data type that is part of the mentioned parameters to serve as a filter or to be used as an additional summarize element. To do this, click the three-dot icon next to a data element in the log, and then choose to either extend data or use it as a filter.
See the following table for examples of extending or filtering data.
Data Example |
In-Query Representation (on a selected event) |
---|---|
ApplicationName (extend) |
customEvents | where name == "StudioStarted" | extend ApplicationName = tostring(customDimensions.ApplicationName) |
LicenseType (extend) |
customEvents | where name == "StudioStarted" | extend LicenseType = tostring(parse_json(tostring(customDimensions.Context)).LicenseType) |
OSVersion (filter included) |
customEvents | where name == "StudioStarted" | where parse_json(tostring(customDimensions.Environment)).OSVersion == "Microsoft Windows NT 10.0.19043.0" |
CurrentLanguage (filter included) |
customEvents | where name == "StudioStarted" | where parse_json(tostring(customDimensions.Context)).CurrentLanguage == "en" |
Known Issues
- The PublishProject event only displays details for projects published to Orchestrator.
- The S.Activities.ActivityAdded event displays an incorrect package version.
The Workflow Analyzer is the tool for verifying if projects meet development standards. Using the governance file, organizations can enforce custom rules pertaining to their needs across all projects, in a centralized manner.
Remarks
- The custom ruleset can be defined beforehand in a
separate file of type
.json
, and delivered through a dll external assembly or custom activity pack. Read more about Building Custom Rules for Workflow Analyzer. - The governance file can't deliver credentials, which means secure feeds aren't supported.
- If a custom ruleset is enforced, then users cannot make any changes to Workflow Analyzer rules.
- If a custom ruleset was not referenced or embedded in the governance file, the Workflow Analyzer default rules are used. If the "Analyzer" section is not mentioned, governance for Workflow Analyzer is not enforced. If the section is mentioned, even if it's empty, then the management of rules is disabled in Studio.
- When enforcing governance, rules built-in Studio or UiPath activity packages are disabled by default unless otherwise mentioned in the governance file or custom ruleset.
Enforcing Rules
uipath.policies.config
governance file:
-
Point to the ruleset located at one of the following paths:
- on the local machine;
- shared on a network server or machine, identifiable by the UNC path;
- in shared blob storage, identifiable via the http(s) path.
- Embed the custom ruleset by enabling or disabling rules, mentioning their IDs, parameters, error levels.
"Analyzer"
section. Rules and counters must be split into their own sections, as illustrated below:
{
"Analyzer": {
"AllowEdit": false,
"ReferencedRulesConfigFile": null,
"EmbeddedRulesConfig": {
"Rules": [
{
"Id": "ST-NMG-001",
"IsEnabled": false,
"Parameters": [{
"Name": "Regex",
"Value": null
}],
"ErrorLevel": "Error"
}
],
"Counters": [{
"Id": "ST-ANA-009",
"IsEnabled": true,
"Parameters": []
}]
}
}
}
{
"Analyzer": {
"AllowEdit": false,
"ReferencedRulesConfigFile": null,
"EmbeddedRulesConfig": {
"Rules": [
{
"Id": "ST-NMG-001",
"IsEnabled": false,
"Parameters": [{
"Name": "Regex",
"Value": null
}],
"ErrorLevel": "Error"
}
],
"Counters": [{
"Id": "ST-ANA-009",
"IsEnabled": true,
"Parameters": []
}]
}
}
}
Parameters/Sections |
Values |
---|---|
"AllowEdit" |
If set to
true , governance settings are passed as defaults allowing the user to make changes to rules.
If set to
false , no changes can be made to any rules.
If the parameter is not added, by default, users are restricted from editing rules. |
"ReferencedRulesConfigFile" |
|
"EmbeddedRulesConfig" |
Holds
"Rules" and "Counters" |
"Id" |
Rule ID, ex.
ST-NMG-001 |
"IsEnabled" |
Either
true or false |
"Parameters" |
|
"Name" |
The parameter's name written between quotation marks. |
"Value" |
|
"ErrorLevel" |
Either
Error , Warning , Info or Verbose .
|
"Counters" |
Holds parameters for counters: "Id", "IsEnabled", "Parameters"
1 .
|
1
- Since counters don't have parameters, use []
.
true
, the user may modify rules available in the Workflow Analyzer settings window. If any changes are made, they are persisted
when Studio is restarted.
%AppData%\UiPath
.
If stored externally, the path to the policy file must be defined using the Windows Registry or an Orchestrator asset:
To define the file path using the Windows Registry:
- Open Registry Editor on the machine where Studio is installed.
- Locate the following registry key:
Computer\HKEY_CURRENT_USER\Software\UiPath
and hit Enter. - In the Registry Editor, right-click and
select New > String Value. Type in the
GovernanceSource
name for the new value. Do not use another name for the value! - Double-click the
GovernanceSource
string to edit. In the Value data field add the path to theuipath.policies.config
file, and click OK.- If the policy file is stored locally,
an example for this field would be
C:\policies\uipath.policies.config
. - If the policy file is stored on a
server, an example for this field would be
192.168.1.1\policies\uipath.policies.config
.
- If the policy file is stored locally,
an example for this field would be
The registry key should look like this:
To define the file path using an Orchestrator asset:
- In Orchestrator, select Tenant > Folders and add a new folder named uipath.settings.config.
- Assign the users for which to enforce the governance policy to the folder.
-
In the uipath.settings.config folder, create a new asset and configure it as follows:
- Asset name - uipath.studio.governancesource.
- Type - Text.
-
Global Value - Select this option and enter the full path to the uipath.policies.config file in the text box.
Optionally, you can apply different policies to different users by adding per-user values with paths to different files.
- In Orchestrator, select Tenant > Folders and add a new folder named uipath.settings.config.
- Assign the users for which to enforce the governance policy to the folder.
-
In the uipath.settings.config folder, create a new asset and configure it as follows:
- Asset name - uipath.studio.governancepolicy.
- Type - Text.
-
Global Value - Select this option and paste the entire contents of the uipath.policies.config file in the text box.
Optionally, you can apply different policies to different users by adding per-user values and pasting different parameters.
Note:- Enforcing a governance policy using an Orchestrator asset that references the file path or holds the contents of the file requires Orchestrator v2020.10 or later with modern folders.
- Users need to be signed in to their account in Studio to receive per-user policies.
When a policy is defined, it is applied after Studio is restarted.
A message appears in the Workflow Analyzer settings window, Send Feedback window, in the Settings tab in Backstage View, and in the Manage Packages window.
Studio applies the governance policy using the following order of precedence: Automation Ops > uipath.studio.governancepolicy > uipath.studio.governancesource > Registry key > local file.
If the governance policy is removed for the user, settings that were enforced through the governance file are persisted as defaults. However, now the user has the option to modify settings that were restricted when the governance policy was in place.
- Generate the Governance File
- Configure the Governance File
- File Version and File Label
- Studio Profiles
- Settings Users Cannot Configure From Studio
- Available Template Locations
- Usage of Package Sources
- Activities Panel Settings (StudioX Only)
- Source Control Settings
- Studio Settings
- Send Studio Usage Data to Your Organization
- Workflow Analyzer Rules
- Enforce the Governance Policy
- Using a Local File
- Using an External File
- Using an Orchestrator Asset
- Applying and Precedence