integrations/ticketing/dynamics365/dist/manifest¶
Variables¶
dynamics365TicketingProviderManifest¶
const dynamics365TicketingProviderManifest: {
capabilities: {
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension?: boolean;
label?: string;
metadata?: Record<string, unknown>;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
category: string;
channelAudiences: ("customer-facing" | "internal-support" | "mixed")[];
coverage: {
evidence: {
label: string;
url?: string;
}[];
notes: string[];
scope: | "support-workflow-subset"
| "provider-api-subset"
| "connector-required"
| "local-protocol"
| "full-provider-api";
};
credentialRequirements: {
description?: string;
id: string;
label?: string;
metadata?: Record<string, unknown>;
required: boolean;
scopes: string[];
}[];
directions: (
| "bidirectional"
| "receive-only"
| "send-only"
| "inbound-only"
| "outbound-only")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "official" | "community" | "unknown" | "partner";
url?: string;
}[];
metadata?: Record<string, unknown>;
name: string;
operations: {
alias: string;
audience?: "customer-facing" | "internal-support" | "mixed";
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension: boolean;
externallyVisible?: boolean;
inputSchema?: unknown;
inputSchemaName?: string;
inputSchemaRef?: string;
label?: string;
metadata?: Record<string, unknown>;
outputSchema?: unknown;
outputSchemaName?: string;
outputSchemaRef?: string;
providerObject?: string;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
providerOperation?: string;
requiredPolicyIds?: string[];
requiresApproval?: boolean;
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
packageName: string;
privacyNotes: string[];
provider: string;
trustLevel: "official" | "community" | "verified" | "experimental";
} & {
capabilities: readonly [{
audiences: readonly ["customer-facing", "internal-support", "mixed"];
capability: "create-provider-object";
changesWorkflow: true;
description: "Creates Dataverse incident records for SDK-user-configured customer-service handoff.";
exposesSensitiveData: true;
label: "Create Dynamics cases";
providerObjects: readonly [{
kind: "dynamics365Incident";
label: "Dynamics 365 Case";
schemaName: "incident";
}, {
kind: "dynamics365Annotation";
label: "Dynamics 365 Annotation";
schemaName: "annotation";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support", "mixed"];
capability: "draft";
description: "Creates Dataverse annotation records for internal support handoff context.";
exposesSensitiveData: true;
label: "Create Dynamics internal notes";
providerObjects: readonly [{
kind: "internalNote";
label: "Internal Note";
schemaName: "annotation";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support", "mixed"];
capability: "read-provider-object";
description: "Reads Dataverse incident records and readiness metadata.";
exposesSensitiveData: true;
label: "Read Dynamics cases";
providerObjects: readonly [{
kind: "dynamics365Incident";
label: "Dynamics 365 Case";
schemaName: "incident";
}, {
kind: "dynamics365Annotation";
label: "Dynamics 365 Annotation";
schemaName: "annotation";
}, {
kind: "dynamics365Queue";
label: "Dynamics 365 Queue";
schemaName: "queue";
}, {
kind: "dynamics365Activity";
label: "Dynamics 365 Activity";
schemaName: "activitypointer";
}, {
kind: "dynamics365EntityDefinition";
label: "Dynamics 365 Entity Definition";
schemaName: "EntityDefinition";
}, {
kind: "dynamics365WhoAmI";
label: "Dynamics 365 WhoAmI";
schemaName: "WhoAmI";
}];
requiresCredential: true;
}, {
audiences: readonly ["internal-support", "mixed"];
capability: "update-provider-object";
changesWorkflow: true;
description: "Updates Dataverse incident records such as status, title, description, owner, or custom fields.";
exposesSensitiveData: true;
label: "Update Dynamics cases";
providerObjects: readonly [{
kind: "dynamics365Incident";
label: "Dynamics 365 Case";
schemaName: "incident";
}];
requiresCredential: true;
sideEffect: true;
}, {
audiences: readonly ["internal-support", "mixed"];
capability: "search-provider-object";
description: "Queries Dataverse incident records with SDK-user-supplied OData options.";
exposesSensitiveData: true;
label: "Search Dynamics cases";
providerObjects: readonly [{
kind: "dynamics365Incident";
label: "Dynamics 365 Case";
schemaName: "incident";
}, {
kind: "dynamics365Annotation";
label: "Dynamics 365 Annotation";
schemaName: "annotation";
}, {
kind: "dynamics365Queue";
label: "Dynamics 365 Queue";
schemaName: "queue";
}, {
kind: "dynamics365Activity";
label: "Dynamics 365 Activity";
schemaName: "activitypointer";
}];
requiresCredential: true;
}, {
audiences: readonly ["customer-facing", "internal-support", "mixed"];
capability: "handoff";
changesWorkflow: true;
description: "Uses Dataverse incident, annotation, and selected queue operations in SDK-user-configured record handoff workflows; this does not imply native Omnichannel conversation transfer or live-work-item mutation.";
exposesSensitiveData: true;
label: "Attach handoff to Dynamics";
providerObjects: readonly [{
kind: "dynamics365Incident";
label: "Dynamics 365 Case";
schemaName: "incident";
}, {
kind: "dynamics365Annotation";
label: "Dynamics 365 Annotation";
schemaName: "annotation";
}, {
kind: "dynamics365Queue";
label: "Dynamics 365 Queue";
schemaName: "queue";
}];
requiresCredential: true;
sideEffect: true;
}];
category: "ticketing";
channelAudiences: readonly ["customer-facing", "internal-support", "mixed"];
coverage: {
evidence: readonly [{
label: "Microsoft Dataverse Web API overview";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview";
}, {
label: "dynamics-web-api Dataverse helper";
url: "https://github.com/AleksandrRogov/DynamicsWebApi";
}, {
label: "Dynamics 365 Customer Service incident table reference";
url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/incident";
}, {
label: "Dataverse EntityDefinitions metadata queries";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-metadata-web-api";
}, {
label: "Dataverse WhoAmI Function";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/whoami?view=dataverse-latest";
}, {
label: "Dataverse Note/Annotation table reference";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/annotation";
}, {
label: "Dataverse ActivityPointer table reference";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/activitypointer";
}, {
label: "Dataverse queue EntityType reference";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/queue";
}, {
label: "Dataverse AddToQueue Action";
url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/addtoqueue?view=dataverse-latest";
}, {
label: "Dynamics 365 Omnichannel JavaScript API";
url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/omnichannel-api-reference";
}, {
label: "Dynamics 365 custom messaging channel table";
url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/msdyn_occustommessagingchannel";
}, {
label: "Dynamics 365 getConversations Omnichannel API";
url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversations";
}];
notes: readonly ["Coverage is limited to Dataverse incident CRUD/search, selected metadata/readiness helpers, incident notes via annotations, queue AddToQueue, and queue/activity reads used by Cognidesk support workflows.", "Implementation uses dynamics-web-api 2.5.0; broader Dataverse Web API capabilities remain available through the rawClient escape hatch but are not Cognidesk adapter coverage.", "Annotation note creation supports bounded inline annotation document fields (`filename`, `documentbody`, `mimetype`) on the Dataverse annotation record; this is not a complete file/attachment lifecycle.", "This is not full Microsoft Dataverse, Dynamics 365 Customer Service, activity, annotation attachment, relationship metadata, broader queue routing, or custom action API coverage."];
scope: "support-workflow-subset";
};
credentialRequirements: readonly [{
id: "dynamics365-instance";
label: "Dynamics 365 Dataverse environment URL";
required: true;
}, {
id: "dynamics365-api-access";
label: "Dynamics 365 OAuth access";
metadata: {
privilegeGuidance: "Delegated clients request <environment-url>/user_impersonation; confidential clients commonly request <environment-url>/.default. Dataverse security roles still govern incident, annotation, queue, activity, and AddToQueue access.";
scopeKind: "provider-oauth-scopes";
};
required: true;
scopes: readonly ["user_impersonation"];
}];
directions: readonly ["bidirectional"];
id: "ticketing.dynamics365";
limitations: readonly ["Dataverse table customizations, required fields, queues, owners, security roles, and routing rules are SDK-user configuration.", "Unified Routing live-work-item mutation is provider-sensitive and must not be inferred from typed AddToQueue support."];
maintainers: readonly [{
name: "Cognidesk";
type: "official";
}];
metadata: {
channelCoverage: {
activities: "typed-list";
annotationAttachmentLifecycle: "provider-supported-not-typed";
annotationInlineDocumentFields: "typed-selected";
annotationsCaseNotes: "typed-create-list";
broaderDataverseApi: "provider-supported-raw-client";
ccaasConversationActions: "provider-supported-not-typed";
conversationsLiveWorkItems: "provider-supported-not-typed";
customActions: "not-covered";
customMessagingChannels: "provider-supported-not-typed";
incidents: "typed-crud-search";
linkToConversation: "provider-supported-client-sdk-not-typed";
messagingApis: "provider-supported-not-typed";
metadataReadiness: "typed-selected";
omnichannelLiveChatWidget: "provider-supported-client-sdk-not-typed";
queueRouting: "typed-selected";
queues: "typed-list";
relationshipMetadata: "not-covered";
transcriptAnnotations: "provider-supported-not-typed";
unifiedRoutingLiveWorkItemMutation: "provider-supported-not-typed";
};
checkedProviderApiCoverage: {
coverageArtifact: "docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json";
familyCount: 4;
fullCoverageExportRequirement: "Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export.";
gapFamilyCount: 1;
implementedFamilyCount: 3;
implementedOperationCount: 11;
sourceKind: "checked-endpoint-family-inventory";
verifiedAt: "2026-06-18";
};
implementation: {
manifestImport: "no-sdk-client-initialization";
rawClientEscapeHatch: "Dynamics365TicketingClient.rawClient/getRawClient()";
runtimePackage: "@cognidesk/integration-ticketing-dynamics365";
sdkPackage: "dynamics-web-api";
sdkVersionRange: "2.5.0";
strategy: "sdk-backed";
};
};
name: "Microsoft Dynamics 365 Customer Service";
operations: {
alias: string;
audience?: "customer-facing" | "internal-support" | "mixed";
audiences?: ("customer-facing" | "internal-support" | "mixed")[];
capability: string;
changesWorkflow?: boolean;
description?: string;
exposesSensitiveData?: boolean;
extension?: boolean;
externallyVisible?: boolean;
inputSchema?: unknown;
inputSchemaName?: string;
inputSchemaRef?: string;
label?: string;
metadata?: Record<string, unknown>;
outputSchema?: unknown;
outputSchemaName?: string;
outputSchemaRef?: string;
providerObject?: string;
providerObjects?: {
description?: string;
kind: string;
label?: string;
metadata?: Record<string, unknown>;
schemaName?: string;
}[];
providerOperation?: string;
requiredPolicyIds?: string[];
requiresApproval?: boolean;
requiresCredential?: boolean;
sideEffect?: boolean;
}[];
packageName: "@cognidesk/integration-ticketing-dynamics365";
privacyNotes: readonly ["Dynamics cases can contain customer identity, support summaries, entitlements, queue and owner metadata, and internal notes.", "Dynamics OAuth credentials stay server-side and Studio receives only readiness."];
provider: "dynamics365";
trustLevel: "official";
};
Type Declaration¶
| Name | Type |
|---|---|
capabilities |
{ audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; label?: string; metadata?: Record\<string, unknown>; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; requiresCredential?: boolean; sideEffect?: boolean; }[] |
category |
string |
channelAudiences |
("customer-facing" | "internal-support" | "mixed")[] |
coverage |
{ evidence: { label: string; url?: string; }[]; notes: string[]; scope: | "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api"; } |
coverage.evidence |
{ label: string; url?: string; }[] |
coverage.notes |
string[] |
coverage.scope |
| "support-workflow-subset" | "provider-api-subset" | "connector-required" | "local-protocol" | "full-provider-api" |
credentialRequirements |
{ description?: string; id: string; label?: string; metadata?: Record\<string, unknown>; required: boolean; scopes: string[]; }[] |
directions |
( | "bidirectional" | "receive-only" | "send-only" | "inbound-only" | "outbound-only")[] |
id |
string |
limitations |
string[] |
maintainers |
{ name: string; type: "official" | "community" | "unknown" | "partner"; url?: string; }[] |
metadata? |
Record\<string, unknown> |
name |
string |
operations |
{ alias: string; audience?: "customer-facing" | "internal-support" | "mixed"; audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[] |
packageName |
string |
privacyNotes |
string[] |
provider |
string |
trustLevel |
"official" | "community" | "verified" | "experimental" |
Type Declaration¶
| Name | Type |
|---|---|
capabilities |
readonly [{ audiences: readonly ["customer-facing", "internal-support", "mixed"]; capability: "create-provider-object"; changesWorkflow: true; description: "Creates Dataverse incident records for SDK-user-configured customer-service handoff."; exposesSensitiveData: true; label: "Create Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "draft"; description: "Creates Dataverse annotation records for internal support handoff context."; exposesSensitiveData: true; label: "Create Dynamics internal notes"; providerObjects: readonly [{ kind: "internalNote"; label: "Internal Note"; schemaName: "annotation"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "read-provider-object"; description: "Reads Dataverse incident records and readiness metadata."; exposesSensitiveData: true; label: "Read Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }, { kind: "dynamics365Activity"; label: "Dynamics 365 Activity"; schemaName: "activitypointer"; }, { kind: "dynamics365EntityDefinition"; label: "Dynamics 365 Entity Definition"; schemaName: "EntityDefinition"; }, { kind: "dynamics365WhoAmI"; label: "Dynamics 365 WhoAmI"; schemaName: "WhoAmI"; }]; requiresCredential: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "update-provider-object"; changesWorkflow: true; description: "Updates Dataverse incident records such as status, title, description, owner, or custom fields."; exposesSensitiveData: true; label: "Update Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }]; requiresCredential: true; sideEffect: true; }, { audiences: readonly ["internal-support", "mixed"]; capability: "search-provider-object"; description: "Queries Dataverse incident records with SDK-user-supplied OData options."; exposesSensitiveData: true; label: "Search Dynamics cases"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }, { kind: "dynamics365Activity"; label: "Dynamics 365 Activity"; schemaName: "activitypointer"; }]; requiresCredential: true; }, { audiences: readonly ["customer-facing", "internal-support", "mixed"]; capability: "handoff"; changesWorkflow: true; description: "Uses Dataverse incident, annotation, and selected queue operations in SDK-user-configured record handoff workflows; this does not imply native Omnichannel conversation transfer or live-work-item mutation."; exposesSensitiveData: true; label: "Attach handoff to Dynamics"; providerObjects: readonly [{ kind: "dynamics365Incident"; label: "Dynamics 365 Case"; schemaName: "incident"; }, { kind: "dynamics365Annotation"; label: "Dynamics 365 Annotation"; schemaName: "annotation"; }, { kind: "dynamics365Queue"; label: "Dynamics 365 Queue"; schemaName: "queue"; }]; requiresCredential: true; sideEffect: true; }] |
category |
"ticketing" |
channelAudiences |
readonly ["customer-facing", "internal-support", "mixed"] |
coverage |
{ evidence: readonly [{ label: "Microsoft Dataverse Web API overview"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview"; }, { label: "dynamics-web-api Dataverse helper"; url: "https://github.com/AleksandrRogov/DynamicsWebApi"; }, { label: "Dynamics 365 Customer Service incident table reference"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/incident"; }, { label: "Dataverse EntityDefinitions metadata queries"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-metadata-web-api"; }, { label: "Dataverse WhoAmI Function"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/whoami?view=dataverse-latest"; }, { label: "Dataverse Note/Annotation table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/annotation"; }, { label: "Dataverse ActivityPointer table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/activitypointer"; }, { label: "Dataverse queue EntityType reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/queue"; }, { label: "Dataverse AddToQueue Action"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/addtoqueue?view=dataverse-latest"; }, { label: "Dynamics 365 Omnichannel JavaScript API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/omnichannel-api-reference"; }, { label: "Dynamics 365 custom messaging channel table"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/msdyn_occustommessagingchannel"; }, { label: "Dynamics 365 getConversations Omnichannel API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversations"; }]; notes: readonly ["Coverage is limited to Dataverse incident CRUD/search, selected metadata/readiness helpers, incident notes via annotations, queue AddToQueue, and queue/activity reads used by Cognidesk support workflows.", "Implementation uses dynamics-web-api 2.5.0; broader Dataverse Web API capabilities remain available through the rawClient escape hatch but are not Cognidesk adapter coverage.", "Annotation note creation supports bounded inline annotation document fields (`filename`, `documentbody`, `mimetype`) on the Dataverse annotation record; this is not a complete file/attachment lifecycle.", "This is not full Microsoft Dataverse, Dynamics 365 Customer Service, activity, annotation attachment, relationship metadata, broader queue routing, or custom action API coverage."]; scope: "support-workflow-subset"; } |
coverage.evidence |
readonly [{ label: "Microsoft Dataverse Web API overview"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview"; }, { label: "dynamics-web-api Dataverse helper"; url: "https://github.com/AleksandrRogov/DynamicsWebApi"; }, { label: "Dynamics 365 Customer Service incident table reference"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/incident"; }, { label: "Dataverse EntityDefinitions metadata queries"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query-metadata-web-api"; }, { label: "Dataverse WhoAmI Function"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/whoami?view=dataverse-latest"; }, { label: "Dataverse Note/Annotation table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/annotation"; }, { label: "Dataverse ActivityPointer table reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/activitypointer"; }, { label: "Dataverse queue EntityType reference"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/queue"; }, { label: "Dataverse AddToQueue Action"; url: "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/addtoqueue?view=dataverse-latest"; }, { label: "Dynamics 365 Omnichannel JavaScript API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/omnichannel-api-reference"; }, { label: "Dynamics 365 custom messaging channel table"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/entities/msdyn_occustommessagingchannel"; }, { label: "Dynamics 365 getConversations Omnichannel API"; url: "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversations"; }] |
coverage.notes |
readonly ["Coverage is limited to Dataverse incident CRUD/search, selected metadata/readiness helpers, incident notes via annotations, queue AddToQueue, and queue/activity reads used by Cognidesk support workflows.", "Implementation uses dynamics-web-api 2.5.0; broader Dataverse Web API capabilities remain available through the rawClient escape hatch but are not Cognidesk adapter coverage.", "Annotation note creation supports bounded inline annotation document fields (`filename`, `documentbody`, `mimetype`) on the Dataverse annotation record; this is not a complete file/attachment lifecycle.", "This is not full Microsoft Dataverse, Dynamics 365 Customer Service, activity, annotation attachment, relationship metadata, broader queue routing, or custom action API coverage."] |
coverage.scope |
"support-workflow-subset" |
credentialRequirements |
readonly [{ id: "dynamics365-instance"; label: "Dynamics 365 Dataverse environment URL"; required: true; }, { id: "dynamics365-api-access"; label: "Dynamics 365 OAuth access"; metadata: { privilegeGuidance: "Delegated clients request <environment-url>/user_impersonation; confidential clients commonly request <environment-url>/.default. Dataverse security roles still govern incident, annotation, queue, activity, and AddToQueue access."; scopeKind: "provider-oauth-scopes"; }; required: true; scopes: readonly ["user_impersonation"]; }] |
directions |
readonly ["bidirectional"] |
id |
"ticketing.dynamics365" |
limitations |
readonly ["Dataverse table customizations, required fields, queues, owners, security roles, and routing rules are SDK-user configuration.", "Unified Routing live-work-item mutation is provider-sensitive and must not be inferred from typed AddToQueue support."] |
maintainers |
readonly [{ name: "Cognidesk"; type: "official"; }] |
metadata |
{ channelCoverage: { activities: "typed-list"; annotationAttachmentLifecycle: "provider-supported-not-typed"; annotationInlineDocumentFields: "typed-selected"; annotationsCaseNotes: "typed-create-list"; broaderDataverseApi: "provider-supported-raw-client"; ccaasConversationActions: "provider-supported-not-typed"; conversationsLiveWorkItems: "provider-supported-not-typed"; customActions: "not-covered"; customMessagingChannels: "provider-supported-not-typed"; incidents: "typed-crud-search"; linkToConversation: "provider-supported-client-sdk-not-typed"; messagingApis: "provider-supported-not-typed"; metadataReadiness: "typed-selected"; omnichannelLiveChatWidget: "provider-supported-client-sdk-not-typed"; queueRouting: "typed-selected"; queues: "typed-list"; relationshipMetadata: "not-covered"; transcriptAnnotations: "provider-supported-not-typed"; unifiedRoutingLiveWorkItemMutation: "provider-supported-not-typed"; }; checkedProviderApiCoverage: { coverageArtifact: "docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json"; familyCount: 4; fullCoverageExportRequirement: "Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export."; gapFamilyCount: 1; implementedFamilyCount: 3; implementedOperationCount: 11; sourceKind: "checked-endpoint-family-inventory"; verifiedAt: "2026-06-18"; }; implementation: { manifestImport: "no-sdk-client-initialization"; rawClientEscapeHatch: "Dynamics365TicketingClient.rawClient/getRawClient()"; runtimePackage: "@cognidesk/integration-ticketing-dynamics365"; sdkPackage: "dynamics-web-api"; sdkVersionRange: "2.5.0"; strategy: "sdk-backed"; }; } |
metadata.channelCoverage |
{ activities: "typed-list"; annotationAttachmentLifecycle: "provider-supported-not-typed"; annotationInlineDocumentFields: "typed-selected"; annotationsCaseNotes: "typed-create-list"; broaderDataverseApi: "provider-supported-raw-client"; ccaasConversationActions: "provider-supported-not-typed"; conversationsLiveWorkItems: "provider-supported-not-typed"; customActions: "not-covered"; customMessagingChannels: "provider-supported-not-typed"; incidents: "typed-crud-search"; linkToConversation: "provider-supported-client-sdk-not-typed"; messagingApis: "provider-supported-not-typed"; metadataReadiness: "typed-selected"; omnichannelLiveChatWidget: "provider-supported-client-sdk-not-typed"; queueRouting: "typed-selected"; queues: "typed-list"; relationshipMetadata: "not-covered"; transcriptAnnotations: "provider-supported-not-typed"; unifiedRoutingLiveWorkItemMutation: "provider-supported-not-typed"; } |
metadata.channelCoverage.activities |
"typed-list" |
metadata.channelCoverage.annotationAttachmentLifecycle |
"provider-supported-not-typed" |
metadata.channelCoverage.annotationInlineDocumentFields |
"typed-selected" |
metadata.channelCoverage.annotationsCaseNotes |
"typed-create-list" |
metadata.channelCoverage.broaderDataverseApi |
"provider-supported-raw-client" |
metadata.channelCoverage.ccaasConversationActions |
"provider-supported-not-typed" |
metadata.channelCoverage.conversationsLiveWorkItems |
"provider-supported-not-typed" |
metadata.channelCoverage.customActions |
"not-covered" |
metadata.channelCoverage.customMessagingChannels |
"provider-supported-not-typed" |
metadata.channelCoverage.incidents |
"typed-crud-search" |
metadata.channelCoverage.linkToConversation |
"provider-supported-client-sdk-not-typed" |
metadata.channelCoverage.messagingApis |
"provider-supported-not-typed" |
metadata.channelCoverage.metadataReadiness |
"typed-selected" |
metadata.channelCoverage.omnichannelLiveChatWidget |
"provider-supported-client-sdk-not-typed" |
metadata.channelCoverage.queueRouting |
"typed-selected" |
metadata.channelCoverage.queues |
"typed-list" |
metadata.channelCoverage.relationshipMetadata |
"not-covered" |
metadata.channelCoverage.transcriptAnnotations |
"provider-supported-not-typed" |
metadata.channelCoverage.unifiedRoutingLiveWorkItemMutation |
"provider-supported-not-typed" |
metadata.checkedProviderApiCoverage |
{ coverageArtifact: "docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json"; familyCount: 4; fullCoverageExportRequirement: "Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export."; gapFamilyCount: 1; implementedFamilyCount: 3; implementedOperationCount: 11; sourceKind: "checked-endpoint-family-inventory"; verifiedAt: "2026-06-18"; } |
metadata.checkedProviderApiCoverage.coverageArtifact |
"docs/provider-coverage/dynamics365-checked-dataverse-customer-service-2026-06-18.inventory.json" |
metadata.checkedProviderApiCoverage.familyCount |
4 |
metadata.checkedProviderApiCoverage.fullCoverageExportRequirement |
"Full environment-specific Dataverse/Dynamics coverage requires the SDK user's $metadata/CSDL, EntityDefinitions, solution customizations, enabled Dynamics 365 Customer Service products, security roles, and custom action/function export." |
metadata.checkedProviderApiCoverage.gapFamilyCount |
1 |
metadata.checkedProviderApiCoverage.implementedFamilyCount |
3 |
metadata.checkedProviderApiCoverage.implementedOperationCount |
11 |
metadata.checkedProviderApiCoverage.sourceKind |
"checked-endpoint-family-inventory" |
metadata.checkedProviderApiCoverage.verifiedAt |
"2026-06-18" |
metadata.implementation |
{ manifestImport: "no-sdk-client-initialization"; rawClientEscapeHatch: "Dynamics365TicketingClient.rawClient/getRawClient()"; runtimePackage: "@cognidesk/integration-ticketing-dynamics365"; sdkPackage: "dynamics-web-api"; sdkVersionRange: "2.5.0"; strategy: "sdk-backed"; } |
metadata.implementation.manifestImport |
"no-sdk-client-initialization" |
metadata.implementation.rawClientEscapeHatch |
"Dynamics365TicketingClient.rawClient/getRawClient()" |
metadata.implementation.runtimePackage |
"@cognidesk/integration-ticketing-dynamics365" |
metadata.implementation.sdkPackage |
"dynamics-web-api" |
metadata.implementation.sdkVersionRange |
"2.5.0" |
metadata.implementation.strategy |
"sdk-backed" |
name |
"Microsoft Dynamics 365 Customer Service" |
operations |
{ alias: string; audience?: "customer-facing" | "internal-support" | "mixed"; audiences?: ("customer-facing" | "internal-support" | "mixed")[]; capability: string; changesWorkflow?: boolean; description?: string; exposesSensitiveData?: boolean; extension?: boolean; externallyVisible?: boolean; inputSchema?: unknown; inputSchemaName?: string; inputSchemaRef?: string; label?: string; metadata?: Record\<string, unknown>; outputSchema?: unknown; outputSchemaName?: string; outputSchemaRef?: string; providerObject?: string; providerObjects?: { description?: string; kind: string; label?: string; metadata?: Record\<string, unknown>; schemaName?: string; }[]; providerOperation?: string; requiredPolicyIds?: string[]; requiresApproval?: boolean; requiresCredential?: boolean; sideEffect?: boolean; }[] |
packageName |
"@cognidesk/integration-ticketing-dynamics365" |
privacyNotes |
readonly ["Dynamics cases can contain customer identity, support summaries, entitlements, queue and owner metadata, and internal notes.", "Dynamics OAuth credentials stay server-side and Studio receives only readiness."] |
provider |
"dynamics365" |
trustLevel |
"official" |