Skip to content

Tools Plugins

Ryan James edited this page Aug 17, 2026 · 2 revisions

Plugins tools

This page is generated from the code by scripts/gen_wiki_tools.py — do not edit by hand.

33 tools · category token plugins · enable with DATAVERSE_TOOLS=plugins (unset enables every category)

Tool-Index · Home

Every tool returns JSON. Errors return {"error": true, "message": "..."}. Write tools require DATAVERSE_ALLOW_WRITE=true; delete tools require DATAVERSE_ALLOW_DELETE=true.


dataverse_create_plugin_assembly

Write · non-idempotent · category plugins

Upload a new plug-in assembly from base64-encoded DLL bytes.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name str yes Assembly name, typically the DLL base name e.g. 'MyOrg.Plugins' (min_len=1)
content str yes Base64-encoded bytes of the strong-name-signed assembly DLL (min_len=1)
isolation_mode int no 2 1=None (full trust; not supported online), 2=Sandbox (default/recommended), 3=External
version str | None no None Assembly version e.g. '1.0.0.0'. Derived from content if omitted.
culture str | None no None Culture e.g. 'neutral'
public_key_token str | None no None Public key token from the strong-name key
description str | None no None Optional description for the assembly

Returns {"created": ..., "name": ..., "isolation_mode": ..., "location": ...}.


dataverse_create_plugin_package

Write · non-idempotent · category plugins

Upload a new NuGet-based plug-in package from base64-encoded .nupkg bytes.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name str yes Display name for the plug-in package (min_len=1)
unique_name str yes Publisher-prefixed unique name e.g. 'yourprefix_MyPackage' (min_len=1)
content str yes Base64-encoded bytes of the .nupkg file (min_len=1)
version str yes Package version e.g. '1.0.0' (min_len=1)

Returns {"created": ..., "unique_name": ..., "location": ...}.


dataverse_create_plugin_step

Write · non-idempotent · category plugins

Register a processing step that runs a plug-in type on an SDK message.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name str yes Step name e.g. 'MyOrg.Plugins.ContactPlugin: Create of contact' (min_len=1)
plugin_type_id str yes GUID of the plugintype handling this step
message_id str yes GUID of the sdkmessage; resolve via dataverse_get_sdk_message
filter_id str | None no None GUID of the sdkmessagefilter to scope to one entity; omit to register against all entities
stage int yes Pipeline stage: 10 = pre-validation (outside the DB transaction), 20 = pre-operation (inside the DB transaction, before the main op), 40 = post-operation (after the main op). Not mutable after registration.
mode int yes Execution mode: 0 = synchronous (runs in the caller's transaction), 1 = asynchronous (runs in a background System Job). Not mutable after registration.
rank int no 1 Execution order within the stage (lower runs first) (ge=1)
filtering_attributes str | None no None Comma-separated logical names; step fires only when one of these attributes changes. Use for Update steps only.
supported_deployment int no 0 0=Server Only, 1=Outlook Client Only, 2=Both
async_auto_delete bool no False When True, automatically deletes completed async operations. Only relevant for asynchronous steps (mode=1).
configuration str | None no None Unsecure configuration string passed to the plug-in constructor
description str | None no None Optional step description

Returns {"created": ..., "name": ..., "stage": ..., "mode": ..., "location": ...}.


dataverse_create_plugin_step_image

Write · non-idempotent · category plugins

Register a pre/post entity image on a processing step.

Note: PostImage (image_type=1) is only valid for post-operation (stage=40) steps. entity_alias is the property-bag key used in plug-in code (e.g. 'PreImage').

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
step_id str yes GUID of the parent sdkmessageprocessingstep record
image_type int yes 0=PreImage, 1=PostImage, 2=Both
entity_alias str yes Key used to access the image in the plug-in property bag e.g. 'PreImage' (min_len=1)
message_property_name str yes Request message property the image is taken from, e.g. 'Target' for Create/Update (min_len=1)
name str | None no None Image name; defaults to entity_alias if omitted
attributes str | None no None Comma-separated logical names to include in the image; omit for all attributes
description str | None no None Optional image description

Returns {"created": ..., "entity_alias": ..., "image_type": ..., "location": ...}.


dataverse_create_plugin_type

Write · non-idempotent · category plugins

Register a plug-in type (a .NET class) against an existing assembly.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
assembly_id str yes GUID of the parent pluginassembly record
typename str yes Fully-qualified .NET type name e.g. 'MyOrg.Plugins.ContactPlugin' (min_len=1)
friendly_name str | None no None User-friendly name; defaults to typename if omitted
name str | None no None Display name; defaults to typename if omitted
is_workflow_activity bool no False Whether this type is a custom workflow activity
workflow_activity_group_name str | None no None Group name; only relevant for custom workflow activities

Returns {"created": ..., "typename": ..., "location": ...}.


dataverse_delete_plugin_assembly

Delete · non-idempotent · category plugins

Permanently delete a plug-in assembly record — this action cannot be undone.

Note: Fails while dependent plug-in types or steps exist.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
assembly_id str yes GUID of the pluginassembly record to delete

Returns {"deleted": ..., "assembly_id": ...}.


dataverse_delete_plugin_package

Delete · non-idempotent · category plugins

Permanently delete a plug-in package and its extracted assemblies, types, and steps.

Note: This action cannot be undone and cascades to all dependent records.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
package_id str yes GUID of the pluginpackage record to delete

Returns {"deleted": ..., "package_id": ...}.


dataverse_delete_plugin_step

Delete · non-idempotent · category plugins

Permanently delete an SDK message processing step — this action cannot be undone.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
step_id str yes GUID of the sdkmessageprocessingstep record to delete

Returns {"deleted": ..., "step_id": ...}.


dataverse_delete_plugin_step_image

Delete · non-idempotent · category plugins

Permanently delete a plug-in step image — this action cannot be undone.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
image_id str yes GUID of the sdkmessageprocessingstepimage record to delete

Returns {"deleted": ..., "image_id": ...}.


dataverse_delete_plugin_type

Delete · non-idempotent · category plugins

Permanently delete a plug-in type record — this action cannot be undone.

Note: Fails while dependent processing steps exist.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
plugin_type_id str yes GUID of the plugintype record to delete

Returns {"deleted": ..., "plugin_type_id": ...}.


dataverse_get_plugin_assembly

Read · idempotent · category plugins

Retrieve a single plug-in assembly record by its GUID.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
assembly_id str yes GUID of the pluginassembly record to retrieve
select list[str] | None no None Columns to return. Defaults to pluginassemblyid, name, version, culture, publickeytoken, isolationmode, sourcetype, description, _packageid_value. Omit 'content' (base64 DLL) unless needed — it is large.

Returns {"record": ...}.


dataverse_get_plugin_package

Read · idempotent · category plugins

Retrieve a single plug-in package record by its GUID.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
package_id str yes GUID of the pluginpackage record to retrieve
select list[str] | None no None Columns to return. Defaults to pluginpackageid, name, uniquename, version. Omit 'content' unless needed.

Returns {"record": ...}.


dataverse_get_plugin_step

Read · idempotent · category plugins

Retrieve a single SDK message processing step record by its GUID.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
step_id str yes GUID of the sdkmessageprocessingstep record to retrieve
select list[str] | None no None Columns to return. Defaults to sdkmessageprocessingstepid, name, stage, mode, rank, filteringattributes, statecode, _sdkmessageid_value, _sdkmessagefilterid_value, _eventhandler_value, description.

Returns {"record": ...}.


dataverse_get_plugin_step_image

Read · idempotent · category plugins

Retrieve a single plug-in step image record by its GUID.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
image_id str yes GUID of the sdkmessageprocessingstepimage record to retrieve
select list[str] | None no None Columns to return. Defaults to sdkmessageprocessingstepimageid, name, imagetype, entityalias, messagepropertyname, attributes, _sdkmessageprocessingstepid_value.

Returns {"record": ...}.


dataverse_get_plugin_trace_log_setting

Read · idempotent · category plugins

Get the current plug-in trace log setting for the Dataverse organization.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').

Returns {"organization_id": ..., "plugin_trace_log_setting": ..., "plugin_trace_log_setting_label": ...}.


dataverse_get_plugin_type

Read · idempotent · category plugins

Retrieve a single plug-in type record by its GUID.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
plugin_type_id str yes GUID of the plugintype record to retrieve
select list[str] | None no None Columns to return. Defaults to plugintypeid, typename, friendlyname, name, assemblyname, isworkflowactivity, _pluginassemblyid_value.

Returns {"record": ...}.


dataverse_get_sdk_message

Read · idempotent · category plugins

Resolve an SDK message (e.g. 'Create', 'Update', 'Delete') to its sdkmessageid.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
message_name str | None no None Message name e.g. 'Create', 'Update', 'Delete'. Provide this OR message_id.
message_id str | None no None GUID of the sdkmessage record. Provide this OR message_name.

Returns {"record": ...}.


dataverse_get_sdk_message_filter

Read · idempotent · category plugins

Resolve the filter that scopes an SDK message to one entity — returns the sdkmessagefilterid.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
filter_id str | None no None GUID of the sdkmessagefilter record. Provide this alone OR provide message_id + primary_entity.
message_id str | None no None GUID of the sdkmessage to scope the lookup. Required when using message+entity mode.
primary_entity str | None no None Lowercase logical name of the primary entity e.g. 'contact'. Required when using message+entity mode.

Returns {"record": ...}.


dataverse_list_plugin_assemblies

Read · idempotent · category plugins

List plug-in assemblies registered in the environment, optionally filtered.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name_contains str | None no None Substring filter on assembly name (OData contains)
package_id str | None no None GUID of a pluginpackage; return only assemblies in that package
filter str | None no None Raw OData $filter expression (escape hatch)
select list[str] | None no None Columns to return. Defaults to the standard assembly projection.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_packages

Read · idempotent · category plugins

List NuGet-based plug-in packages registered in the environment.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name_contains str | None no None Substring filter on package name
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to the standard package projection.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_step_images

Read · idempotent · category plugins

List plug-in step images (pre/post entity snapshots) registered against steps.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
step_id str | None no None GUID of a sdkmessageprocessingstep; return images for that step only
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to the standard image projection.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_steps

Read · idempotent · category plugins

List SDK message processing steps registered in the environment.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
plugin_type_id str | None no None GUID of a plugintype; return only steps handled by that type
message_id str | None no None GUID of a sdkmessage; return only steps for that message
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to the standard step projection.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_trace_logs

Read · idempotent · category plugins

List plug-in trace log records with optional filters.

Note: Plug-in trace logging must be enabled via dataverse_set_plugin_trace_log_setting before logs will be generated.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
type_name str | None no None Filter by plug-in class name (typename). Supports partial match; e.g. 'MyPlugin' matches 'Acme.MyPlugin'. (max_len=1024)
message_name str | None no None Filter by the Dataverse message that triggered the plug-in (e.g., 'Create', 'Update', 'Delete'). (max_len=1024)
primary_entity str | None no None Filter by the primary entity logical name the plug-in ran against (e.g., 'account', 'contact'). (max_len=1000)
operation_type int | None no None Filter by operation type: 0 = Unknown, 1 = Plug-in, 2 = Workflow Activity. Omit to include all types. (ge=0, le=2)
exceptions_only bool no False When true, return only records where exceptiondetails is populated.
hours_ago int | None no None Limit results to logs created within the last N hours. Omit to return logs regardless of age. (ge=1, le=720)
top int no 50 Maximum number of records to return. (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_type_statistics

Read · idempotent · category plugins

List runtime performance statistics for Dataverse plug-in types.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
plugin_type_id str | None no None GUID of the plug-in type to filter by (e.g. 'a1b2c3d4-0000-0000-0000-000000000000'). Omit to return statistics for all plug-in types. (min_len=36, max_len=36)
top int no 50 Maximum number of records to return. (ge=1, le=5000)
include_plugin_type_details bool no False When true, expands the plugintypeid lookup to include the plug-in type name, typename, and assemblyname.

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_plugin_types

Read · idempotent · category plugins

List plug-in types (.NET classes) registered in the environment.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
assembly_id str | None no None GUID of a pluginassembly; return only types in that assembly
typename_contains str | None no None Substring filter on typename (fully-qualified .NET class name)
is_workflow_activity bool | None no None When True/False, filter to custom workflow activities only or exclude them
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to the standard type projection.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_sdk_message_filters

Read · idempotent · category plugins

List SDK message filters showing which entities support each message.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
message_id str | None no None GUID of the sdkmessage; return filters for one message only
primary_entity str | None no None Lowercase logical name of the primary entity e.g. 'contact'
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to sdkmessagefilterid, primaryobjecttypecode, _sdkmessageid_value.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_list_sdk_messages

Read · idempotent · category plugins

List SDK messages — the catalog of operations plug-in steps can intercept.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
name_contains str | None no None Substring filter on message name
filter str | None no None Raw OData $filter expression
select list[str] | None no None Columns to return. Defaults to sdkmessageid, name.
top int no 50 Maximum number of records to return (ge=1, le=5000)

Returns {"records": ..., "count": ..., "has_more": ...}.


dataverse_set_plugin_trace_log_setting

Write · idempotent · category plugins

Enable or disable plug-in trace logging for the Dataverse organization.

Note: Setting 'all' generates high log volume. Disable logging once debugging is complete to avoid excessive storage usage.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
setting str yes Trace log verbosity level: 'off' (disabled), 'exception' (log only on plug-in exceptions), or 'all' (log every plug-in execution).

Returns {"success": ..., "organization_id": ..., "plugin_trace_log_setting": ..., "plugin_trace_log_setting_label": ...}.


dataverse_update_plugin_assembly

Write · idempotent · category plugins

Update an existing plug-in assembly — most often to re-deploy new DLL bytes.

Note: Re-uploading content updates the registered code in-place without changing the assembly's GUID or breaking dependent types and steps.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
assembly_id str yes GUID of the pluginassembly record to update
content str | None no None New base64-encoded DLL bytes (re-deploys the assembly code)
isolation_mode int | None no None Updated isolation mode: 1=None, 2=Sandbox, 3=External
version str | None no None Updated assembly version string
description str | None no None Updated description

Returns {"updated": ..., "assembly_id": ...}.


dataverse_update_plugin_package

Write · idempotent · category plugins

Update a plug-in package — re-upload new .nupkg content or bump the version.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
package_id str yes GUID of the pluginpackage record to update
content str | None no None New base64-encoded .nupkg bytes
version str | None no None Updated package version string

Returns {"updated": ..., "package_id": ...}.


dataverse_update_plugin_step

Write · idempotent · category plugins

Update an SDK message processing step, including enabling or disabling it.

Note: Use state='enabled' or state='disabled' to toggle without deleting. stage, mode, and message are not mutable after registration — re-create the step to change those.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
step_id str yes GUID of the sdkmessageprocessingstep record to update
name str | None no None Updated step name
rank int | None no None Updated execution order within the stage (ge=1)
filtering_attributes str | None no None Updated comma-separated attribute filter
state str | None no None 'enabled' or 'disabled' — use to enable/disable the step without deleting
configuration str | None no None Updated unsecure configuration string
description str | None no None Updated step description

Returns {"updated": ..., "step_id": ...}.


dataverse_update_plugin_step_image

Write · idempotent · category plugins

Update a plug-in step image's alias, property name, or attribute filter.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
image_id str yes GUID of the sdkmessageprocessingstepimage record to update
entity_alias str | None no None Updated property bag key
message_property_name str | None no None Updated request message property name
attributes str | None no None Updated comma-separated attribute list
name str | None no None Updated image name

Returns {"updated": ..., "image_id": ...}.


dataverse_update_plugin_type

Write · idempotent · category plugins

Update mutable display fields on a plug-in type record.

Note: typename and assembly are not safely mutable after registration — re-create the type instead.

Param Type Req Default Notes
dataverse_url str yes Required Dataverse organization URL for this request (e.g., 'https://yourorg.crm.dynamics.com').
plugin_type_id str yes GUID of the plugintype record to update
friendly_name str | None no None Updated user-friendly name
name str | None no None Updated display name
workflow_activity_group_name str | None no None Updated workflow activity group name

Returns {"updated": ..., "plugin_type_id": ...}.


Clone this wiki locally