› Dynamics 365, Enterprise › Create Attachment of Signature/ Pen control data in Dynamics CRM

Create Attachment of Signature/ Pen control data in Dynamics CRM

 Somesh Siripuram   Leave a comment

Introduction

We already saw how to use Pen/ Signature control in Dynamics CRM in the previous blog: http://www.cloudfronts.com/adding-signature-control-mobile-tablets-dynamics-crm/

In this blog, we will see how to generate an image of the pen control data and store in Record as an attachment.

Steps

  • As we saw in the previous blog, the signature captured from phone is stored as a multi-line text field in Dynamics CRM record. And we cannot see the signature image in web browser.

Now it will be a common scenario where the Users will need to see the Signature image in browser as well. This is how data is captured on Web browser.

  • We need to write custom code which will:
    • Read this data
    • Convert the data to an image
    • Store the converted image as an attachment in the CRM record
  • For this I, have written a generic plugin which will do the above actions.
  • You can see the core plugin code with comments below. I have also added the plugin to Github for reference: Github Link
//// The plugin is registered on the Post Update on "Customer Approval" field on Opportunity.

Entity entity = (Entity)context.InputParameters["Target"];

  //// The field which stores the data for Signature

  string signatureFieldName = "new_customerapproval";

  if (entity.Contains(signatureFieldName))
  {
      string encodedData = entity.GetAttributeValue<string>(signatureFieldName);
                 
      //// Remove the additional Metadata from the text generated.
      int startIndex = encodedData.IndexOf("base64,") + 7;
      encodedData = encodedData.Substring(startIndex, encodedData.Length - startIndex);
      tracer.Trace(encodedData);

      string contentType = "image/png";
      Entity Annotation = new Entity("annotation");
      Annotation.Attributes["objectid"] = new EntityReference(entity.LogicalName, entity.Id);
      Annotation.Attributes["objecttypecode"] = entity.LogicalName;
      Annotation.Attributes["subject"] = "Customer Signature"; //// You can have any subject as required.
      Annotation.Attributes["documentbody"] = encodedData;
      Annotation.Attributes["mimetype"] = contentType;
      Annotation.Attributes["notetext"] = "Customer Signature Attached"; //// Again, add any note text as needed
      Annotation.Attributes["filename"] = "Customer Approval Signature.png"; //// OR Any name as required

      Guid annotation = service.Create(Annotation);
 }
  • This plugin should be registered on update of the Signature control field. In this case, it is “Customer Approval”. It is preferable to have the step run asynchronously.
  • We can now see the attachment on the record.

 

If you have any issues or need more information, please post in the comments section below.


Liked it? Share it.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.