Skip to content
| Marketplace
Sign in
Visual Studio>Tools>XrmToolkit
XrmToolkit

XrmToolkit

XrmToolkit

|
35,788 installs
| (13) | Free Trial
XrmToolkit integrates your Dynamics CRM 2013, CRM 2015, CRM 2016, and Dynamics 365 solutions directly into Visual Studio.
Download

XrmToolkit Features

Web Resources and Other Dynamics 365 Assets

  • Download all web resources and other Dynamics 365 assets into a new or existing Visual Studio project. Other assets include: charts, plugin configurations, TypeScript intellisense files, early bound classes, workflow XAML definitions, Power Automate (flow) definitions, SSRS and FetchXML reports, email templates, and sitemaps.
  • Create new web resources in Visual Studio and add them to Dynamics 365.
  • Edit the properties of the web resource directly in Visual Studio.
  • Publish a web resource to Dynamics 365 with the click of a single button.
  • Use Gulp to perform actions on a web resource prior to publishing to your organization..
  • Refresh the contents of your local file from Dynamics 365 with the click of a button.
  • Generate TypeScript intellisense files. In addition to the Xrm.Page object, intellisense is provided for attribute and control names and other parameters to Xrm.Page functions.
  • Automatically add items to a specified solution whenever a file is created or published to your organization.
  • Bulk link/add items to Dynamics 365 from an existing Visual Studio project using an intuitive dialog.
  • Bulk upload and publish items to your ogranization.
  • Bulk refresh items from Dynamics 365 to your Visual Studio solution.
  • File paths are honored when downloading or creating web resources in CRM . This means that if you have the following name for a web resource: 'new_/Entities/Forms/AccountFormScripts.js', when downloaded into your Visual Studio project it will be saved to the following relative path: '..\new\Entities\Forms\AccountFormScripts.js'. Also, when creating new files and uploading them to CRM, XrmToolkit will suggest a name based on the relative path of the item in the file system.
  • You can choose to minify your JavaScript and CSS web resources when published to your organization. This reduces the file size and thus speeds up the web page wherever the file is being reference.
  • If your web resources are minified, you can optionally choose to 'Pretty Format' the file when downloaded from your organization into your Visual Studio project.

Plugins

  • Build, update and publish your plugin assembly to Dynamics 365 with the click of a button.
  • Use ILMerge as part of the build/publish process. You can easily setup your project to use ILMerge during the publishing process to Dynamics 365, with an intuitive GUI.
  • Intuitive wizard for creating new plugins or custom workflows. This includes functionality for creating an early bound/proxy class at the same time. This process also generates the plugin configuration allowing you to register the plugin and any images with the click of a button.
  • Templates for plugins and custom workflows that use a 'LocalContext' to provide easy access to the following: ITracingService, IOrganizationContext, Pre and Post images, and the target entity or entity reference.
  • Plugin Registration Tool. Similar to the one provided in the Microsoft NuGet package but with the following enhancements:
    • Configure everything without registering the actual records. This allows for setting everything up first and then registering with the click of a button. When you 'Un-register' an item, the configuration is left in-tact so that if you need to re-register it, you can do so with the click of a button.
    • Ability to register multiple steps at the same time that are named based on your custom naming template, ie {messageName} - {primaryEntityLogicalName} which produces 'Create - Account'
    • Ability to enable/disable multiple steps at the same time.
    • Ability to view dependencies for a plugin/workflow/step with the click of a button. This is helpful if you need to unregister a workflow and need to know which workflows in CRM are using it.
    • Ability to see other plugins registered for the same entity and message. This allows you to see the order of operations for a given entity and message which can be helpful when debugging and also when determining the 'order' of plugins.
    • Ability to export the DLL of any plugin assembly stored in the Dataverse database.
    • You can see any unregistered plugins or workflows in the plugin registration tool allowing you to register them without needing to upload the entire assembly just to register the plugin or workflow.
    • Register web hooks and related steps
  • Download a plugin assembly along with all of the registered items into a plugin configuration file in Visual Studio. This allows you to store a plugin and its registered steps and images in source control as part of your ALM strategy. You can also use this file to easily transfer a plugin and all of its registered items to another organization.
  • Inject custom logic during the build process using MSBuild events. You have access to the following events and properties:
    • Events:
      • XRMTK_BeforeBuild - Called before using the built in build process of Visual Studio
      • XRMTK_AfterBuild - Called after the build process of Visual Studio
      • XRMTK_BeforeILMerge - Called before merging the assemblies using ILMerge
      • XRMTK_AfterILMerge - Called after merging the assemblies with ILMerge
      • XRMTK_BeforePublishAssembly - Called before publishing the assembly to CRM
      • XRMTK_AfterPublishAssembly - Called after publishing the assembly to CRM
    • Properties:
      • Organization Name
      • Organization Friendly Name
      • Organization URL
      • Discovery URL
      • Currently selected CRM solution name
      • Currently selected CRM solution GUID
      • Currently logged in user

Early Bound Classes

  • Easily generate early bound classes using the CrmSvcUtil engine. Integrated directly into Visual Studio, you can select which entities you want to generate and the corresponding classes will be placed each in a separate file. The OrganizationServiceContext file is also automatically generated and placed in you project.
  • Enums for all the option sets are generate and placed in a separate file.
  • Quickly regenerate a specific class or classes by pressing a button.
  • Easily use your own naming service allowing complete customization around how classes, properties and enums are named for your proxy classes.
  • Choose to generate the class and function names using either the 'Display Name', 'Logical Name' or 'Schema Name'.
  • Optionally choose to add a prefix or postfix to the class names at the time of generation.
  • Create XrmToolkit proxy classes similar to the classes generated by the CrmSvcUtil engine but with the following benefits:
    • Change tracking - When updating an entity, only push the properties that have changed to Dynamics 365 instead of all properties that have a value. This helps reduce the noise and size of the audit logs as only the properties that have changed are logged to the database. This also improves the speed of custom applications that process large amounts of data since only records that are changed push to the database. If a records' values do not change then 'Saving' the record does not create an 'Update' request.
    • Allow Dynamics 365 constraints on attributes to be handled without any coding:
      • Auto truncate strings if they are longer than the max length
      • Automatically adjust numeric values to their min or max if the value falls outside the bounds
      • These can be adjusted on a per-entity basis
    • Provide additional design time information like the 'Logical Name', 'Max Length', 'Max Value', 'Min Value', 'Precision'.
    • Methods on option sets to easily retrieve the display text.
    • Smaller compiled file size than the classes generated by the CrmSvcUtil application.

Reports

  • Download reports (Organization or Personal level) to your SSRS project.
  • Update and deploy to Dynamics 365 with the click of a button.
  • Specify all report properties directly in Visual Studio without going to Dynamics 365.

Canvas Apps

  • Download and extract all the Canvas App assets into a Visual Studio project.
  • Pack and publish the contents of a Visual Studio project to Dynamics 265/Dataverse as a Canvas App.

Portal Websites

  • Download your portal assets into a Visual Studio project.
  • Edit and publish directory from Visual Studio back to Dynamics 365.
  • Compare local assets to what is deployed to Dynamics 365.
  • Automatically minify upon publish to Dynamics 365 and automatically prettify when downloaded from Dynamics 365.

Solutions

  • Link as many Dynamics 365 organizations to your Visual Studio project.
  • Set a 'Current Solution' which XrmToolkit automatically adds to when new web resources, plugins, steps, reports, etc are published to Dynamics 365. If existing assets are updated and published to your organization they are also added to the solution. When using the 'Edit Entity Permissions' dialog, any roles that are updated are also automatically added to the solution.
  • Bulk link/add items from an existing Visual Studio project to CRM using an intuitive dialog.
  • Bulk upload and publish items to Dynamics 365.
  • Bulk refresh items from Dynamics 365 to your Visual Studio solution.

LINQ Query Provider - Documentation

Similar to the LINQ query provider included in the Dynamics 365 SDK but with the following enhancements:

  • Specify which columns to return. This is helpful if you need 'Read-only' properties like 'Created On' or 'Modified On' to be returned.
  • Create 'In' or 'Not In' queries.
  • Create queries with 'IsNotNullOrEmpty' or 'IsNullOrEmpty'.
  • Support for aggregate operations like 'Sum', 'Min', 'Max', 'Count', and 'Average' including the use of 'Grouping'.
  • Support for left outer joins for querying records where something is NOT present. For example, query contacts that have not had any activities in the last 30 days.
  • Query based on the 'Id' property without first knowing what the name of the Id field is, ie 'accountid'. This is helpful when using late bound entities.
  • Query using column comparison, ie 'ActualRevenue' > 'EstimatedRevenue'
  • Support for querying hierarchical data, ie 'OwnedByMeOrMyReports'
  • Filter queries by fiscal periods, ie 'ThisFiscalPeriod'
  • Filter queries by time periods (year, week, quarter, month etc)
  • Group results by time periods (fiscal periods, year, week, quarter etc)
  • Support for the 'Between' operator for numeric, money, or datetime columns
  • See what FetchXml is being executed for a query by using the 'ToFetchXml' extension method
  • Support for the 'ColumnCount' operator
  • Support for the 'Distinct' operator

XrmToolkit CLI

  • Starting with v5, a CLI is available that allows you to publish your custom plugin and workflow assemblies to Dynamics 365 without the need of Visual Studio. This means you can deploy directly from a build server or a command line. For more information see here.

Misc

  • Execute FetchXML Queries directly in Visual Studio. When the file is a system or user view then it can be published back to your organization with the click of a single button.
  • Edit permissions for an entity for all roles at once. After creating a new entity, its often necessary to set permissions for all the different roles regarding that entity. Now you can easily view/set all permissions at once for all the roles for that particular entity.
  • Configurations and other data is stored in files that can be committed to source control. This allows for using in team environments where multiple people are working on the same solution.
  • Manually clear the in-memory metadata cache and retrieve the metadata from your Dynamics 365 organization.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft