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..

Sample code for Inserting a lead record from a .NET application : Oracle CRM On Demand


First download the wsdl file for the lead record from Oracle CRM On Demand web application.

Add web references to it within a .NET windows application.

Use the following code for inserting the lead record.

We need to specify value for all the required field for the record to get inserted.

        String loginUrlString = "https://secure-ausomxapa.crmondemand.com/Services/Integration?command=login";
        String logoffUrlString ="https://secure-ausomxapa.crmondemand.com/Services/Integration?command=logoff";
        String siebelUserName = "username/password";
        String siebelPassword ="password";
        String opportunityUrl = "https://secure-ausomxapa.crmondemand.com/Services/Integration;jsessionid=";
        String sessionID = "";
      
        Private void Form1_Load(Object sender, EventArgs e)
        {            
            // Get the session from the helper Class ManageSession
             sessionID = ManageSession.Login(loginUrlString, siebelUserName, siebelPassword);

            //Create the New lead record instandce And Set its url With proper session id
             Lead myLead = New Lead();
             myLead.Url = "https://secure-ausomxapa.crmondemand.com/Services/Integration;jsessionid=" + sessionID;

            // create arrary Of lead record To be inserted
             LeadData[] myLeadData = New LeadData[1];
             myLeadData[0] = New LeadData();
             myLeadData[0].LeadFirstName = "Nishant";
             myLeadData[0].LeadLastName = "Rana";
             myLeadData[0].Source = "Email";
             myLeadData[0].dLead_Generation_Date = Convert.ToDateTime("7/30/2010");
             myLeadData[0].LeadOwner = "Nishant Rana";
             myLeadData[0].dLead_Generation_dateSpecified = True;             

            // add lead data array To listofLeadData Class
             ListOfLeadData myLstLeadData = New ListOfLeadData();
             myLstLeadData.Lead = myLeadData;

            // create an instance Of leadinsert_input Class
            LeadInsert_Input myLeadRecordInput = New LeadInsert_Input();
            myLeadRecordInput.ListOfLead = myLstLeadData;
            LeadInsert_Output myLeadRecordOutput = myLead.LeadInsert(myLeadRecordInput);    
        }

 

 

The sample code for the ManageSession.cs class

 class ManageSession
    {
        public static string SessionID = "";
        public static String Login(String loginUrlString, String userName, String password)
        {
            try
            {
                // create a http request and set the headers for authentication
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(loginUrlString);
                HttpWebResponse myResponse;
                myRequest.Method = "POST";
                // passing username and password in the http header 
                // username format if it includes slash should be the forward slash /
                myRequest.Headers["UserName"] = userName;
                myRequest.Headers["Password"] = password;
                myResponse = (HttpWebResponse)myRequest.GetResponse();
                Stream sr = myResponse.GetResponseStream();
                // retrieve session id
                char[] sep = { ‘;’ };
                String[] headers = myResponse.Headers["Set-Cookie"].Split(sep);
                for (int i = 0; i <= headers.Length – 1; i++)
                {
                    if (headers[i].StartsWith("JSESSIONID"))
                    {
                        sep[0] = ‘=’;
                        SessionID = headers[i].Split(sep)[1];
                        break;
                    }
                }
                sr.Close();
                myResponse.Close();
            }
            catch (WebException webException)
            {
                return webException.Message;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            // send back the session id that should be passed to subsequent calls 
            // to webservices 
            return SessionID;
        }

        public static String Logoff(String logoffUrlString, string SessionID)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(logoffUrlString);          
            // set the session id in header
            req.Headers["JSESSIONID"] = SessionID;
            // make the HTTP call
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            return resp.StatusCode.ToString();

        }
    }

 

Hope it helps !

Bye..

Updating a Picklist Attribute from within a Plugin


Hi,

Just a sample code for updating a picklist attribute for an entity instance.

  public void  Execute(IPluginExecutionContext context)
{
DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties["Target"];
if (entity.Name == "new_test")
{
// Post Create event so get the guid from Output Parameters
Guid testId = (Guid)context.OutputParameters.Properties["id"];

ICrmService crmService = context.CreateCrmService(true);
DynamicEntity myTest = new DynamicEntity();
myTest.Name = "EntityName";

// Set the key property
KeyProperty myTestGuid = new KeyProperty();
myTestGuid.Name = "EntityPrimaryKeyID";
Key myTestKey=new Key();
myTestKey.Value = testId;
myTestGuid.Value = myTestKey;
myTest.Properties.Add(myTestGuid);

// Picklist property to be updated
PicklistProperty myPP = new PicklistProperty();
myPP.Name = "new_picklist";
myPP.Value = new Picklist();
myPP.Value.name = "nameOfThePicklistValue";
// picklist value
myPP.Value.Value = 2;
myTest.Properties.Add(myPP);
try
{
    crmService.Update(myTest);
}
catch (SoapException ex)
{

    TextWriter log1 = TextWriter.Synchronized(File.AppendText(@"C:\g.txt"));
    log1.WriteLine("MyMessage exception :-" + ex.Detail.InnerXml );
    log1.Close();
}
}
}
}

 

 

Bye…