Create a custom entity
Applies To: Dynamics CRM 2015
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.
In This Topic
Create a custom entity
Add a String attribute to the custom entity
Add a Money attribute to the custom entity
Add a DateTime attribute to the custom entity
Add a Lookup attribute to the custom entity
Create a custom entity
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.");
Dim createrequest As CreateEntityRequest = New CreateEntityRequest With {
.Entity = New EntityMetadata With {
.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},
.PrimaryAttribute = New StringAttributeMetadata With {
.SchemaName = "new_accountname",
.RequiredLevel = New AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
.MaxLength = 100,
.Format = StringFormat.Text,
.DisplayName = New Label("Account Name", 1033),
.Description = New Label("The primary attribute for the Bank Account entity.", 1033)
}
}
'Define the entity
' Define the primary attribute for the entity
_serviceProxy.Execute(createrequest)
Console.WriteLine("The bank account entity has been created.")
Add a String attribute to the custom entity
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);
Dim createBankNameAttributeRequest As CreateAttributeRequest = New CreateAttributeRequest With {
.EntityName = _customEntityName,
.Attribute = New StringAttributeMetadata With {
.SchemaName = "new_bankname",
.RequiredLevel = New AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
.MaxLength = 100,
.Format = StringFormat.Text,
.DisplayName = New Label("Bank Name", 1033),
.Description = New Label("The name of the bank.", 1033)
}
}
_serviceProxy.Execute(createBankNameAttributeRequest)
Add a Money attribute to the custom entity
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);
Dim createBalanceAttributeRequest As CreateAttributeRequest = New CreateAttributeRequest With {
.EntityName = _customEntityName,
.Attribute = New MoneyAttributeMetadata With {
.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)
Add a DateTime attribute to the custom entity
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.");
Dim createCheckedDateRequest As CreateAttributeRequest = New CreateAttributeRequest With {
.EntityName = _customEntityName,
.Attribute = New DateTimeAttributeMetadata With {
.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.")
Add a Lookup attribute to the custom 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 owner of the bank account", 1033),
DisplayName = new Label("Account Owner", 1033),
LogicalName = "new_parent_contactid",
SchemaName = "New_Parent_ContactId",
RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.ApplicationRequired)
},
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 = Contact.EntityLogicalName,
ReferencedAttribute = "contactid",
ReferencingEntity = _customEntityName,
SchemaName = "new_contact_new_bankaccount"
}
};
_serviceProxy.Execute(req);
Dim req As New CreateOneToManyRequest() With {
.Lookup = New LookupAttributeMetadata() With {
.Description = New Label("The owner of the bank account", 1033),
.DisplayName = New Label("Account Owner", 1033),
.LogicalName = "new_parent_contactid",
.SchemaName = "New_Parent_ContactId",
.RequiredLevel = New AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.ApplicationRequired)},
.OneToManyRelationship = New OneToManyRelationshipMetadata() With {
.AssociatedMenuConfiguration = New AssociatedMenuConfiguration() With {
.Behavior = AssociatedMenuBehavior.UseCollectionName,
.Group = AssociatedMenuGroup.Details,
.Label = New Label("Bank Accounts", 1033),
.Order = 10000},
.CascadeConfiguration = New CascadeConfiguration() With {
.Assign = CascadeType.Cascade,
.Delete = CascadeType.Cascade,
.Merge = CascadeType.Cascade,
.Reparent = CascadeType.Cascade,
.Share = CascadeType.Cascade,
.Unshare = CascadeType.Cascade},
.ReferencedEntity = Contact.EntityLogicalName,
.ReferencedAttribute = "contactid",
.ReferencingEntity = _customEntityName,
.SchemaName = "new_contact_new_bankaccount"
}
}
_serviceProxy.Execute(req)
See Also
CreateEntityRequest
Use the sample and helper code
Customize entity metadata
Which entities are customizable?
Retrieve, update, and delete entities
Create and update an entity than can be emailed
Create a custom activity entity
Modify the icons for an entity
Modify the messages for an entity
© 2016 Microsoft. All rights reserved. Copyright