Hi,
I need to change auto save of CRM dynamics to NO in system setting using C# code
i need help any please help me
Thank you
Hi,
I need to change auto save of CRM dynamics to NO in system setting using C# code
i need help any please help me
Thank you
Hi,
I am trying to get the look up value from the parent record, based on the look up value I have to set the child record's fields.
The retrieve query works for text data from parent record, but gives bad request error when I try to get the parent record's look up field value.
In this example, it works fine if I just include $expand=new_FundRaiser($select=fullname)
but not when I add lookup_divisionid, any obvious error you can see?
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/new_fundraisings(46AA6C06-3652-E911-811A-005056919B9D)?$select=new_cardnameholder1&$expand=new_FundRaiser($select=fullname,lookup_divisionid)", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var result = JSON.parse(this.response);
var new_cardnameholder1 = result["new_cardnameholder1"];
if (result.hasOwnProperty("new_FundRaiser")) {
var new_FundRaiser_fullname = result["new_FundRaiser"]["fullname"];
var new_FundRaiser_upbeat_divisionid = result["new_FundRaiser"]["lookup_divisionid"];
}
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
Hello,
I have a problem on the dynamics' crm portal:
If a customer open a ticket and want to communicate with us, he have use the "add a comment" section.
The problem is, if a client write a comment too long it takes too much space on the page.
So I am trying to find an option to collapse/develop comments.
I managed to reduce the number of comments displayed per page but I do not find how to reduce the place taken by comment.
Would you know if an option exists to display part of the comment and display more via a button or other way, or would you know a scripts that allow me to implement this feature?
Hi Guys,
I have a problem and i got to know from my developer that we can only have one save button in CRM entity form. Below is my application concept where i need a wizard or multi-steps forms with ability to "go to previous step" and "Save+validate and go to next Step" and user can also go back and forth to any left tab/step navigation.
i would really appreciate help and solution to achieve this. I need pure Microsoft dynamics CRM solution as i have some security limitations to use third party solution.
Thank you
Hi,
Hello All Experts,
I need to do folder level tracking POC and to do that i need to do server side synchronization.
I am able to select server side synchronization for my emailbox, but i need to do approve email and test the mailbox.
But to Approve email i need to have Global Admin Role and it's mandatory as suggested by Microsoft.
But as we know Global Admin is the highest Role in o365.
I need to know what are pros and cons when Global Admin Role is assigned to me.
from internal of the CRM and outside of the CRM.
I have a field on a form which as -- as default on the screen. When saving the form the field gets the data from a related entity thanks to a workflow.
However, when saving the record one dash (-) remains next to the value copied from other record
Is it possible to upload a web resource (html, js, css++) using C# and CrmServiceClient from Microsoft.Xrm.Tooling.Connector library?
Usually I go thru Solution -> Web Resource and add them there. But is another way? We have an Angular app that is running inside Dynamics. The JS files can be bundled and minified, but there are several assets like images, fonts and so on that needs to be added (very) manually.
Hi,
I have a trial account in dynamics 365. no customization made.
1. I have created a new quote.
2. Added 'Name' , 'Price List' and 'Potential Customer' (Opportunity left blank as its not a mandatory).
3. Saved
4. When try to 'Add New Quote Line'
I am not able to select any 'Exiting Product' or 'Unit' record.
As we have number of Product in the Product list.
'
We have Dynamics365 v8.2.3 and I'd like to compare the emails received in a mailbox in O365 vs on CRM (server-side sync).
In the advanced find, can see the To Recipients which contains the addresses in the "To" field on the email card. But where is the CC column?
On SQL, In the Activitypointerbase Table, I can see the ToRecipients column only as well. So, when searching emails, those that were cc'd do not appear.
Hi all,
I searched for "Exam MB5-705 Managing Microsoft Dynamics Implementations" and the Microsoft site www.microsoft.com/.../exam-mb5-705.aspx inform "This exam has been retired".
Could anyone tell about the new/updated version for "Managing Microsoft Dynamics Implementations" (Sure Step) methodology, please ?
Thank in advance.
Hi,
I have created a custom entity as Design Brief, In Design Brief i have 2 types of forms one for Quote and another for the Order.
So When i click on add button of Design Brief from quote, it will load quote type forms. And Same for the Order.
The design brief is 1:N relationship between Quote & Order.
Let me know, if there is any way to set form as default from respective entities.
Thanks,
Ashish
Hi all,
When creating emails and templates there is an option to include a Dynamic URL that references a record. In the past we used this in notification emails letting sales reps know they had a new lead, with a link that let them open that lead in CRM.
However, in D365 the app will open in the classic Web interface if its still enabled. In our current instance, it's further complicated in that different groups use different apps with customized forms, and it would be very useful to be able to change the URL to open a specific app depending on a value in the lead.
Does anyone know if modifying the Dynamic URL is possible, or of a way to open a particular app depending on the value of a field?
Thanks
Has anyone else noticed this silent change?
https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/api-limits
It is causing our production website that uses CRM as a backend all sorts of issues, as we now regularly get 100s of errors stating:
"Number of requests exceeded the limit of 6000 over time window of 300 seconds."
Note we regularly have 100s of users sending requests to and from CRM every minute, surely this is not beyond the scope of the product?
We have had a case open with Microsoft for weeks, and the tech guys seem perplexed that our application would ever exceed this number, and refuse to increase the limit nor provide a solution. Does Microsoft seriously think 6000 requests every 5 minutes is excessive? They clearly aren't intending CRM to have a market for enterprise scalable applications.
If this is the new hard limit we are going to have to migrate away from Dynamics CRM as a backend for our website which will be a nightmare!
Hi,
I have found details in a 2013 bing blog on an HTML web resource that can be placed within a custom entity and will allow you to place a marker on the map and then use this maps location to back fill location fields on the form.
I can get the map onto the form, but it will not complete the back filling of location information.
My guess given the age of the post is that the code employed is now out of date...however I have virtually no experience with this so am clueless on where to start making changes to get it to work with latest online version of CRM.
HTML template (minus bing key):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/.../xhtml1-transitional.dtd">
<html>
<head>
<title>Address and Location Utility</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
body {
font-family: Verdana;
font-size: 10px;
width: 100%;
height: 100%;
position: absolute;
left: 0px;
top: 0px;
margin-left: -1px;
margin-top: -1px;
}
#controls
{
position:absolute;
top:50px;
left:10px;
min-width:170px;
min-height:270px;
background-color:#faf7f5;
z-index:10000;
vertical-align:middle;
font-size:11px;
border: 3px #BDBDBD solid;
padding: 5px;
}
.input
{
margin-top: 3px;
margin-bottom: 3px;
display:block;
clear: both;
}
.pinDetail {
display:block;
clear: both;
font-size:11px;
}
.button {
margin-bottom: 15px;
}
</style>
<script type="text/javascript" src="ecn.dev.virtualearth.net/.../mapcontrol.ashx;amp;s=1"></script>
<!-- We include JQuery from the Microsoft Ajax CDN to assist with our 'Updated' forms attribute values access -->
<script type="text/javascript" src="ajax.aspnetcdn.com/.../jquery-2.0.2.min.js"></script>
<script type="text/javascript">
// Global variables:
var map = null;
var pushpin;
var infobox = null;
var revgeoPushpin = null;
var crmFormType;
// Initiate map:
function GetMap() {
map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {
credentials: "REMOVED",
zoom: 3, center: new Microsoft.Maps.Location(40.347, -94.218),
mapTypeId: Microsoft.Maps.MapTypeId.birdseye
});
// extend pushpin class to hold geocoding data:
Microsoft.Maps.Pushpin.prototype.geoname = null;
Microsoft.Maps.Pushpin.prototype.geoentitytype = null;
Microsoft.Maps.Pushpin.prototype.geoaddress = null;
Microsoft.Maps.Pushpin.prototype.geoconfidence = null;
Microsoft.Maps.Pushpin.prototype.geomatchcodes = null;
Microsoft.Maps.Pushpin.prototype.geocalculationmethod = null;
Microsoft.Maps.Pushpin.prototype.geopindragged = null;
Microsoft.Maps.Pushpin.prototype.geoaddressrevgeo = null;
// Get CRM Form Type, to choose behavior based on
// Updated or Classic forms:
crmFormType = parent.Xrm.Page.ui.getFormType();
}
// pushpin drag handler flags the pushpin as having been dragged
function dragHandler(e) {
hideInfoBox();
e.entity.geopindragged = true;
}
// Take user-entered coordinates, and add pushpin in that location:
function showLatLon() {
// Clear existing entities:
map.entities.clear();
// get user input coordinates
var lat = document.getElementById("txtLat").value;
var lon = document.getElementById("txtLon").value;
// Validate coordinates
if (isLatLonValid(lat, lon) === false) {
alert('Please enter valid WGS84 decimal values for Latitude and Longitude.');
return false;
}
// Display location with pushpin:
var latlonLocation = new Microsoft.Maps.Location(lat, lon);
map.setView({ zoom: 12, center: latlonLocation });
var pushpin = createPushpin(latlonLocation, "1");
pushpin.geoname = "Manually Entered Location";
// Add pushpin to map, and open infobox:
map.entities.push(pushpin);
showInfoBox(pushpin);
}
// Validate if numeric
function isNumber(input) {
return ((input.length > 0) && ((input - 0) == input));
}
// Validate lat/long pair:
function isLatLonValid(lat, long) {
if ((lat == '') || (isNumber(lat) == false) || (lat > 90) || (lat < -90)) {
return false;
}
if ((long == '') || (isNumber(long) == false) || (long > 180) || (long < -180)) {
return false;
}
return true;
}
// clear map and retrieve credentials for REST Locations request:
function geocodeAddress() {
map.entities.clear();
map.getCredentials(callGeocodeService);
}
// call geocoding service with user-entered location details:
function callGeocodeService(credentials) {
var searchRequest = 'dev.virtualearth.net/.../Locations' +
document.getElementById("txtWhere").value +
'?output=json&jsonp=geocodeServiceCallback&key=' + credentials;
var mapscript = document.createElement('script');
mapscript.type = 'text/javascript';
mapscript.src = searchRequest;
document.getElementById('mapDiv').appendChild(mapscript);
}
// call reverse-geocoding service with current pushpin location:
function callReverseGeocodeService(credentials) {
// Get pushpin location:
var pinLocation = revgeoPushpin.getLocation();
var searchRequest = 'dev.virtualearth.net/.../Locations' + pinLocation.latitude + "," + pinLocation.longitude + '?output=json&jsonp=revgeoServiceCallback&key=' + credentials;
var mapscript = document.createElement('script');
mapscript.type = 'text/javascript';
mapscript.src = searchRequest;
document.getElementById('mapDiv').appendChild(mapscript);
}
// Callback for REST Locations request:
function revgeoServiceCallback(result) {
if (result &&
result.resourceSets &&
result.resourceSets.length > 0 &&
result.resourceSets[0].resources &&
result.resourceSets[0].resources.length > 0) {
// Take only first result:
var revgeoResult = result.resourceSets[0].resources[0];
var location = new Microsoft.Maps.Location(revgeoResult.point.coordinates[0], revgeoResult.point.coordinates[1]);
// get calculation method:
var calculationMethod = getCalcMethod(revgeoResult);
// Add geocoding metadata to appropriate pin:
revgeoPushpin.geoname = revgeoResult.name;
revgeoPushpin.geoentitytype = revgeoResult.entityType;
revgeoPushpin.geoaddress = revgeoResult.address;
revgeoPushpin.geoconfidence = revgeoResult.confidence;
revgeoPushpin.geomatchcodes = revgeoResult.matchCodes;
revgeoPushpin.geocalculationmethod = calculationMethod;
revgeoPushpin.geoaddressrevgeo = true;
// Open infobox for revgeo pin:
showInfoBox(revgeoPushpin);
}
else {
if (result && result.errorDetails) {
alert("Message :" + response.errorDetails[0]);
}
alert("No results for the query");
}
}
// Callback for REST Locations request:
function geocodeServiceCallback(result) {
if (result &&
result.resourceSets &&
result.resourceSets.length > 0 &&
result.resourceSets[0].resources &&
result.resourceSets[0].resources.length > 0) {
var results = result.resourceSets[0].resources;
var locationArray = new Array();
for (var j = 0; j < results.length; j++) {
var location = new Microsoft.Maps.Location(results[j].point.coordinates[0],
results[j].point.coordinates[1]);
var pushpin = createPushpin(location, (j + 1).toString());
// get calculation method:
var calculationMethod = getCalcMethod(results[j]);
// Add geocoding metadata to pin:
pushpin.geoname = results[j].name;
pushpin.geoentitytype = results[j].entityType;
pushpin.geoaddress = results[j].address;
pushpin.geoconfidence = results[j].confidence;
pushpin.geomatchcodes = results[j].matchCodes;
pushpin.geocalculationmethod = calculationMethod;
pushpin.geopindragged = false;
pushpin.geoaddressrevgeo = false;
// Add pin to map:
map.entities.push(pushpin);
// Add location to array for map auto-scaling:
locationArray.push(location);
}
// Set view depending on whether result is unique or not:
if (results.length == 1) {
var bbox = results[0].bbox;
var viewBoundaries = Microsoft.Maps.LocationRect.fromCorners(new Microsoft.Maps.Location(bbox[0], bbox[1]),
new Microsoft.Maps.Location(bbox[2], bbox[3]));
map.setView({ bounds: viewBoundaries });
} else {
// Show a best view for all locations
var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(locationArray);
map.setView({ bounds: viewBoundaries, padding: 75 });
}
// Open infobox for top result:
showInfoBox(map.entities.get(0));
}
else {
if (result && result.errorDetails) {
alert("Message :" + response.errorDetails[0]);
}
alert("No results for the query");
}
}
// obtain calculation method from a location result:
function getCalcMethod(result) {
// Identify the calculation method for our display point:
var calculationMethod = "";
if (result.geocodePoints && result.geocodePoints.length != null) {
// loop through to find the calculation method for the geocodePoint of type 'Display':
for (var k = 0; k < result.geocodePoints.length; k++) {
if (result.geocodePoints[k].usageTypes.toString().match(/Display/)) {
calculationMethod = result.geocodePoints[k].calculationMethod;
}
}
}
return calculationMethod;
}
// Create pushpin with appropriate options and event handlers:
function createPushpin(location, label) {
var pushpin = new Microsoft.Maps.Pushpin(location, { draggable: true, text: label });
var pushpinclick = Microsoft.Maps.Events.addHandler(pushpin, 'click', pinClickHandler);
var pushpindragend = Microsoft.Maps.Events.addHandler(pushpin, 'drag', dragHandler);
return pushpin;
}
// hide any existing info boxes:
function hideInfoBox() {
//Hide existing infoboxes
try {
infobox.setOptions({ visible: false });
}
catch (err) {
}
}
// Show infobox for a specific pushpin:
function showInfoBox(pushpin) {
//Hide other infoboxes
hideInfoBox();
// Get pushpin location:
var pinLocation = pushpin.getLocation();
// Create the info box content for the pushpin
var description = "<div class='pinContent' style='border=1'>";
if (pushpin.geoentitytype != null) { description += "<div class='pinDetail'><b>Entity type:</b> " + pushpin.geoentitytype + "</div>" };
if (pushpin.geoconfidence != null) { description += "<div class='pinDetail'><b>Confidence:</b> " + pushpin.geoconfidence + "</div>" };
if (pushpin.geomatchcodes != null) { description += "<div class='pinDetail'><b>Match Codes:</b> " + pushpin.geomatchcodes + "</div>" };
if (pushpin.geocalculationmethod != null) { description += "<div class='pinDetail'><b>Calculation Method:</b> " + pushpin.geocalculationmethod + "</div>" };
description += "<div class='pinDetail'><b>Lat:</b> " + pinLocation.latitude + "</div>";
description += "<div class='pinDetail'><b>Lon:</b> " + pinLocation.longitude + "</div>";
if (pushpin.geoaddressrevgeo == true) { description += "<div class='pinDetail'><b style='color:red'>Alert: Address from RevGeo</b></div>" };
if (pushpin.geopindragged == true) { description += "<div class='pinDetail'><b style='color:red'>Alert: Pin Dragged</b></div>" };
description += "</div>";
// Determine infobox height based on specific pieces of content:
var infoboxHeight = 180;
infoboxHeight += (Math.max(0, (Math.ceil(pushpin.geoname.length / 25) - 1))) * 18;
if (pushpin.geopindragged) infoboxHeight += 15;
if (pushpin.geoaddressrevgeo) infoboxHeight += 15;
infobox = new Microsoft.Maps.Infobox(pinLocation, { title: pushpin.geoname, description: description, offset: new Microsoft.Maps.Point(7, 25), visible: true, zIndex: 1000, height: infoboxHeight });
infobox.setOptions({
actions: [
{
label: "Zoom",
eventHandler: function (mouseEvent) {
// Zoom to pin location:
map.setView({ zoom: 17, center: pinLocation });
}
},
{
label: "Reverse Geocode",
eventHandler: function (mouseEvent) {
// initiate reverse geocode:
revgeoPushpin = pushpin;
map.getCredentials(callReverseGeocodeService);
}
},
{
label: "Populate Form",
eventHandler: function (mouseEvent) {
// Geocoding metadata will be available as properties of pushpin object
// If using 'Classic Forms' (not the Read-Only forms of type 11):
if (crmFormType != 11) {
var controls = parent.Xrm.Page.ui.controls;
controls.get("address1_latitude").getAttribute().setValue(pinLocation.latitude ? pinLocation.latitude : "");
controls.get("address1_longitude").getAttribute().setValue(pinLocation.longitude ? pinLocation.longitude : "");
controls.get("address1_line1").getAttribute().setValue(pushpin.geoaddress.addressLine ? pushpin.geoaddress.addressLine : "");
controls.get("address1_city").getAttribute().setValue(pushpin.geoaddress.locality ? pushpin.geoaddress.locality : "");
controls.get("address1_stateorprovince").getAttribute().setValue(pushpin.geoaddress.adminDistrict ? pushpin.geoaddress.adminDistrict : "");
controls.get("address1_postalcode").getAttribute().setValue(pushpin.geoaddress.postalCode ? pushpin.geoaddress.postalCode : "");
controls.get("address1_country").getAttribute().setValue(pushpin.geoaddress.countryRegion ? pushpin.geoaddress.countryRegion : "");
} else {
// Use workaround to populate address properties in Updated Process forms:
// TO-DO: revisit after Orion release:
prepAttribute('address1_line1');
prepAttribute('address1_city');
prepAttribute('address1_stateorprovince');
prepAttribute('address1_postalcode');
prepAttribute('address1_country');
prepAttribute('address1_latitude');
prepAttribute('address1_longitude');
setFormValue('address1_line1', (pushpin.geoaddress.addressLine ? pushpin.geoaddress.addressLine : ""));
setFormValue('address1_city', (pushpin.geoaddress.locality ? pushpin.geoaddress.locality : ""));
setFormValue('address1_stateorprovince', (pushpin.geoaddress.adminDistrict ? pushpin.geoaddress.adminDistrict : ""));
setFormValue('address1_postalcode', (pushpin.geoaddress.postalCode ? pushpin.geoaddress.postalCode : ""));
setFormValue('address1_country', (pushpin.geoaddress.countryRegion ? pushpin.geoaddress.countryRegion : ""));
setFormValue('address1_latitude', (pinLocation.latitude ? pinLocation.latitude : ""));
setFormValue('address1_longitude', (pinLocation.longitude ? pinLocation.longitude : ""));
}
}
}
]
});
map.entities.push(infobox);
}
// obtain clicked pushpin, and open infobox:
function pinClickHandler(e) {
if (e.targetType = "pushpin") {
//Hide other infoboxes
hideInfoBox();
// open infobox for target pushpin:
showInfoBox(e.target);
}
}
// Click on attribute controls in Polaris-style, "Updated" forms:
// TO-DO: Review this methodology after Orion release
function prepAttribute(attribute) {
var winParent = (parent == null) ? document.defaultView : window.parent;
if (winParent != null) {
var attrDivs = $(winParent.window.document).find("div[data-attributename='" + attribute + "']");
$(attrDivs).each(function () {
$(this).children().each(function () {
if ($(this).prop("tagName") == "DIV") {
winParent.window.Mscrm.Utilities.click($(this));
}
});
});
} else {
alert("An error occurred on prepare");
}
};
// Update attributes in Polaris-style, "Updated" forms:
// TO-DO: Review this methodology after Orion release
function setFormValue(attribute, value) {
var winParent = (parent == null)? document.defaultView: window.parent;
if (winParent != null) {
var attrDivs = $(winParent.window.document).find("div[data-attributename='" + attribute + "']");
$(attrDivs).each(function () {
$(this).children().each(function () {
if ($(this).prop("tagName") == "DIV") {
winParent.window.Mscrm.Utilities.click($(this));
var txt = $(this).find("[attrname='" + attribute + "']");
if (txt.length > 0)
$(txt).val(value);
}
});
});
} else {
alert("An error occurred on update");
}
};
</script>
</head>
<body onload="GetMap();">
<div id='mapDiv' style="position:absolute; width:100%; height:100%;"></div>
<div id="controls">
<div class="input"><h2>Geocode Tools</h2></div>
<div class="input"><b>Geocode Address:</b></div>
<div class="input"><input id="txtWhere" type="text" size="20" /></div>
<div class="input"><input id="GeocodeButton" type="button" value="Go" onclick="geocodeAddress()" class="button" /></div>
<div class="input"><b>Show location:</b></div>
<div class="input"><i>Latitude:</i></div>
<div class="input"><input id="txtLat" type="text" size="20" /></div>
<div class="input"><i>Longitude:</i></div>
<div class="input"><input id="txtLon" type="text" size="20" /></div>
<div class="input"><input id="LatLonButton" type="button" value="Go" onclick="showLatLon()" class="button" /></div>
</div>
</body>
</html>
Hello All,
I have a user here that is being asked to sign into CRM every morning in the Chrome browser. I have cleared her browser cache, history, and all passwords. I have also clicked "yes" on the keep me signed in prompt that comes after signing into CRM. Although that option helped for a day or so she is still having to sign in every morning. She is the only user that I am aware of that is having this issue. Everyone else is remaining signed in indefinitely. We are using the cloud based Dynamics 365 for sales.
Any insight would be greatly appreciated.
Thanks,
Megan
Is there a way during the phone to case conversion to have it also copy the description field to the description field of case. Currently it does not.
I just started learning CRM development, when I read the documentation, one terminology "Messages" is confused me.
For example, below link:
https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/org-service/use-messages
From my understanding, it should use "Events" instead of using "Messages", because actually, the "Messages" word used in Organization Service pipe line, it really is all Events triggered. So I have to remember it in heart it meant events or methods in here. Because, really, they are the action events or action methods, and Messages is a noun and misunderstanding here.
Can anybody have any insight why CRM uses "Messages" and not using "Events" or "Methods" in this context?
Thanks
i have currency fields in the entity which gets updated from the integration.
From the application i am getting the value $59.75, but it is showing up in crm as $60. i want to stop this and i want the exact value in that currency field.
How to do it?