Advertisements

Archive

Archive for February, 2012

Using Regular Expression and JScript to validate phone no format

February 27, 2012 Leave a comment

Hi,

I got a requirement to validate a CRM field with “Indian Telephone Number” format (i.e., 040-1234567).

I opted to use regular expression and Jscript for format validation.

Below is the JScript function

function businessPhoneOnChange() {

var telephone = Xrm.Page.data.entity.attributes.get(“telephone1”);

// Regular expression with Indian Telephone format

var regExp= /^[0-9]\d{2,4}-\d{6,8}$/;

if (telephone) {

var phoneNumber = telephone.getValue();

if (phoneNumber.search(regExp) == -1) {

alert(“Invalid Phone number format”);

// Clear the field value

phoneNumber.setValue(“”);

}

}

}

  • Add a webresource with this function to CRM
  • Register “onchange” event of field with the above method
  • Save & Publish

Hope it helps 🙂

Advertisements

Creating OrganizationServiceProxy in CRM2011 custom applications

February 26, 2012 7 comments

Hi,

Below are the steps to instantiate “Organization Service Proxy” which can be used to consume CRM service and perform operations in a  custom application

– Refer “Microsoft.Xrm.Sdk & Microsoft.Xrm.Sdk.Client” .dll’s to your custom application

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Client;

using System.Net.Security;

using System.ServiceModel.Description;

using System.Security.Cryptography.X509Certificates;

private Uri homeRealmUri = null;

private ClientCredentials credentials;

private Uri organizationUri;

private IOrganizationService service;

private OrganizationServiceProxy serviceProxy;

 credentials = new ClientCredentials();

// If CRM On-Premise

// To use custom credentials pass user credentials

credentials.Windows.ClientCredential = new NetworkCredential( {userId},{ password},{ domain} );

// To use Default Credentials; Uncomment below line and comment above

// credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;

// If CRM Online

credentials.UserName.UserName = “Office 365 ID”; // i.e.,  name@domain.onmicrosoft.com

credentials.UserName.Password = “Office 365 Password”;

// Use “https” if CRM is SSL configured

string orgUrl= “http://ServerName/OrganizationName/XRMServices/2011/Organization.svc”;

// Add this line if URL has “https” (i.e.,CRM is SSL configured)

if (!string.IsNullOrEmpty(orgUrl) && orgUrl.Contains(“https”)) {

ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors) { return true; };

}

organizationUri = new Uri(orgUrl);

using (

serviceProxy =

new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null))

{

// To impersonate set the GUID of CRM user here

serviceProxy.CallerId = {GUID of CRM User};

serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());

service = serviceProxy;

}

Hope it helps 🙂

Reading Language Code (LCID) in CRM 2011

February 24, 2012 Leave a comment

Hi,

Here is the JScript to get the LCID (Locale Id) of User & Organization Base Language

 

var currUserLcid = Xrm.Page.context.getUserLcid();

var orgLcid= Xrm.Page.context. getOrgLcid();

 

Below is the MSDN link contains list of LCID (Locale Id’s) of CRM 2011

CRM 2011 LCID Chart

 

Hope it helps 🙂

 

Deleting a record using OData & JQuery in CRM 2011

February 20, 2012 Leave a comment

Hi,

Below is the script to delete record using OData & JScript

 

function deleteRecord(id, odataSetName) {

// Get Server URL

var serverUrl = Xrm.Page.context.getServerUrl();

//The OData end-point

var ODATA_ENDPOINT = “/XRMServices/2011/OrganizationData.svc”;

//Asynchronous AJAX function to Delete a CRM record using OData

$.ajax({

type: “POST”,

contentType: “application/json; charset=utf-8”,

datatype: “json”,

url: serverUrl + ODATA_ENDPOINT + “/” + odataSetName + “(guid'” + id + “‘)”,

beforeSend: function (XMLHttpRequest) {

//Specifying this header ensures that the results will be returned as JSON.

XMLHttpRequest.setRequestHeader(“Accept”, “application/json”);

//Specify the HTTP method DELETE to perform a delete operation.

XMLHttpRequest.setRequestHeader(“X-HTTP-Method”, “DELETE”);

},

success: function (data, textStatus, XmlHttpRequest) {

alert(“Record deleted successfully!!!!”);

},

error: function (XmlHttpRequest, textStatus, errorThrown) {

alert(“Error while deletion – “+errorThrown);

}

});

}

 

How Do I call this method :-

    • To delete a “Account” record  set account id & Odata set name and call the above method

var accountId = {}; //Set Account GUID

var odataSeName = “AccountSet”;

deleteRecord(accountId, odataSeName);

 

Hope it helps 🙂

Sending Email using Email Template in CRM 2011

February 19, 2012 Leave a comment

Hi,

Here is the sample code to send an Email using Email template name.

Before start below are few keywords

  • Template Name   (i.e., Name of the Template)
  • Regarding Id        (i.e., GUID of the entity record which template associated with)
  • Regarding Type   (i.e., Logical name of the entity which template associated with)
  • ActivityParty[]     (i.e., Sender & Receivers Can be Users/Contacts/Accounts/Leads)
  • IOrganizationService crmService

 public void SendEmailUsingTemplate(IOrganizationService crmService,

ActivityParty[] fromParty,  ActivityParty[] toParty,

string templateName,

Guid regardingId, string regardingType)

{

try

{

// Create e-mail message.

var email = new Email

{

To = toParty,

From = fromParty,

DirectionCode = true

};

if (!string.IsNullOrEmpty(templateName))

{

Guid templateId = Guid.Empty;

// Get Template Id by Name

Entity template = GetTemplateByName(crmService, templateName);

if (template != null && template.Id != null)

{

var emailUsingTemplateReq = new SendEmailFromTemplateRequest

{

Target = email.ToEntity<Entity>(),

TemplateId = template.Id,

RegardingId = regardingId,

RegardingType = regardingType

};

var emailUsingTemplateResp = (SendEmailFromTemplateResponse)crmService.Execute(emailUsingTemplateReq);

}

else

{

// “****No email template exists with the given name ****”);

}

}

}

catch (Exception ex)

{

throw;

}

}

     private Entity GetTemplateByName(string title, IOrganizationService crmService)

{

var query = new QueryExpression();

query.EntityName = “template”;

var filter = new FilterExpression();

var condition1 = new ConditionExpression(“title”, ConditionOperator.Equal, new object[] { title });

filter.AddCondition(condition1);

query.Criteria = filter;

EntityCollection allTemplates = crmService.RetrieveMultiple(query);

Entity emailTemplate = null;

if (allTemplates.Entities.Count > 0)            {

emailTemplate = allTemplates.Entities[0];

}

return emailTemplate;

}

How Do I call this method

  • Prepare From and To Users/Contacts/Accounts
  • Pass Service,Template Name,Regarding details

// Prepare “From” activity parties

var from = new ActivityParty

{

PartyId = new EntityReference(SystemUser.EntityLogicalName, {GUID of User})

};

var fromParty = new[] { from };

// Prepare “To” activity parties

var to = new ActivityParty

{

PartyId = new EntityReference(SystemUser.EntityLogicalName, {GUID of User})

};

var toParty = new[] { to };

var orgProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);

IOrganizationService orgnaizationService = orgProxy;

Guid regardingntityId={GUID of record} // Ex – Guid of contact

string regardingEntityName = “contact” // Logical name ‘contact’

SendEmailUsingTemplate(orgnaizationService , fromParty, toParty, “templateName”, regardingntityId, regardingEntityName);

Hope it helps 🙂

Retrieve record using OData and JQuery in CRM 2011

February 12, 2012 11 comments

Hi,

Below is the script to read a record using OData & JQuery

function retrieveRecord(id, odataSetName) {

// Get Server URL

var serverUrl = Xrm.Page.context.getServerUrl();

//The OData end-point

var ODATA_ENDPOINT = “/XRMServices/2011/OrganizationData.svc”;

//Asynchronous AJAX function to Retrieve a CRM record using OData

$.ajax({

type: “GET”,

contentType: “application/json; charset=utf-8”,

datatype: “json”,

url: serverUrl + ODATA_ENDPOINT + “/” + odataSetName + “(guid'” + id + “‘)”,

beforeSend: function (XMLHttpRequest) {

//Specifying this header ensures that the results will be returned as JSON.

XMLHttpRequest.setRequestHeader(“Accept”, “application/json”);

},

success: function (data, textStatus, XmlHttpRequest) {

readRecord(data, textStatus, XmlHttpRequest)

},

error: function (XmlHttpRequest, textStatus, errorThrown) {

alert(“Error – ” + errorThrown)

}

});

}

function readRecord(data, textStatus, XmlHttpRequest) {

alert(“Record read successfully!!”);

var account = data;

alert(“Name – ” + account.d.Name);

alert(“Id – ” + account.d.AccountId);

}

How do I call this method :-

  • Below is the sample function to read Account

var accountId = “”; // Assign account GUID

var odataSetName = “AccountSet”;

retrieveRecord(accountId,odataSetName );

Hope it helps 🙂

Reading the GUID of record from CRM form URL

February 9, 2012 2 comments

Hi,

Below are the steps to get the GUID of record from CRM form URL.

  • In the form ribbon, click on Copy a Link button in the Collaborate group.
Copy Link

Copy Link

  • Paste the URL on notepad.
  • The ‘id’ parameter in the copied URL contains the encoded id value for the record.
  • The brackets in the actual GUID “{” and “}” will be substituted with “%7B” and “%7D”, respectively.
    • (i.e., Guid “{899D4FCF-F4D3-E011-9D26-00155DBA3819}”, comes as id=%7b 899D4FCF-F4D3-E011-9D26-00155DBA3819 %7d)

For example, in the below copied URL

http://mycrm/myOrg/main.aspx?etc=4&id=%7b899D4FCF-F4D3-E011-9D26-00155DBA3819%7d&pagetype=entityrecord.

The GUID is-  899D4FCF-F4D3-E011-9D26-00155DBA3819.

Hope it helps 🙂