The Microsoft Dynamics CRM Developer Toolkit


Check out this wonderful tool

http://code.msdn.microsoft.com/E2DevTkt

Bye..

The ConditonOperator.Equal requires 1 value, not 0.


This error is recieved when for ConditionExpression, we would have set

AttributeName, Operator properties but haven’t set Values property.

The below code would result in the ConditonOperator.Equal requires 1 value, not 0 error.

ConditionExpression myCon = new ConditionExpression();
myCon.AttributeName = “createdbyname”;
myCon.Operator = ConditionOperator.Equal;
//line commented for reproducing error
//myCon.Values = new object[] { “username” };

Bye..

Understanding LookUp In CRM


Hi find out this nice post about LookUp by JimWang.

http://jianwang.blogspot.com/2008/05/mysterious-crm-lookup-i.html

Do Check it ..

Bye..

Error 0x80041110 QueryByAttribute must specify a non-empty attribute array in CRM


This error occurs when using the QueryByAttribute class we are not setting the Attributes and Values Property.

 

Just like the below code

 

Say we want to have the names of all the accounts,

 

ColumnSet myCols=new ColumnSet();

            myCols.Attributes=new string[] {“name”};

   QueryByAttribute myQA = new QueryByAttribute();

            myQA.EntityName = EntityName.account.ToString();

            myQA.ColumnSet = myCols ;           

            BusinessEntityCollection myBCColl2= myService.RetrieveMultiple(myQA);

 

However we will get error in this case because we haven’t specified Attributes and Values property. So we need to specify those properties.

 

            myQA.Attributes = new String[] { “statuscode” };

            myQA.Values=new object[] {“1”};

 

Otherwise we could use QueryByExpression class for that

 

            ColumnSet myCols=new ColumnSet();

            myCols.Attributes=new string[] {“name”};

 

            QueryExpression myQE = new QueryExpression();

            myQE.EntityName = EntityName.account.ToString();

            myQE.ColumnSet = myCols;

 

            BusinessEntityCollection myBCColl1 = myService.RetrieveMultiple(myQE);

 

 

Bye ..

Logging off from Oracle\Siebel CRM On Demand Web Service within a .NET application


There are two ways of logging off from an active session within CRM On Demand

 

// pass the url in that case no need to set the header

// only set sessionid           

string logoffUrlString = “servername/Services/Integration;jsessionid=” + SessionID + “?command=logoff”;

HttpWebRequest req = HttpWebRequest)WebRequest.Create(logoffUrlString);         

// make the HTTP call

HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 

 

Or else

 

string logoffUrlString = “servername/Services/Integration?command=logoff”;

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(); 

 

Within Web Services Utilization List of Admin Tab in the CRM On Demand application we can see the login and logout info.

 

That’s it ..

Updating account record using Oracle\Siebel CRM On Demand Web Service in .NET


 

To update the Account record we need to first add web reference to the account.wsdl.

 

Than can make use of AccountUpdate method of Account Entity.

 

  // Login to the CRM server

            string loginUrlString = https://servername/Services/Integration?command=login”;

            // Get the valid Session id to be appended for each subsequent request

            String sessionID = ManageSession.Login(loginUrlString, @”orgname/username”, “password”);

            try

            {

                // Download the account wsdl from the Admin section of the CRM application

                // Add web reference to the wsdl

                // Create the instance of the opportunity entity

                Account myAcc = new Account();

                myAcc.Url = https://secure-ausomxapa.crmondemand.com/Services/Integration;jsessionid=” + sessionID;               

                // Create the instance of Account Data

                AccountData[] myAccData = new AccountData[1];

                myAccData[0] = new AccountData();

                // the order number to be updated

                myAccData[0].stOrder_Number = “orderNumber”;

                // the id of the account to be updated

                myAccData[0].Id = “orderID”;

                // creating ListOfAccountData object

                ListOfAccountData myLstOfAcctData = new ListOfAccountData();

                myLstOfAcctData.Account = myAccData;

                // using AccountUpdate_Input

                AccountUpdate_Input myAccUpdateInput = new AccountUpdate_Input();

                myAccUpdateInput.ListOfAccount = myLstOfAcctData;

                // using account’s Accout Update method to update the record               

                AccountUpdate_Output myAccntUpdateOutput = myAcc.AccountUpdate(myAccUpdateInput);

            }

            catch (SoapException ex)

            {

            }

            catch (Exception ex)

            {

            }

 

 

That’s it …