Skip to main content
Glama
rafteles2016

MCP Dynamics CRM Server

by rafteles2016

dynamics_create_relationship

Create relationships between tables in Microsoft Dynamics CRM by defining schema, entities, attributes, and cascade behaviors for data modeling.

Instructions

Cria um relacionamento entre duas tabelas

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
schemaNameYesNome do schema do relacionamento
referencingEntityYesEntidade referenciadora (many)
referencedEntityYesEntidade referenciada (one)
referencingAttributeYesAtributo de lookup
relationshipTypeNoOneToMany
cascadeAssignNoNoCascade
cascadeDeleteNoRemoveLink
solutionUniqueNameNo

Implementation Reference

  • The handler function for "dynamics_create_relationship" which defines the relationship metadata and sends a POST request to Dataverse.
    server.tool(
      "dynamics_create_relationship",
      "Cria um relacionamento entre duas tabelas",
      CreateRelationshipSchema.shape,
      async (params: z.infer<typeof CreateRelationshipSchema>) => {
        if (params.relationshipType === "OneToMany") {
          const relData = {
            SchemaName: params.schemaName,
            "@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
            ReferencedEntity: params.referencedEntity,
            ReferencingEntity: params.referencingEntity,
            Lookup: {
              SchemaName: params.referencingAttribute,
              DisplayName: {
                "@odata.type": "Microsoft.Dynamics.CRM.Label",
                LocalizedLabels: [{ "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel", Label: params.referencedEntity, LanguageCode: 1046 }],
              },
              RequiredLevel: { Value: "None" },
            },
            CascadeConfiguration: {
              Assign: params.cascadeAssign,
              Delete: params.cascadeDelete,
              Merge: "NoCascade",
              Reparent: "NoCascade",
              Share: "NoCascade",
              Unshare: "NoCascade",
            },
          };
    
          let endpoint = "RelationshipDefinitions";
          if (params.solutionUniqueName) {
            endpoint += `?SolutionUniqueName='${params.solutionUniqueName}'`;
          }
    
          const result = await client.post<{ MetadataId: string }>(endpoint, relData);
          return {
            content: [
              {
                type: "text" as const,
                text: `Relacionamento 1:N criado!\nMetadataId: ${result.MetadataId}\n${params.referencedEntity} -> ${params.referencingEntity}`,
              },
            ],
          };
        } else {
          const relData = {
            SchemaName: params.schemaName,
            "@odata.type": "Microsoft.Dynamics.CRM.ManyToManyRelationshipMetadata",
            Entity1LogicalName: params.referencedEntity,
            Entity2LogicalName: params.referencingEntity,
            IntersectEntityName: `${params.referencedEntity}_${params.referencingEntity}`,
          };
    
          let endpoint = "RelationshipDefinitions";
          if (params.solutionUniqueName) {
            endpoint += `?SolutionUniqueName='${params.solutionUniqueName}'`;
          }
    
          const result = await client.post<{ MetadataId: string }>(endpoint, relData);
          return {
            content: [
              {
                type: "text" as const,
                text: `Relacionamento N:N criado!\nMetadataId: ${result.MetadataId}\n${params.referencedEntity} <-> ${params.referencingEntity}`,
  • The Zod schema definition for "dynamics_create_relationship" inputs.
    export const CreateRelationshipSchema = z.object({
      schemaName: z.string().describe("Nome do schema do relacionamento"),
      referencingEntity: z.string().describe("Entidade referenciadora (many)"),
      referencedEntity: z.string().describe("Entidade referenciada (one)"),
      referencingAttribute: z.string().describe("Atributo de lookup"),
      relationshipType: z.enum(["OneToMany", "ManyToMany"]).default("OneToMany"),
      cascadeAssign: z.enum(["NoCascade", "Cascade", "Active", "UserOwned"]).default("NoCascade"),
      cascadeDelete: z.enum(["NoCascade", "Cascade", "RemoveLink", "Restrict"]).default("RemoveLink"),
      solutionUniqueName: z.string().optional(),
    });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rafteles2016/mcpDynamics'

If you have feedback or need assistance with the MCP directory API, please join our Discord server