Quantcast
Channel: CRM Development forum
Viewing all articles
Browse latest Browse all 9244

Creating Email Activity + ActivityMimeAttachment with oData in Offline mode - Help !

$
0
0

Hi guys,

I wrote some javascript code that creates an email activity with a PDF attachment. It's functional from the CRM web client (On-Premise) and using the Outlook client when I'm in online mode, but when I go OFFLINE I get the following error "The activitymimeattachment with id xxxxxxx Does Not Exist".

I make 2 ajax calls, the first to create the Email Activity (which returns the newly created ActivityId) which I then send to my second Ajax call to create the ActivityMimeAttachment and associate it with the activity. As I said, when I'm online, it's all fine, and if I look at the ajax responses in the screenshots attached, the one that fails is looking for a ActivityMimeAttachmentId = "13F85C43-2E26-E311-96FB-005056C00008" which doesn't exist in the ActivityMimeAttachment Table. The attachment does get saved but with an id of "15F85C43-2E26-E311-96FB-005056C00008" (the SECOND number in the guid is different). If I look at the JSON response for the successfull call (when online), the value of activitymimeattachmentId is correct. 

This is driving me NUTS ! Is there a difference between the oData service on the CRM server and service that is running on the local pc ?

I've also included a snippet of my code.

var ODATA_ActivityMimeAttachmentCollection = "/ActivityMimeAttachmentSet";
var ODATA_EmailCollection = "/EmailSet";	

var RegardingEntity = new Object();
RegardingEntity.LogicalName = "contact";
RegardingEntity.Id = customerid[0].id; 

var objEmail = new Object();

objEmail.RegardingObjectId = RegardingEntity;
objEmail.Subject = "Contract email";

var jsonEntity = window.JSON.stringify(objEmail);

//* Create an email record *//
$.ajax({
	
	async : true,
	type: "POST",
	contentType: "application/json; charset=utf-8",
	datatype: "json",
	url: serverUrl + ODATA_ENDPOINT + ODATA_EmailCollection,
	data: jsonEntity,
	beforeSend: function (XMLHttpRequest) {
		XMLHttpRequest.setRequestHeader("Accept", "application/json");
	},
	success : function (data) {
		//** Create the email attachment **//
		emailId = data.d.ActivityId;
		if (emailId) {
			var refEntity = new Object();
			refEntity.LogicalName = "email";
			refEntity.Id = emailId;
			//refEntity.Name = "Subject";
			var objAnnotation = new Object();
			//objAnnotation.ObjectTypeCode = "email";
			objAnnotation.Subject = "PDF Contract Document";
			objAnnotation.ActivityId = refEntity
			//objAnnotation.ObjectId = refEntity;
			objAnnotation.MimeType= "application/pdf";
			objAnnotation.Body = binaryFileToString();
			objAnnotation.FileName = "Signed_Contract.pdf";
			//Parse the entity object into JSON 
			var jsonEntity2 = window.JSON.stringify(objAnnotation);
			//AJAX function to Create a CRM record using OData 
			$.ajax({
				async : true,
				type: "POST",
				contentType: "application/json; charset=utf-8",
				datatype: "json",
				url: serverUrl + ODATA_ENDPOINT + ODATA_ActivityMimeAttachmentCollection,
				data: jsonEntity2,
				beforeSend: function (XMLHttpRequest) {
					XMLHttpRequest.setRequestHeader("Accept", "application/json");
				}
			});
		}							
	},


Viewing all articles
Browse latest Browse all 9244

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>