Friday, 13 April 2012

Code to Qualify a Lead in CRM 2011

In this article , I am explaining how to Qualify a lead as Account,contact or Opportunity
Creating Leads Record
    var lead1 = new Lead
    {
        CompanyName = "ITSoft",
        FirstName = "NAvish",
        LastName = "JAin",
        Subject = "Sample Lead 1"
     };
     Guid _lead1Id = _serviceProxy.Create(lead1);

     var lead2 = new Lead
     {
       CompanyName = "ITSoft Works",
       FirstName = "Sheenam",
       LastName = "Jain",
       Subject = "Sample Lead 2"
     };
     Guid _lead2Id = _serviceProxy.Create(lead2);
Code to Qualify Lead as Account and Contact
     var qualifyIntoAccountContactReq = new QualifyLeadRequest
     {
         CreateAccount = true,
         CreateContact = true,
         LeadId = new EntityReference(Lead.EntityLogicalName, _lead1Id),
         Status = new OptionSetValue((int)lead_statuscode.Qualified)
     };
     var qualifyIntoAccountContactRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoAccountContactReq);
     foreach (var entity in qualifyIntoAccountContactRes.CreatedEntities)
     {
        if (entity.LogicalName == Account.EntityLogicalName)
        {
            Guid _leadAccountId = entity.Id;
        }
        else if (entity.LogicalName == Contact.EntityLogicalName)
        {
            Guid _contactId = entity.Id;
        }
     }
Retrieve the organization’s base currency ID for setting the transaction currency of the opportunity.
     var query = new QueryExpression("organization");
     query.ColumnSet = new ColumnSet("basecurrencyid");
     var result = _serviceProxy.RetrieveMultiple(query);
     var currencyId = (EntityReference)result.Entities[0]["basecurrencyid"];
Code to Qualify Lead as Opportunity
     // Create an account to relate the opportunity to.
     var account = new Account
     {
       Name = "ITSoft Solutions",
       Address1_StateOrProvince = "Chandigarh"
     };
     Guid _accountId = (_serviceProxy.Create(account));
     // Qualify the second lead, creating an opportunity from it. We use an existing account for the
     // opportunity customer instead.
     var qualifyIntoOpportunityReq = new QualifyLeadRequest
     {
       CreateOpportunity = true,
       OpportunityCurrencyId = currencyId,
       OpportunityCustomerId = new EntityReference(
                        Account.EntityLogicalName,
                        _accountId),
       Status = new OptionSetValue((int)lead_statuscode.Qualified),
       LeadId = new EntityReference(Lead.EntityLogicalName, _lead2Id)
     };
     var qualifyIntoOpportunityRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoOpportunityReq);

     foreach (var entity in qualifyIntoOpportunityRes.CreatedEntities)
     {
        if (entity.LogicalName == Opportunity.EntityLogicalName)
        {
           Guid _opportunityId = entity.Id;
        }
      }
Complete code to qualify lead to Account,Contact and Opportunity
using (OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(
                serverConfig.OrganizationUri,
                serverConfig.HomeRealmUri,
                serverConfig.Credentials,
                serverConfig.DeviceCredentials))
{
     _serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(
                    new ProxyTypesBehavior());

     // Create two leads.
     var lead1 = new Lead
     {
        CompanyName = "ITSoft",
        FirstName = "NAvish",
        LastName = "JAin",
        Subject = "Sample Lead 1"
     };
     Guid _lead1Id = _serviceProxy.Create(lead1);

     var lead2 = new Lead
     {
       CompanyName = "ITSoft Works",
       FirstName = "Sheenam",
       LastName = "Jain",
       Subject = "Sample Lead 2"
     };
     Guid _lead2Id = _serviceProxy.Create(lead2);

     // Qualify the first lead, creating an account and a contact from it
     var qualifyIntoAccountContactReq = new QualifyLeadRequest
     {
         CreateAccount = true,
         CreateContact = true,
         LeadId = new EntityReference(Lead.EntityLogicalName, _lead1Id),
         Status = new OptionSetValue((int)lead_statuscode.Qualified)
     };
     var qualifyIntoAccountContactRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoAccountContactReq);
     foreach (var entity in qualifyIntoAccountContactRes.CreatedEntities)
     {
        if (entity.LogicalName == Account.EntityLogicalName)
        {
            Guid _leadAccountId = entity.Id;
        }
        else if (entity.LogicalName == Contact.EntityLogicalName)
        {
            Guid _contactId = entity.Id;
        }
     }

     // Retrieve the organization's base currency ID for setting the
     // transaction currency of the opportunity.
     var query = new QueryExpression("organization");
     query.ColumnSet = new ColumnSet("basecurrencyid");
     var result = _serviceProxy.RetrieveMultiple(query);
     var currencyId = (EntityReference)result.Entities[0]["basecurrencyid"];

     // Create an account to relate the opportunity to.
     var account = new Account
     {
       Name = "ITSoft Solutions",
       Address1_StateOrProvince = "Chandigarh"
     };
     Guid _accountId = (_serviceProxy.Create(account));
     // Qualify the second lead, creating an opportunity from it. We use an existing account for the
     // opportunity customer instead.
     var qualifyIntoOpportunityReq = new QualifyLeadRequest
     {
       CreateOpportunity = true,
       OpportunityCurrencyId = currencyId,
       OpportunityCustomerId = new EntityReference(
                        Account.EntityLogicalName,
                        _accountId),
       Status = new OptionSetValue((int)lead_statuscode.Qualified),
       LeadId = new EntityReference(Lead.EntityLogicalName, _lead2Id)
     };
     var qualifyIntoOpportunityRes =
                    (QualifyLeadResponse)_serviceProxy.Execute(qualifyIntoOpportunityReq);

     foreach (var entity in qualifyIntoOpportunityRes.CreatedEntities)
     {
        if (entity.LogicalName == Opportunity.EntityLogicalName)
        {
           Guid _opportunityId = entity.Id;
        }
      }

 }

No comments:

Post a Comment