Dynamics CRM 2013 online - clear Asynchronous plugin system job log
Hi all,
I would like to know whether it is possible to disable the 'System Event' log (under System Jobs) which were generated by the Asynchronous Plugins? Or we need to do housekeeping ourselves? Because there were more than 100 thousand of system
jobs created everyday. Please advise. Thanks.
Gary
Do you have all of your workflows set to delete successful jobs automatically? That will help keep the numbers down. What other kinds of jobs are making logs? If you have your own custom plugins, likely you want them to flag as
"delete on success" as well to keep the log down to errored out jobs.
The postings on this site are solely my own and do not represent or constitute Hitachi Solutions' positions, views, strategies or opinions.
Hi Wayne,
The Delete AsyncOperation if StatusCode = Successful option is not provided in the current version of plugin registration tools. (my version 6.1.0.519)
Similar Messages
-
How to improve performance for bulk data load in Dynamics CRM 2013 Online
Hi all,
We need to bulk update (or create) contacts into Dynamics CRM 2013 online every night due to data updated from another external data source. The data size is around 100,000 and the data loading duration was around 6 hours.
We are already using ExecuteMultiple web services to handle the integration, however, the 6 hours integraton duration is still not acceptable and we are seeking for any advise for further improvement.
Any help is highly appreciated. Many thanks.
GaryI think Andrii's referring to running multiple threads in parallel (see
http://www.mscrmuk.blogspot.co.uk/2012/02/data-migration-performance-to-crm.html - it's a bit dated, but should still be relevant).
Microsoft do have some throttling limits applied in Crm Online, and it is worth contacting them to see if you can get those raised.
100 000 records per night seems a large number. Are all these records new or updated records, or are there some that are unchanged, in which case you could filter them out before uploading ? Or are there useful ways to summarise the data before loading
Microsoft CRM MVP - http://mscrmuk.blogspot.com/ http://www.excitation.co.uk -
Dynamics CRM 2013 : Offline capability with Outlook Plugin
Dear all,
I have a scenario where I have to use the Offline Capability feature of Dynamics CRM 2013 with CRM Client for Outlook plugins.
Can I use the offline capability mode if all my users are using gmail as their email?
If so, can someone guide me please.
Your help would be greatly appreciated.
Many Thanks & regards
VinayYou need to change page size in order to see the on button. try Ctrl+0
Regards Faisal
Thanks Faisal for your reply. I tried Ctrl+0 (zero) but no difference. I think Ctrl+0 is for clearing the zoom in/out effect in web pages. While this tool is a windows (desktop) application.
Please note that I have taken the snap (attached in original post) after maximizing the
Update Assembly dialog (by double clicking the title bar area.
The version of the Plugin Registration Tool is 6.1.1.1143 64bit. If you can check your Plugin Registration Tool version and post the snapshot as well?
blog: http://technologynotesforyou.wordpress.com | skype: ali.net.pk -
Hi,
I am trying to create MS CRM 2013 template project using MS CRM 2013 developer tool kit. When I am trying to connect with MS CRM 2013 online , it is giving me error "407 Proxy Authentication Required".
Actually I am using proxy server for connect with CRM. In my custom application as well as using plugin registration tool I have define below setting in config file for avoid this error
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
But in MS CRM 2013 template project I don't get any option to add config file. So I am unable to add this detail in project.
Can any one help me, how can I avoid this error for MS CRM 2013 developer tool kit project.
Thanks,
---vaibHi,
We can :-)
I will try to find a better forum in the list and move it
Good luck :-)
Ronen Ariely
[Personal Site] [Blog] [Facebook] -
CRM 2013 Online - sending email with CRM Online and jQuery
Hi,
I have a html page in webresource in a CRM 2013 Online form. There is a button to send an e-mail from the html page. Because this is an embedded html, I will not be able to create a plug-in to trigger 'send an e-mail'. The best bet
is to send an e-mail via javascript.
I found an article about 'Sending email with SharePoint and jQuery',
http://geekswithblogs.net/ThorvaldBoe/archive/2014/07/03/sending-email-with-sharepoint-and-jquery.aspx
Is there a similar Jquery way we can send e-mail from CRM 2013 Online? Thanks.Hello,
Actually you can send email through plugin using Actions feature. Recheck my articles about the feature -
http://a33ik.blogspot.com/search/label/Action
In case you anyway want to send your email directly you should recheck following articles:
http://mileyja.blogspot.com/2012/02/create-email-activity-in-microsoft.html
http://mileyja.blogspot.com/2012/02/send-email-synchronously-in-microsoft.html
Dynamics CRM MVP/ Technical Evangelist at
SlickData LLC
My blog -
Dynamic CRM 2013 Online how to execute Report, generate PDF and email
Dear All,
I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
quote form.
I am using the attached code, but facing various issues.
1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
alert("emailid" + emailid.toString());
3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
var Xrm;
if (window.opener) { Xrm = window.opener.Xrm; }
else if (window.parent) { Xrm = window.parent.Xrm; }
function getReportingSession() {
var reportName = "Quotation_Report"; //set this to the report you are trying to download
var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
var recordid = Xrm.Page.data.entity.getId();
// recordid = recordid.substring(1, 37); //getting rid of curly brackets
alert(recordid);
var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
var retrieveEntityReq = new XMLHttpRequest();
retrieveEntityReq.open("POST", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
var ret = new Array();
ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
x = retrieveEntityReq.responseText.indexOf("ControlID=");
ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
return ret;
function createEntity(ent, entName, upd) {
var jsonEntity = JSON.stringify(ent);
var createEntityReq = new XMLHttpRequest();
var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
createEntityReq.setRequestHeader("Accept", "application/json");
createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
createEntityReq.send(jsonEntity);
var newEntity = JSON.parse(createEntityReq.responseText).d;
alert("new entity" + newEntity);
return newEntity;
function createAttachment() {
var params = getReportingSession();
var recordid = Xrm.Page.data.entity.getId();
alert("recordid " + recordid);
var orgName = Xrm.Page.context.getOrgUniqueName();
var userID = Xrm.Page.context.getUserId();
//create email record
// Prepare the SOAP message.
var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
"<soap:Header>" +
"</soap:Header>" +
"<soap:Body>" +
"<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
"<entity xsi:type='email'>" +
"<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
"<subject>" + "Email with Attachment4" + "</subject>" +
"</entity>" +
"</Create>" +
"</soap:Body>" +
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result
var resultXml = xHReq.responseXML;
// alert("resultXml " + resultXml);
// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0) {
alert("ERROR");
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
alert("emailid" + emailid.toString());
//var emailid = userID;
var post = Object();
post.Body = encodePdf(params);
var email = new Array();
email[0] =new Object();
email[0].id = emailid;
email[0].entityType ='email';
post.Subject ="File Attachment";
post.AttachmentNumber = 1;
post.FileName ="Report.pdf";
post.MimeType ="application/pdf";
post.ObjectId = Object();
post.ObjectId.LogicalName ="email";
post.ObjectId.Id = email[0].id;
post.ObjectTypeCode ="email";
alert(post.ObjectId.Id);
createEntity(post,"ActivityMimeAttachment", "");
alert("created successfully");
email.Subject = "Your Order";
//Set The current order as the Regarding object
email.RegardingObjectId = {
Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
//Create Email Activity
SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
// Email Call Back function
function EmailCallBack(result) {
email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
var activityPartyFrom = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyFrom.PartyId = {
Id: customerId, // id of entity you want to associate this activity with.
LogicalName: "contact"
// Set the "activity" of the ActivityParty
activityPartyFrom.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
// Create the from ActivityParty for the email
SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
var activityPartyTo = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyTo.PartyId = {
Id: ownerId, // id of entity you want to associate this activity with.
LogicalName: "systemuser"
// Set the "activity" of the ActivityParty
activityPartyTo.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
// Create the from ActivityParty
SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
//ActivityParty From Callback
function ActivityPartyFromCallBack(result) {
//ActivityParty To Callback
function ActivityPartyToCallBack(result) {
var StringMaker = function () {
this.parts = [];
this.length = 0;
this.append = function (s) {
this.parts.push(s);
this.length += s.length;
this.prepend = function (s) {
this.parts.unshift(s);
this.length += s.length;
this.toString = function () {
return this.parts.join('');
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
var output = new StringMaker();
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
while (i < input.length) {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
else if (isNaN(chr3)) {
enc4 = 64;
output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
return output.toString();
var bdy = new Array();
var bdyLen = 0;
function concat2Bdy(x) {
bdy[bdyLen] = x;
bdyLen++;
function encodePdf(params) {
bdy = new Array();
bdyLen = 0;
var retrieveEntityReq = new XMLHttpRequest();
var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
retrieveEntityReq.open("GET", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.send();
BinaryToArray(retrieveEntityReq.responseBody);
return encode64(bdy);
</SCRIPT>
<SCRIPT type=text/vbscript>
Function BinaryToArray(Binary)
Dim i
ReDim byteArray(LenB(Binary))
For i = 1 To LenB(Binary)
byteArray(i-1) = AscB(MidB(Binary, i, 1))
concat2Bdy(AscB(MidB(Binary, i, 1)))
Next
BinaryToArray = byteArray
End Function
</SCRIPT>
</head>
<body>
<input type="button" onclick="createAttachment();" value="Attach Report" />
</body>
</html>
Thanks. and waiting for your valuable comments.
- MittalHello,
Yes, I was able to make my code working as below. Tested on CRM online 2013.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript">
if (typeof (SDK) == "undefined")
{ SDK = { __namespace: true }; }
SDK.JScriptRESTDataOperations = {
_context: function () {
if (typeof GetGlobalContext != "undefined")
{ return GetGlobalContext(); }
else {
if (typeof Xrm != "undefined") {
return Xrm.Page.context;
else { return new Error("Context is not available."); }
_getServerUrl: function () {
var serverUrl = this._context().getServerUrl()
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
return serverUrl;
_ODataPath: function () {
return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
_errorHandler: function (req) {
return new Error("Error : " +
req.status + ": " +
req.statusText + ": " +
JSON.parse(req.responseText).error.message.value);
_dateReviver: function (key, value) {
var a;
if (typeof value === 'string') {
a = /Date\(([-+]?\d+)\)/.exec(value);
if (a) {
return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
return value;
Create: function (object, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 201) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send(JSON.stringify(object));
Retrieve: function (id, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 200) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
Update: function (id, object, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("X-HTTP-Method", "MERGE");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 204 || this.status == 1223) {
successCallback();
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send(JSON.stringify(object));
Delete: function (id, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("X-HTTP-Method", "DELETE");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 204 || this.status == 1223) {
successCallback();
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
if (filter != null) {
filter = "?" + filter;
else { filter = ""; }
var req = new XMLHttpRequest();
req.open("GET", this._ODataPath() + type + "Set" + filter, true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 200) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
__namespace: true
</script>
<script type="text/javascript">
//Create Email and link it with Order as Regarding field
var Xrm;
var email = new Object();
var ownerID = "";
var CustomerId = "";
if (window.opener) { Xrm = window.opener.Xrm; }
else if (window.parent) { Xrm = window.parent.Xrm; }
//Get ownerid who send email of quotation to customer
function GetOwnerID() {
var owner = Xrm.Page.getAttribute("ownerid").getValue();
ownerID = owner[0].id;
var ownerName = owner[0].name;
var entityType = owner[0].entityType;
GetToEmailGUID();
//Get customerid who receive email of quotation from owner
function GetToEmailGUID() {
var Customer = Xrm.Page.getAttribute('customerid').getValue();
CustomerId = Customer[0].id;
var CustomerName = Customer[0].name;
var entityType = Customer[0].entityType;
//if CustomerId is type of "Account" then get Primary Contact id of that account
if (entityType == "account") {
var contact = Xrm.Page.getAttribute("customerid").getValue();
if (contact === null) return;
var serverUrl = Xrm.Page.context.getClientUrl();
var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
var req = new XMLHttpRequest();
req.open("GET", oDataSelect, false);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
req.onreadystatechange = function () {
if (req.readyState === 4) {
if (req.status === 200) {
var retrieved = JSON.parse(req.responseText).d;
CustomerId = retrieved.PrimaryContactId.Id;
else {
alert(this.statusText);
req.send();
function CreateEmail() {
GetOwnerID();
email.Subject = "Email with Report Attachment";
//Set The current order as the Regarding object
email.RegardingObjectId = {
Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
//Create Email Activity
SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
// Email Call Back function
function EmailCallBack(result) {
email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
var activityPartyFrom = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyFrom.PartyId = {
Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
LogicalName: "contact"
// Set the "activity" of the ActivityParty
activityPartyFrom.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
// Create the from ActivityParty for the email
SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
var activityPartyTo = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyTo.PartyId = {
Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
LogicalName: "systemuser"
// Set the "activity" of the ActivityParty
activityPartyTo.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
// Create the from ActivityParty
SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
//ActivityParty From Callback
function ActivityPartyFromCallBack(result) {
//ActivityParty To Callback
function ActivityPartyToCallBack(result) {
GetReportId('Quotation');
//Create attachment for the created email
function CreateEmailAttachment() {
//get reporting session and use the params to convert a report in PDF
var params = getReportingSession();
//Email attachment parameters
var activitymimeattachment = Object();
activitymimeattachment.ObjectId = Object();
activitymimeattachment.ObjectId.LogicalName = "email";
activitymimeattachment.ObjectId.Id = email.ActivityId;
activitymimeattachment.ObjectTypeCode = "email",
activitymimeattachment.Subject = "File Attachment";
activitymimeattachment.Body = encodePdf(params);
activitymimeattachment.FileName = "Report.pdf";
activitymimeattachment.MimeType = "application/pdf";
//Attachment call
SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
//ActivityMimeAttachment CallBack function
function ActivityMimeAttachmentCallBack(result) {
var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
var width = "800px";
var height = "600px";
window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
// To open window which works in outlook and IE both
//openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
//This method will get the reportId based on a report name that will be used in getReportingSession() function
function GetReportId(reportName) {
var oDataSetName = "ReportSet";
var columns = "ReportId";
var filter = "Name eq '" + reportName + "'";
retrieveMultiple(oDataSetName, columns, filter, onSuccess);
function retrieveMultiple(odataSetName, select, filter, successCallback) {
var serverUrl = Xrm.Page.context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
if (select) {
odataUri += "$select=" + select + "&";
if (filter) {
odataUri += "$filter=" + filter;
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: odataUri,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json");
success: function (data) {
if (successCallback) {
if (data && data.d && data.d.results) {
successCallback(data.d.results);
else if (data && data.d) {
successCallback(data.d);
else {
successCallback(data);
error: function (XmlHttpRequest, errorThrown) {
if (XmlHttpRequest && XmlHttpRequest.responseText) {
alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
function onSuccess(data) {
reportId = data[0].ReportId.replace('{', ").replace('}', ");
CreateEmailAttachment(); // Create Email Attachment
//Gets the report contents
function getReportingSession() {
var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
var retrieveEntityReq = new XMLHttpRequest();
var Id = Xrm.Page.data.entity.getId();
var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
quotationGUID = quotationGUID.replace('}', "");
var reportName = "Quotation"; //set this to the report you are trying to download
var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
var rptPathString = ""; //set this to the CRMF_Filtered parameter
var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
retrieveEntityReq.open("POST", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
//remove the part starting from &p:salesorderid if your report has no parameters
retrieveEntityReq.send(rptPathString);
var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
var ret = new Array();
ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
x = retrieveEntityReq.responseText.indexOf("ControlID=");
ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
return ret;
var bdy = new Array();
var bdyLen = 0;
function concat2Bdy(x) {
bdy[bdyLen] = x;
bdyLen++;
function encodePdf(params) {
bdy = new Array();
bdyLen = 0;
var retrieveEntityReq = new XMLHttpRequest();
var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
"&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
"&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
retrieveEntityReq.open("GET", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.send();
BinaryToArray(retrieveEntityReq.responseBody);
return encode64(bdy);
var StringMaker = function () {
this.parts = [];
this.length = 0;
this.append = function (s) {
this.parts.push(s);
this.length += s.length;
this.prepend = function (s) {
this.parts.unshift(s);
this.length += s.length;
this.toString = function () {
return this.parts.join('');
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
var output = new StringMaker();
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
while (i < input.length) {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
return output.toString();
</script>
<script type="text/vbscript">
Function BinaryToArray(Binary)
Dim i
ReDim byteArray(LenB(Binary))
For i = 1 To LenB(Binary)
byteArray(i-1) = AscB(MidB(Binary, i, 1))
concat2Bdy(AscB(MidB(Binary, i, 1)))
Next
BinaryToArray = byteArray
End Function
</script>
</head>
<body>
<input type="button" onclick="CreateEmail();" value="Attach Report" />
</body>
</html>
Thank you,
Mittal. -
How to show User Auditing data in dashboard/reports in MS CRM 2013 online?
HI,
I am having requirement to show user auditing details like user last logged in date/ session spent time in MS CRM 2013 online.
I did not found any option to query user Auditing data.
I found the Audit summary View but don't know how to use it.
Could any one suggest me how to achieve this.
Thanks
Baji RahamanPlease try this
Public Function Decompress(ByVal arr As Byte()) As Byte()
Dim s As Byte()
Dim notCompressed As Boolean
notCompressed = False
Dim MS As System.IO.MemoryStream
MS = New System.IO.MemoryStream()
MS.Write(arr, 0, arr.Length)
MS.Position = 0
Dim stream As System.IO.Compression.GZipStream
stream = New System.IO.Compression.GZipStream(MS, System.IO.Compression.CompressionMode.Decompress)
Dim temp As System.IO.MemoryStream
temp = New System.IO.MemoryStream()
Dim buffer As Byte() = New Byte(4096) {}
While (True)
Try
Dim read As Integer
read = stream.Read(buffer, 0, buffer.Length)
If (read <= 0) Then
Exit While
Else
temp.Write(buffer, 0, buffer.Length)
End If
Catch ex As Exception
notCompressed = True
Exit While
End Try
End While
If (notCompressed = True) Then
stream.Close()
Return temp.ToArray()
Else
Return temp.ToArray()
End If
End Function
Thanks & Regards Manoj -
Connect To Microsoft Dynamics CRM 2011 Online From Windows Azure Hosted Website
Hi
I have hosted a asp.net website on Windows Azure and trying to connect to Microsoft Dynamics CRM 2011 Online. But I am getting below error:
The data protection operation was unsuccessful. This may have been caused by not having the user profile loaded for the current thread's user context, which may be the case when the thread is impersonating.
Error Source = at System.Security.Cryptography.ProtectedData.Protect(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope scope)
at Microsoft.Crm.Services.Utility.DeviceUserName.Encrypt(String value) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 869
at Microsoft.Crm.Services.Utility.DeviceUserName.UpdateCredentials(String encryptedValue, String decryptedValue) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 840
at Microsoft.Crm.Services.Utility.DeviceUserName.set_DecryptedPassword(String value) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 796
at Microsoft.Crm.Services.Utility.DeviceIdManager.GenerateDeviceUserName() in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 390
at Microsoft.Crm.Services.Utility.DeviceIdManager.RegisterDevice(Guid applicationId, Uri issuerUri, String deviceName, String devicePassword) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 185
at Microsoft.Crm.Services.Utility.DeviceIdManager.LoadOrRegisterDevice(Uri issuerUri, String deviceName, String devicePassword) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 109
at Microsoft.Crm.Services.Utility.DeviceIdManager.LoadOrRegisterDevice(Uri issuerUri) in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 92
at Microsoft.Crm.Services.Utility.DeviceIdManager.LoadOrRegisterDevice() in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\DeviceidManager.cs:line 70
at ServerConnection.ConnectToCRM() in c:\DWASFiles\sites\mfs\VirtualDirectory0\site\wwwroot\App_Code\CrmService.cs:line 56
Can someone help me on this?
Thanks ChandrabhanuHi
DeviceidManager.cs was causing the problem. I used simple codes and it worked.
string CrmConnection crmConnection = CrmConnection.Parse("Url=" + crmserver + "; Username=" + username + "; Password=" + password + ";");
OrganizationService serviceProxy = new OrganizationService(crmConnection);
Thanks Chandrabhanu -
Outgoing emails on CRM 2013 Online
I've set up two outgoing server profiles. One for GMAIL and one for Exchange Online. I am currently using trials of both.
I set the mailboxes of queues to use the correct profiles and to use server-side sync or email router for both incoming and outgoing.
For both accounts (one using Exchange profile other using GMAIL), the mailbox tests succeed. The queues also pull in emails. Bot for both, emails I send just sit in Pending Send saying the msg has not yet been submitted for delivery.
Is there a limitation for trial instances with regard to outgoing email?Using Gmail with Microsoft Dynamics CRM 2013
Link: https://www.youtube.com/watch?v=uH3H-vfauZU -
Dynamic Hyperlink in SSRS 2008 for CRM 2013 online
Hi All,
I have a report which displays contact name and contactid from contact table
I need a link to the contact name which open the CRM record
Is this possible ?
Any suggestion most appreciated
Thanks
Pradnya07Hi
i been using this url for help
http://h30507.www3.hp.com/t5/Applications-Services-Blog/Microsoft-Dynamics-CRM-2013-SSRS-drill-down-reports-Part-II/ba-p/149943
but it didnt worked i get the below error
Any help much appreciated
Thanks
Pradnya07 -
Windows 10 and Dynamics CRM 2013 Outlook Client - Identity Foundation missing
How can I install/activate the Identity Foundation in Windows 10.
In Control Panel\All Control Panel Items\Programs and Features the feature is missing.
Dynamics CRM 2013 (and 2011) Outlook Client does need the Identity Foundation:
Error is "Could not load file or assembly 'Microsoft.Identity.Model, Version=3.5.0.0 ...
icomedias Austria - GermanyI've had the same problem with the CRM 2011 Plug-in.. It is not possible to install the Windows Identity Framework onto Windows 10 since it was not included as an option in the "Features" menu.
Also - I found this forum entry discussing that exact problem (with no answer, so far):
Windows Identity Foundation not working with Technical Preview
EDIT: Fixed link. Inside of the linked discussion thread, I see this:
"From Windows 8.1 Features Screen:
WIF 3.5 has been superseded by WIF classes that are provided as part of .NET 4.5. It is recommended that you use .NET 4.5 for supporting claims-based identity in your applications.
so i guess they removed it completely in Windows TP" -
Does JQuery DataTable work for CRM 2013 online?
Hi,
In CRM 2013 online, I am embedding a html WebResource to display a JQuery DataTable object in Account form. The JQuery DataTable queries an external database thru its restful API. Somehow, the DataTable does not display data in
Account form. My first question is: does JQuery DataTable work with CRM online?Hi, Polat-
Thanks for your relay. I am using JQuery DataTable ajax object to fill the html table. It does not get data from service API. It always goes to the error block. What went wrong? Thanks.
var oData = null;
// Perform a synchronous oData retrieve
$(document).ready(function() {
$('#example').dataTable( {
"ajax": {
"type": "POST",
"url": oDataSelect,
"data": oData,
"beforeSend": function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept",
"application/json");
// generate base 64 string from username
+ password
XMLHttpRequest.setRequestHeader("Authorization",
"Basic " + Base64.encode("xxxxxxxxxxx"));
"success": function (oData, textStatus, XmlHttpRequest)
alert('OData Select Succeeded:
' + oDataSelect);
"error": function (XmlHttpRequest, textStatus, errorThrown)
alert('OData Select Failed: ' +
oDataSelect);
"columns": [
{ "title": "Name" },
{ "title": "Position" },
{ "title": "Office" },
{ "title": "Extn." },
{ "title": "Start date" },
{ "title": "Salary" } -
MS Dynamics CRM 2013 install via GPO
Good Morning,
I need to rollout MS Dynamics CRM 2013 to all 180 of my users. I would like to do this via GPO but I only have the .exe install files and no .msi files. I have adhered to the following -
http://technet.microsoft.com/en-us/library/hh699775.aspx
I have followed the steps under the section Create the CRMCLient_bitversion.msi file
but I am not achieving any administrative installation files. For example I have a network share setup as follows -
\\server\crm_files\test
I have mapped a network folder via command prompt using the net use command to map the Z: drive to
\\server\crm_files. As per the instructions I have run the following command -
CRM2013-Client-ENU-i386.exe /a /q /targetdir \\server\crm_files\test
When I run this command I am prompted to click Run or Cancel so I click Run. After 2-3 seconds I then get a dialog box showing the different switches that I can run with the only other option being to close the box. After closing the box I look in my
test folder and it is empty.
Should there be something in the test folder? Have I run the wrong command string?
EDIT: Please note that I only have the installation/.exe file for CRM 2013. The article on the link I posted earlier mentions an XML file that is included with the installation files. I do not have this XML file.
Jeet SHi,
Have you checked this article?
Install Microsoft Dynamics CRM for Outlook using a command prompt
==============
CRM2013-Client-ENU-i386.exe /a /q /targetdir \\server\crm_files\test
The command here is not in the right way, we need first to extract files from the
CRM2013-Client-ENU-i386.exe, under the folder we will find the
SetupClient.exe and the mentioned XML files.
Run this command to extract the file:
CRM2013-Client-ENU-i386.exe /extract
Then use the command below to create an MSI file:
Setupclient /Q /A /targetdir "\\share\mscrm_client_admin"
Besides, for Microsoft Dynamics CRM 2013 deployment, we'd better ask in the forum below:
Microsoft Dynamics CRM Forum
http://community.dynamics.com/crm/f/117.aspx?pi49901=0
Best regards
Michael Shao
TechNet Community Support -
If incorrect forum, just alert and move. I am having an issue with hosted Microsoft Dynamics 2013 and Google Chrome latest release, 31. This just started with the hosted version of Dynamics CRM 2013, Chrome had been working correctly with
our earlier version of CRM.
When users on latest version of Chrome, 31, login to Dynamics CRM 2013, everything looks fine. Issue is specifically, for sales folks, when they open a client record, and where the client info is located, there is a standard date and time and tiny
little calendar you can pull up if you click on it. When the user clicks on the tiny little calendar, they DO get a pop up, but the pop up is blank. And, there is no error message at all. Nothing freezes, nothing bad happens at all, except
for the salesperson, who live and die by their calendars and ability to schedule appointments and see exiting appointments.
This is not some in house coding issue. It is a generic CRM phone call record that has this issue.
Again, no errors, nothing crashes, but Dynamics CRM 2013 is useless to Google Chrome users in house because of this. Which, in a support position, is terrible. Users who got an upgrade, have their favorite interface rendered useless. And these
are sales folks. And, I did all settings according to what I was able to find for CRM 2010 and Chrome, for when pop ups do not work, and all settings were already correct for pop ups, website is in trusted sites, etc, which is what I expected, since
everything worked on CRM 2010.
Any clues or ideas? Thank You.
RickWe don't know. Better to ask over here.
https://community.dynamics.com/crm/f/117.aspx
Regards, Dave Patrick ....
Microsoft Certified Professional
Microsoft MVP [Windows]
Disclaimer: This posting is provided "AS IS" with no warranties or guarantees , and confers no rights. -
CRM 2013 online - deploy a 2015 solution package to crm 2013
Hi,
We have staging online CRM upgraded to 2015 already, however, the prod CRM still stays in version 2013 during this transition time. We developed some functions in staging CRM, such as new attributes, web resources, workflows, etc, and packaged
them into a solution. When we imported the solution to production(2013), we had the error saying '...invalid XML in package...'. Is there any way to fix it? Thanks.Hello,
So if I have got it right, you want to export your solution from CRM 2015 to CRM 2013 which is your production. Unfortunately you cant do this as any solution exported from a newer version of Microsoft Dynamics CRM (which is crm 2015 in your case)
cannot be imported into an older version of Microsoft Dynamics CRM (which is CRM 2013 in your case).
You can also refer the following link for more information:-
https://msdn.microsoft.com/en-us/library/gg328109.aspx?f=255&MSPPError=-2147217396
Regards, Abhishek Bakshi If you find this post helpful then please Vote as Helpful and Mark As Answer. Check my blog on https://mydynamicscrmblog.wordpress.com/
Maybe you are looking for
-
How can i rearrange pages in a pdf?
I have a subscription for CreatePDF. IS there a way i can rearrange pages in a pdf?
-
How to Use ADF Region With Data Bound Controls in JDeveloper 10g
I want to use Data Bound ADF Components in Region. Is there any way to acheive this. I want to get Employee Information from a View Object and display it in a region and use this region on different pages.
-
Hi - I am required to customize an EDI interface, here's what I need to do.. While triggering DELVRY03 Idoc from delivery doc, I need to go to couple of z-tables(X-references) and pick required data (corresponding values) and insert it in Idoc by ove
-
hi everyone, i am planning to prepare for the new mountain lion and want to clear install it. but i have a problem is how can i backup my iphoto with all the places and faces i had set. (with a thousands of photoes, i dont want to identify the faces
-
Amount has been deducted from my account
Hello Team, I am trying to create a new account with iTunes, and I haved entered my debit card details. Amount has been deducted from my account without any reason. Please let me know why iTunes department deducted my amount from my account.