using CrmSvcUtil


Use CrmSvcUtil to generate the strongly types entity and datacontext classes

crmsvcutil

/connectionString:"Authentication Type=Integrated; Server=http://servername/orgname"

/out:"Xrm.cs" /namespace:"Xrm.solution"

/dataContextClassName:"xrm"

conntectionString–> specifies the connection string.
out –> determines the name of the .cs or .xml output file and whether there is one file or one per entity.To generate one file per entity omit .cs or .xml from the file name.
namespace –> to specify the namespace
dataContextClassName –> to specify the name of the dataContext class.

Add references to the following dlls in the project

  • System.Data.Entity, System.Data.Services, System.Data.Services.Client.
  • System.Web.Services.
  • Microsoft.Crm.Sdk, Microsoft.Crm.SdkTypeProxy.dll, Microsoft.Crm.SdkTypeProxy.XmlSerializers
  • Microsoft.Xrm.Client, Microsoft.Xrm.Portal, Microsoft.Xrm.Portal.Files

Add the generated Xrm.cs file to the project.

Add the connection string information in the config file of the application

<add name="CRMOnPremise" connectionString="Authentication Type=Integrated; Server=http://servername/orgname" />

Add following using Statements

using Xrm;
using Xrm.solution;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;

And the code for creating a new custom entity record.

            new_test testEntity1 = new new_test();
            testEntity1.new_name = "Nishant";
            testEntity1.new_lastname = "Rana";
            myXrm.AddTonew_tests(testEntity);
            myXrm.SaveChanges();

 

or could also be written as

            // create the instace of DataContext class named xrm
            var myXrm = new xrm("CRMOnPremise");
          
// use concept of Implicitly type local variable 
           
// and object intializer
            var testEntity = new new_test()
            {
                new_name = "Nishant",
                new_lastname = "Rana"
            };
            myXrm.AddTonew_tests(testEntity);
            myXrm.SaveChanges();

 
 

Similarly to update a record and delete a record we need to use

UpdateObject() and DeleteObject() function followed by call to

SaveChanges() method.

Bye.

CrmService in CRM 3.0 and CRM 4.0.


Suppose we have a custom entity named Test

having

Name, First Name and Last Name as varchar field.

And Picklist field called Hobby with default value as Music.

If we are creating a new record for this entity using CrmService from an external application, by only specifying value of First Name field.

It would create the record for us, however the value for Hobby picklist field would be null (it won’t consider the default value set for it)

mf1CRM3

However if we create the same record in CRM 4.0 either by using CrmService’s 3.0 end point or 4.0 end point, in both the cases the value for Hobby field would be set to Music, even though we hadn’t specified any value for it while creating the record.

mf1

CRM 4.0 does take in to account the default value set for the fields. So the records created would have proper default value set for those fields even if no value has been assigned to them, while creating the record.

Bye..

Information on Microsoft Dynamics CRM 2011 (CRM 5.0)


Hi,

Check out this wonderful post

http://www.crmdynamics.net/microsoft-crm-product-information-pricing-faq/

Bye..

Using CRM_URL Report Parameter


Hi,

Just posting a very simple example on how to use the CRM_URL report parameter for drill down.

Create a new report, create a new dataset pointing to ORG_MSCRM database and add the following query string

select opportunityid,name from filteredopportunity.

Add a hidden report parameter named CRM_URL to the report.

Add table to report layout.

g1

Right click the Opportunity ID text field, select Properties, Go to Navigation tab, select Jump to URL

g2

Put the following value over there

= Parameters!CRM_URL.Value
& "?ID={"&Fields!Opportunityid.Value.ToString()&"}&OTC=3"

i.e.

= Parameters!CRM_URL.Value & "?ID={"& GUID &"}&OTC=otc"
or
better use LogicalName parameter instead of OTC as OTC code might we change when we import it to
some other organization.

=Parameters!CRM_URL.Value & "?ID={"&Fields!guidFieldName.Value.ToString()&"}&LogicalName=entitySchemaName"

Upload the report in CRM and run it.

The value for CRM_URL would be filled by CRM.

CRM_URL would have the following value passed to it from CRM

http://servername:%5BPort%5D/orgname/CRMReports/viewer/drillopen.aspx

Clicking on Opportunity ID value would take us to the actual record within CRM.

g3

Bye…

Understanding permissions in Microsoft Dynamics CRM


Hi,

Found this wonderful article on how to set the permissions within Microsoft Dynamics CRM

http://www.orbitone.com/en/blog/archive/2009/10/06/minimum-dynamics-crm-permissions.aspx

Bye..

Changing default filter for Contracts Associated View for Account.


For an account record, the associated view of Contract would have default filter set as Draft. So if we want to change it to some other status for example “Active” we can make use of the following JavaScript for that.

This JavaScript is based on the popular JavaScript code used for hiding “add existing button”

Please check this wonderful article

http://blog.davehawes.com/post/2008/04/23/MSCRM-4-Remove-Add-Existing-xxxxx-button.aspx

The JavaScript code for changing default option

var navElement = document.getElementById('navContracts');
 if (navElement != null) {
  navElement.onclick = function LoadAreaOverride()  {
   loadArea('areaContracts');
   SetDefaultOption(document.getElementById('areaContractsFrame'));
  }
 }

function SetDefaultOption(Iframe) {
 if (Iframe != null ) {
  Iframe.onreadystatechange = function SetOption() {
   if (Iframe.readyState == 'complete') {
    var iFrame = frames[window.event.srcElement.id];
    var selectBox=iFrame.document.getElementById('statecode');
     selectBox.options[2].selected=true;
   }
  }
 }

http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/85615ccd-b8e9-48d3-a906-4fd7b301dac0

Bye..