cancel
Showing results for 
Search instead for 
Did you mean: 
rampprakash

Move Notes and Attachments from One Entity to another

Implementation Steps:

 

Consider when ever I Qualify a Lead to Contact, I need to Move the Respective Lead(Notes/Attachment) from Lead to Contact.

 

Let's see how can we do that.

 

Create a Plugin 

 

 

string getNotes = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
  <entity name='annotation'>
    <all-attributes />
    <order attribute='subject' descending='false' />
    <link-entity name='lead' from='leadid' to='objectid' link-type='inner' alias='aa'>
      <filter type='and'>
        <condition attribute='leadid' operator='eq' value='{objectid}' />
      </filter>
    </link-entity>
  </entity>
</fetch>";

                getNotes = getNotes.Replace("{objectid}", "LEADGUID");
                EntityCollection collectNotes = service.RetrieveMultiple(new FetchExpression(getNotes));

                foreach (var loopColelctNotes in collectNotes.Entities)
                {
                    Entity _annotation = new Entity("annotation");
                    _annotation.Attributes["objectid"] = new EntityReference("contact", getContactDetails.Id);
                    _annotation.Attributes["objecttypecode"] = "contact";
                    if (loopColelctNotes.Attributes.Contains("subject"))
                    {
                        _annotation.Attributes["subject"] = loopColelctNotes.Attributes["subject"];
                    }

                    if (loopColelctNotes.Attributes.Contains("documentbody"))
                    {
                        _annotation.Attributes["documentbody"] = loopColelctNotes.Attributes["documentbody"];
                    }

                    if (loopColelctNotes.Attributes.Contains("mimetype"))
                    {
                        _annotation.Attributes["mimetype"] = loopColelctNotes.Attributes["mimetype"];
                    }

                    if (loopColelctNotes.Attributes.Contains("notetext"))
                    {
                        _annotation.Attributes["notetext"] = loopColelctNotes.Attributes["notetext"];
                    }

                    if (loopColelctNotes.Attributes.Contains("filename"))
                    {
                        _annotation.Attributes["filename"] = loopColelctNotes.Attributes["filename"];
                    }

                    service.Create(_annotation);

                }

 

 

Trigger the above code on Create of an Entity in Async Operation.