Create a custom entity
Updated: November 29, 2016
Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
This topic shows how to create a custom user-owned entity called Bank Account and add four different types of attributes to it.
You can also create organization-owned custom entities. More information: Entity ownership
Note |
|---|
You won’t be able to see this entity in the application navigation unless the entity properties are edited to set the Areas that display this entity are set. |
The following sample uses the CreateEntityRequest to create the entity and the StringAttributeMetadata PrimaryAttribute.
The _customEntityName value is “new_bankaccount”.
CreateEntityRequest createrequest = new CreateEntityRequest { //Define the entity Entity = new EntityMetadata { SchemaName = _customEntityName, DisplayName = new Label("Bank Account", 1033), DisplayCollectionName = new Label("Bank Accounts", 1033), Description = new Label("An entity to store information about customer bank accounts", 1033), OwnershipType = OwnershipTypes.UserOwned, IsActivity = false, }, // Define the primary attribute for the entity PrimaryAttribute = new StringAttributeMetadata { SchemaName = "new_accountname", RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None), MaxLength = 100, FormatName = StringFormatName.Text, DisplayName = new Label("Account Name", 1033), Description = new Label("The primary attribute for the Bank Account entity.", 1033) } }; _serviceProxy.Execute(createrequest); Console.WriteLine("The bank account entity has been created.");
The following sample adds a StringAttributeMetadata attribute to the Bank Account entity.
CreateAttributeRequest createBankNameAttributeRequest = new CreateAttributeRequest { EntityName = _customEntityName, Attribute = new StringAttributeMetadata { SchemaName = "new_bankname", RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None), MaxLength = 100, FormatName = StringFormatName.Text, DisplayName = new Label("Bank Name", 1033), Description = new Label("The name of the bank.", 1033) } }; _serviceProxy.Execute(createBankNameAttributeRequest);
The following sample adds a MoneyAttributeMetadata attribute to the Bank Account entity.
CreateAttributeRequest createBalanceAttributeRequest = new CreateAttributeRequest { EntityName = _customEntityName, Attribute = new MoneyAttributeMetadata { SchemaName = "new_balance", RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None), PrecisionSource = 2, DisplayName = new Label("Balance", 1033), Description = new Label("Account Balance at the last known date", 1033), } }; _serviceProxy.Execute(createBalanceAttributeRequest);
The following sample adds a DateTimeAttributeMetadata attribute to the Bank Account entity.
CreateAttributeRequest createCheckedDateRequest = new CreateAttributeRequest { EntityName = _customEntityName, Attribute = new DateTimeAttributeMetadata { SchemaName = "new_checkeddate", RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None), Format = DateTimeFormat.DateOnly, DisplayName = new Label("Date", 1033), Description = new Label("The date the account balance was last confirmed", 1033) } }; _serviceProxy.Execute(createCheckedDateRequest); Console.WriteLine("An date attribute has been added to the bank account entity.");
The following sample uses CreateOneToManyRequest to create a one-to-many relationship with the Contact entity so that a LookupAttributeMetadata attribute is added to the Bank Account entity.
CreateOneToManyRequest req = new CreateOneToManyRequest() { Lookup = new LookupAttributeMetadata() { Description = new Label("The referral (lead) from the bank account owner", 1033), DisplayName = new Label("Referral", 1033), LogicalName = "new_parent_leadid", SchemaName = "New_Parent_leadId", RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.Recommended) }, OneToManyRelationship = new OneToManyRelationshipMetadata() { AssociatedMenuConfiguration = new AssociatedMenuConfiguration() { Behavior = AssociatedMenuBehavior.UseCollectionName, Group = AssociatedMenuGroup.Details, Label = new Label("Bank Accounts", 1033), Order = 10000 }, CascadeConfiguration = new CascadeConfiguration() { Assign = CascadeType.Cascade, Delete = CascadeType.Cascade, Merge = CascadeType.Cascade, Reparent = CascadeType.Cascade, Share = CascadeType.Cascade, Unshare = CascadeType.Cascade }, ReferencedEntity = "lead", ReferencedAttribute = "leadid", ReferencingEntity = _customEntityName, SchemaName = "new_lead_new_bankaccount" } }; _serviceProxy.Execute(req);
Microsoft Dynamics 365
© 2016 Microsoft. All rights reserved. Copyright
