integrations/ticketing/dynamics365/dist¶
Interfaces¶
Dynamics365AddToQueueInput¶
Properties¶
queueId¶
queueItemProperties?¶
sourceQueueId?¶
targetEntitySetName?¶
targetId¶
Dynamics365CaseInput¶
Properties¶
additionalFields?¶
customerId?¶
description?¶
priorityCode?¶
title¶
Dynamics365CreateCaseNoteInput¶
Properties¶
additionalFields?¶
caseId¶
documentBody?¶
filename?¶
mimeType?¶
subject?¶
text¶
Dynamics365CredentialStatusInput¶
Properties¶
apiAccessConfigured?¶
instanceUrl?¶
Dynamics365EntityDefinitionInput¶
Properties¶
logicalName¶
select?¶
Dynamics365JsonObject¶
Extended by¶
Indexable¶
Dynamics365LiveCheckOptions¶
Extends¶
Properties¶
accessToken?¶
Inherited from¶
Dynamics365TicketingClientOptions.accessToken
apiVersion?¶
Inherited from¶
Dynamics365TicketingClientOptions.apiVersion
client?¶
instanceUrl?¶
Inherited from¶
Dynamics365TicketingClientOptions.instanceUrl
rawClient?¶
Inherited from¶
Dynamics365TicketingClientOptions.rawClient
Dynamics365ProviderExtensionFields¶
Extends¶
Indexable¶
Dynamics365ProviderResponse¶
Extends¶
Indexable¶
Dynamics365SearchInput¶
Properties¶
filter?¶
orderBy?¶
select?¶
top?¶
Dynamics365TicketingClient¶
Extends¶
Properties¶
integration¶
rawClient¶
Methods¶
addToQueue()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365AddToQueueInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.addToQueue
createCase()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365CaseInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.createCase
createCaseNote()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365CreateCaseNoteInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.createCaseNote
getCase()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.getCase
getEntityDefinition()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365EntityDefinitionInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.getEntityDefinition
getRawClient()¶
Returns¶
DynamicsWebApi
listActivities()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.listActivities
listCaseNotes()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.listCaseNotes
listQueues()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.listQueues
readiness()¶
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.readiness
searchCases()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.searchCases
updateCase()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
patch |
Dynamics365ProviderPayload |
Returns¶
Promise\<Dynamics365ProviderResponse>
Inherited from¶
Dynamics365TicketingOperationsClient.updateCase
Dynamics365TicketingClientOptions¶
Extended by¶
Properties¶
accessToken?¶
apiVersion?¶
instanceUrl?¶
rawClient?¶
Dynamics365TicketingIntegrationOptions¶
Extends¶
Properties¶
accessToken?¶
Inherited from¶
Dynamics365TicketingClientOptions.accessToken
apiVersion?¶
Inherited from¶
Dynamics365TicketingClientOptions.apiVersion
client?¶
instanceUrl?¶
Inherited from¶
Dynamics365TicketingClientOptions.instanceUrl
rawClient?¶
Inherited from¶
Dynamics365TicketingClientOptions.rawClient
Dynamics365TicketingOperationsClient¶
Extended by¶
Methods¶
addToQueue()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365AddToQueueInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
createCase()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365CaseInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
createCaseNote()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365CreateCaseNoteInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
getCase()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
Returns¶
Promise\<Dynamics365ProviderResponse>
getEntityDefinition()¶
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365EntityDefinitionInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
listActivities()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
listCaseNotes()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
listQueues()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
readiness()¶
Returns¶
Promise\<Dynamics365ProviderResponse>
searchCases()¶
Parameters¶
| Parameter | Type |
|---|---|
input? |
Dynamics365SearchInput |
Returns¶
Promise\<Dynamics365ProviderResponse>
updateCase()¶
Parameters¶
| Parameter | Type |
|---|---|
caseId |
string |
patch |
Dynamics365ProviderPayload |
Returns¶
Promise\<Dynamics365ProviderResponse>
Type Aliases¶
Dynamics365JsonPrimitive¶
Dynamics365JsonValue¶
type Dynamics365JsonValue =
| Dynamics365JsonPrimitive
| Dynamics365JsonObject
| readonly Dynamics365JsonValue[];
Dynamics365ProviderExtensionValue¶
Dynamics365ProviderPayload¶
Dynamics365ProviderQuery¶
Dynamics365RawClient¶
Dynamics365TicketingOperationAlias¶
Variables¶
dynamics365TicketingProviderOperations¶
Functions¶
createDynamics365RawClient()¶
Parameters¶
| Parameter | Type |
|---|---|
options |
Dynamics365TicketingClientOptions |
Returns¶
DynamicsWebApi
createDynamics365TicketingClient()¶
Parameters¶
| Parameter | Type |
|---|---|
options? |
Dynamics365TicketingClientOptions |
Returns¶
createDynamics365TicketingIntegration()¶
function createDynamics365TicketingIntegration(options?): DefinedIntegration<{
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: (
| "receive-only"
| "send-only"
| "inbound-only"
| "outbound-only"
| "bidirectional")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "community" | "official" | "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: "community" | "official" | "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";
}, Dynamics365JsonObject, IntegrationOperationHandlers>;
Parameters¶
| Parameter | Type |
|---|---|
options? |
Dynamics365TicketingIntegrationOptions |
Returns¶
DefinedIntegration\<{
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: (
| "receive-only"
| "send-only"
| "inbound-only"
| "outbound-only"
| "bidirectional")[];
id: string;
limitations: string[];
maintainers: {
name: string;
type: "community" | "official" | "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: "community" | "official" | "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";
}, Dynamics365JsonObject, IntegrationOperationHandlers>
createDynamics365TicketingLiveChecks()¶
function createDynamics365TicketingLiveChecks(options): {
description: string;
id: string;
requiredCredentialIds: string[];
run: Promise<{
details: {
ok: boolean;
};
}>;
}[];
Parameters¶
| Parameter | Type |
|---|---|
options |
Dynamics365LiveCheckOptions |
Returns¶
{
description: string;
id: string;
requiredCredentialIds: string[];
run: Promise\<{
details: {
ok: boolean;
};
}>;
}[]
createDynamics365TicketingOperationHandlers()¶
Parameters¶
| Parameter | Type |
|---|---|
client |
Dynamics365TicketingOperationsClient |
Returns¶
dynamics365TicketingCredentialStatuses()¶
function dynamics365TicketingCredentialStatuses(input): {
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[];
Parameters¶
| Parameter | Type |
|---|---|
input |
Dynamics365CredentialStatusInput |
Returns¶
{
expiresAt?: string;
message?: string;
providerPackageId?: string;
requirementId: string;
scopes?: string[];
state: | "required"
| "configured"
| "permission-blocked"
| "not-required"
| "missing"
| "expired"
| "insufficient-scope"
| "unavailable";
}[]
References¶
dynamics365TicketingProviderManifest¶
Re-exports dynamics365TicketingProviderManifest