Use Parature knowledge in Dynamics 365

 

Updated: November 29, 2016

Applies To: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Parature, from Microsoft is a cloud-based customer service solution that provides quick access to consistent and organized information through knowledge management, intelligent self-service, and multi-channel interactions. More information: About Parature

You can improve the productivity of your service agents by helping them quickly find and provide accurate information to the customers by using Parature knowledge within Microsoft Dynamics 365.

If you’re using Dynamics 365 (online), you can choose whether to use native Dynamics 365 knowledge or Parature knowledge as the knowledge source while setting up knowledge base management. Knowledge base management can be set up using the web client only; it can’t be done through SDK. More information: Help & Training: Set up knowledge management in CRM

System_CAPS_noteNote

You can integrate with Parature knowledge only in a Dynamics 365 (online) instance; it’s not available for on-premises Dynamics 365.

After setting up knowledge base management to use Parature, developers can enable or detect knowledge management integration for an entity in Dynamics 365 by using the IsKnowledgeManagementEnabled attribute. You can enable Parature knowledge management for only those entities that can be in a many-to-many entity relationship, which can be determined using the CanBeInManyToMany attribute for the entity.

By default, knowledge management integration is enabled for the Incident entity. The following sample code shows how you can detect and enable knowledge management integration for an entity.



RetrieveEntityRequest entityRequest = new RetrieveEntityRequest
{
    EntityFilters = EntityFilters.All,
    LogicalName = Incident.EntityLogicalName,

    // Retrieve only the currently published changes, ignoring the changes 
    // that have not been published.
    RetrieveAsIfPublished = false
};
RetrieveEntityResponse entityResponse = (RetrieveEntityResponse)_serviceProxy.Execute(entityRequest);

if (entityResponse.EntityMetadata.IsKnowledgeManagementEnabled == true)
{
    Console.WriteLine("Verified that knowledge management is enabled for Incident entity.\n");
    return;
}
else
{
    // Enable knolwledge management for the Incident entity.
    Console.WriteLine("Knowledge management is not enabled for the Incident entity.");
    entityResponse.EntityMetadata.IsKnowledgeManagementEnabled = true;

    // Create an update request.                    
    UpdateEntityRequest updateRequest = new UpdateEntityRequest
    {
        Entity = entityResponse.EntityMetadata
    };
    _serviceProxy.Execute(updateRequest);

    // Publish the entity.
    // All customizations must be published before they can be used.
    PublishAllXmlRequest enableRequest = new PublishAllXmlRequest();
    _serviceProxy.Execute(enableRequest);
    Console.WriteLine("Enabled Knowledge management for the Incident entity.");
}

For the full sample code, see Sample: Create and associate knowledge base record to incident.

When you enable Parature knowledge management for your Dynamics 365 (online) instance, you can add a Knowledge Base Search control to the forms of entities that are enabled for knowledge management integration. You can use the control to show automatic suggestions in search results, define filters for search, and specify the contextual actions that can be done on a knowledge base article. More information: TechNet: Add the Knowledge Base Search control to Microsoft Dynamics CRM forms

The Knowledge Base Search control provides programmability support to automate or enhance the user’s experience when using this control. More information: Knowledge base search control (client-side reference)

You can create and manage Parature knowledge base record metadata using the KnowledgeBaseRecord entity. Some of the information that this entity stores is shown in the following table.

Attribute

Description

KnowledgeBaseRecord.Title

Title of the knowledge base record.

KnowledgeBaseRecord.UniqueID

Unique ID of the linked Parature knowledge based record.

KnowledgeBaseRecord.PrivateUrl

Internal Parature service desk URL of the knowledge base record.

KnowledgeBaseRecord.PublicUrl

Public Parature portal URL of the knowledge base record.

The following sample code demonstrates how you can create a knowledge base record instance.



// Create a knowledge base record instance        
KnowledgeBaseRecord kbRecord = new KnowledgeBaseRecord
{
    // These are sample values. Replace them with
    // appropriate values as per your integrated 
    // Parature  instance.
    PrivateUrl = "http://www.demo.parature.com/internal",
    PublicUrl = "http://www.demo.parature.com",
    Title = "How to track shipping?",
    UniqueId = "8000/8467/Article/23782"
};
_kbRecordId = _serviceProxy.Create(kbRecord);
Console.WriteLine("Created knowledge base record with ID: '{0}'.\n", _kbRecordId.ToString());

For the full sample code, see Sample: Create and associate knowledge base record to incident.

You can programmatically associate a KnowledgeBaseRecord instance with an entity instance using the many-to-many relationship that is automatically created when you enabled Parature integration for the entity. When you associate a KnowledgeBaseRecord instance with an entity instance, a record for the relationship is created in an intersect entity called: msdyn_<Entity_Name>_knowledgebaserecord. For example, when you associate a KnowledgeBaseRecord instance with an Account instance for the first time, an intersect entity called msdyn_account_knowledgebaserecord is created, and a record with the association mapping is created in this intersect entity.

The following sample code demonstrates how to associate a KnowledgeBaseRecord instance with an Incident instance.



// Associate the knowledge base record with an incident record

// Step 1: Create a collection of knowledge base record that will be 
// associated to the incident. In this case, we have only a single
// knowledge base record to be associated.
EntityReferenceCollection relatedEntities = new EntityReferenceCollection();
relatedEntities.Add(new EntityReference(KnowledgeBaseRecord.EntityLogicalName, _kbRecordId));

// Step 2: Create an object that defines the relationship between knowledge base record and incident.
// Use the many-to-many relationship name (KnowledgeBaseRecord_Incident) between knowledge base
// record and incident.
Relationship relationship = new Relationship("KnowledgeBaseRecord_Incident");

// Step 3: Associate the knowledge base record with the incident record.
_serviceProxy.Associate(Incident.EntityLogicalName, _incidentId, relationship,
    relatedEntities);

For the full sample code, including how to disassociate a KnowledgeBaseRecord instance from an Incident instance, see Sample: Create and associate knowledge base record to incident.

The data stored in the KnowledgeBaseRecord and the intersect (in this case, IncidentKnowledgeBaseRecord) entities can be used with tools like Power BI to generate reports about the impact of Parature knowledge base in servicing the customers.

Microsoft Dynamics 365

© 2016 Microsoft. All rights reserved. Copyright

Show: