Custom activities

Applies to Dynamics 365 for Customer Engagement apps version 9.x

In Dynamics 365 for Customer Engagement, you can create custom activities to support the communication needs of a business such as instant messaging (IM) and Short Message Service (SMS). To create a custom activity in Customer Engagement, create a custom entity, and specify it as an activity entity using the EntityMetadata.IsActivity property.

However, unlike other custom entities, you can’t specify a primary attribute for a custom activity because, by default, each custom activity must have a primary attribute named ”Subject”.

When you create a custom activity entity, all the properties and privileges of the activitypointer entity are inherited for the custom activity. Further, all the activity party types become available for the custom activity, and as a result the corresponding properties are also inherited.

You can create 1-to-Many (1:N) relationships for a custom activity just like any other activity, and also update the existing relationships.

Privileges and access rights

You require the same set of Customer Engagement privileges and access rights to work with custom activities as those required to work with custom entities. For more information about custom entities, see Customize Entity Metadata.

Creating a custom activity

To create a custom activity entity, set the values of the properties listed in the following table.

Property name Value Notes
EntityMetadata.IsActivity true Specify the custom entity as an activity entity.
EntityMetadata.IsAvailableOffline true A custom activity entity must have offline availability.
EntityMetadata.IsMailMergeEnabled false A custom activity entity cannot have mail merge enabled.
EntityMetadata.OwnershipType OwnershipTypes. TeamOwned
or
OwnershipTypes. UserOwned
A custom activity entity can be either team-owned or user-owned.
EntityMetadata.ActivityTypeMask 0 - None
or
1 – Communication Activity
(Optional) Specify whether a custom activity should appear in the activity menus in the web application.

- Specify 0 (None) to hide it from appearing in the activity menus. The custom activity will appear in the associated grids of only those entities with which it is associated (has relationship).
- Specify 1 (Communication Activity) to make it appear in the activity menus.

If you do not specify this property, the custom activity is created with the default property value: 1. That is, the custom activity is available in the activity menus. Moreover, ActivityTypeMask can be set at the activity creation time only, and once set, cannot be modified.
CreateEntityRequest.HasActivities false A custom activity entity must not have a relationship with activities.
CreateEntityRequest.HasNotes true A custom activity entity must have a relationship to notes.
CreateEntityRequest. PrimaryAttribute SchemaName is “Subject”. The schema name of the PrimaryAttribute for all activities must be “Subject”.

Example

The following sample shows how you can create a custom activity.



String prefix = "new_";

String customEntityName = prefix + "instantmessage";

// Create the custom activity entity.
CreateEntityRequest request = new CreateEntityRequest
{
    HasNotes = true,
    HasActivities = false,
    PrimaryAttribute = new StringAttributeMetadata
    {
        SchemaName = "Subject",
        RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
        MaxLength = 100,
        DisplayName = new Label("Subject", 1033)
    },
    Entity = new EntityMetadata
    {
        IsActivity = true,
        SchemaName = customEntityName,
        DisplayName = new Label("Instant Message", 1033),
        DisplayCollectionName = new Label("Instant Messages", 1033),
        OwnershipType = OwnershipTypes.UserOwned,
        IsAvailableOffline = true,

    }
};

_serviceProxy.Execute(request);

//Entity must be published

See also

Activity Entities
ActivityPointer (activity) entity
Sample: Create a Custom Activity
Sample: Create and Update Entity Metadata