File Attachment to Notes – Dynamics CRM 4.0
In Dynamics CRM 4.0, file attachment to entities is pretty simple as compared to CRM 3.0. UploadFromBase64DataAnnotationRequest and UploadFromBase64DataAnnotationResponse object are both deprecated. Instead a new attribute has been introduces in annotation object with documentbody that accepts string in base64 encoding. Please find the below sample:
Reading file data into Byte array and then converting it to base64. Since I am using in memory object of StringBuilder class so I have just used str.ToString() to return string.
Byte[] data;
ASCIIEncoding encode = new ASCIIEncoding();
data = encode.GetBytes(str.ToString());
string b64 = Convert.ToBase64String(data);
Next, simply create the annotation entity and set the attributes as below:
annotation note = new annotation();
note.subject = “Test Export”;
note.filename = “exported.txt”;
note.mimetype = “text/html”;
note.documentbody = b64;
note.objectid = new Lookup();
note.objectid.type = “new_export”;
note.objectid.Value = entityid;
note.objecttypecode = new EntityNameReference();
note.objecttypecode.Value = “new_export”;
Guid annotationId = service.Create(note);
Leave a Reply Cancel reply

Blog Stats
- 253,207 hits
Archives
Recent Comments
- Newsarama on Call Scripting in Microsoft CRM 2011 – Workflows Reborn
- charter net email on Call Scripting in Microsoft CRM 2011 – Workflows Reborn
- Mary Jersey on Setting Default View for Account Activities???
- Immigration Advice Rochester on Solutions & Release Management – CRM 2011
- wine labels on File Attachment to Notes – Dynamics CRM 4.0
- Krystal on About
- fast n Furious 6 on JavaScript Libraries in Microsoft Dynamics CRM 2011
- richard on Synchronous Matchcode Generation – Duplicate Detection in Dynamics CRM 4
- visit the site on Problem with Import Customization in Internet Explorer 7.0
- Donna on Solutions & Release Management – CRM 2011
- cars.com careers on Enabling Development Errors – Tip for Developers
- Amber on JavaScript Libraries in Microsoft Dynamics CRM 2011
- Julian P on Solutions & Release Management – CRM 2011
- http://thomasgal.ireallylikefood.com/772668478/why-watch-how-i-met-your-mother-season/ on JavaScript Libraries in Microsoft Dynamics CRM 2011
- Fast N Furious 6 on JavaScript Libraries in Microsoft Dynamics CRM 2011
MSCRM Team Blog
- RELEASE: ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management
- Dynamics CRM 2011 IG Update V5.9 May 2013
- Using Power View in Excel 2013 to Analyze CRM Data
- Creating and Publishing a Web Portal to an Azure Cloud Service
- How to build and run the Dynamics CRM SDK samples on Windows Server 2012 and Windows 8
Hi, I want to create CRM workflow which updates the case follow up date based on priority. I
f priority is high –> follow up date would be 24 hrs (1 day) after the case create date.
If priority is normal –> follow up date would be 72 hrs (1 day) after the case create date
Now the problem is that CRM includes (or counts) the weekends (Saturday/Sundays) while calculating the days after 3 days. I want to exclude these non business days to be counted in workflow.
Is there any ways we can avoid saturdays/sundays while dynamically setting date values in CRM 4.0 workflow? Any idea??
Thanks
Regards,
Mayank
Hi
This is regarding notes entity.
Consider a scenario: I have user level access on Company and user level at notes. If another user comes and add a note into my company record.Then logically i should not be allow to update/delete that record. But i can do so.
Logically speaking it should not happen. Hence the access level permission for notes and attachement are either delete every thing or none.. kindly give me suggestion.
Hi,
Have you any example code of attaching a .PDF , .xlsx or .DOC(X) files as attachments to Email? I have got the .txt files to work but I am having difficulty getting the others to work.
Thanks,
Have you changed the mimetype. you need to be very carefull in specifying mimetype.
note.mimetype = “text/html”;
I have tried application/msword , application/pdf . For the word doc I see the text but a lot of untranslated chars as well. PDF file just says not enough data to show image. I think it must be something to do with the streamreader and encoding code ?
I have to send email with attachment created for specific Case. How I can do it?
Also, how I can save the path of the original attachment before it added to Annotation Table?
I want to attach a word document to notes, if i use the above method the formatting of document is lost.
Is there any way so that i can attach the document alongwith formating.
Hi Wahid,
you need to set the approperiate mime type for file to be attached. YOu can set the mime type to “application/msword” for Microsoft word documents. You can give a try!
Hi Ayaz,
Do you know if it’s possible to have a rich text format on Note section? Can we create our own field type and assign the new type to any entity?
Thanks in advance.
Hi Jaka,
Its not possible out of the box.
Thanks. But do you know anyone (or ISV) that have developed this stuff? Do you think it’s even possible?
Thanks.
Its very much possible using unsupported ways. People have developed custom controls for CRM. just google.
Just thinking how can you achieve this. You can even introduce your own tab on the form as Notes and then add iframe and aspx page to enter/read text using rich text box. when submit simply add this text as note to the entity using CRM sdk. So there are endless possibilities. But if you are desinging a complex solution or vertical, i recommend to use supported ways as upgrade will cost a lot in case of unsupported customization.
Another issue…
I have attatched an xlsx document in CRM 4.0, and it has been created in tabel: annotation.
Now i would like to make use of this annotation in my code. Need to access a sheet within this file and use the data to update other entities i CRM.
I have retrievde the annotation by the objectid.
and decoded the content of documentbody (a string) using Convert.FromBase64String, and have now a byte-array.
My question is what to do next, in order to re-create the xlsx file in-memory ?
Any suggestions ?
You need to look at OpenXML that mcirosoft use to play with office 2007 file. Also look at
http://ayazahmad.wordpress.com/2007/08/23/generate-excel-2007-sheets-from-mscrm-data-%e2%80%93-openxml-show/
It may help you.
Hi,
I working on small project of integrating with CRM.Basically just creating a Letter activity with doc attachment to Note. Your example will definitely help me. Just wondering if you a complete example. Also I have been struggling with setting Owner for the activity object.
Please help me, I am very newbie to CRM customisation.
Regards,
Ismail Mogal
Thank you for your article!
Hi,
I want to get the file associated with a note in CRM 3.0.
I know how to get the note, the file name, but not the file contents.
How do I do this?
Use following code to upload file to an annotation.
//#1
FileInfo pointer = new FileInfo( “c:/test.pdf”);
FileStream fileStream = pointer.OpenRead();
byte[] byteData = new byte[(int)fileStream.Length];
fileStream.Read(byteData, 0, (int)fileStream.Length);
string encodedData = System.Convert.ToBase64String(byteData);
//#2
fileStream.Flush();
fileStream.Close();
//#3
UploadFromBase64DataAnnotationRequest upload =
new UploadFromBase64DataAnnotationRequest();
upload.AnnotationId = newNoteID;
upload.FileName = “test.pdf”;
//#4
upload.MimeType = “application/pdf”;
//#5
upload.Base64Data = encodedData;
//#6
UploadFromBase64DataAnnotationResponse uploaded =
(UploadFromBase64DataAnnotationResponse)myCRMService.Execute(upload);
Hello,
I am looking for a way to take information from a field on the Lead form and on the OnSave event, create a note and then clear out the field. I see the code above, but I am not sure what to exclude to that is only for the file attachment.
Thanks!
Eddi Rae
Hi Eddi,
Above code is for file attachements. But in your scenario, you need to write a plugin/workflow to perform this operation.
For any further assistance, you can email me at ayaz.ahmad@hotmail.com.
Best Regards,
Ayaz
Hi ayaz
I’m new crm programmer.I want to add a picture into the entity What can i do?
I dont understand what I am supposed to do with this.
Do I create an entity and then create attributes like the ones listed below?
annotation note = new annotation();
note.subject = “Test Export”;
note.filename = “exported.txt”;
note.mimetype = “text/html”;
note.documentbody = b64;
note.objectid = new Lookup();
note.objectid.type = “new_export”;
note.objectid.Value = entityid;
note.objecttypecode = new EntityNameReference();
note.objecttypecode.Value = “new_export”;
Guid annotationId = service.Create(note);
Where do I actually add code on the onload event for the form and what code. Sorry this post makes no sense to me I am not a CRM programmer by any means but I know how to create and customize entities.
This is C# code and you need to write it in Plugin or even you can write it in custom workflow activities.
Excellent job on this write-up! I truly like how you presented your facts and how you created it interesting and easy to comprehend. Thank you.
I need a similar implementation of this in .net 4.0 crm 2011 on-premise. I,ve trie the above code but i got lot of errors.
This blogger has plagiarized your article and is claiming your work as his own:
http://nikhilkumardas.wordpress.com/2012/09/07/ms-crm-4-0-file-attachment-to-notes/comment-page-1/#comment-58
Byte[] data;
ASCIIEncoding encode = new ASCIIEncoding();
data = encode.GetBytes(str.ToString());
string b64 = Convert.ToBase64String(data);
You don’t have to encode attachment. Just use attachment.body:
newAnnotation.documentbody = attahment.body;
newAnnotation.filesize = attahment.filesize;
newAnnotation.mimetype = attahment.mimetype;
My brother recommended I may like this web site. He was totally right.
This publish actually made my day. You can not consider just how so
much time I had spent for this info! Thanks!