web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

Get field value from Dynamics CRM 365 using WCF Service

(0) ShareShare
ReportReport
Posted on by

I have a requirement to create web service to get a records in dynamics crm. And there is a web application that will call this web service to display the records in it. In this case, i created WCF Service project. I have done writing the script for this WCF Service project. Since i haven't had an access to the CRM Server, i couldn't test this WCF Service. And this is the first time i write WCF Service. So i need an advice and correction whether my script is correct or is not.

This is my code:

Service1.svc.cs

namespace WCF_CRM_Multipolar
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.
    public class Service1 : IService1
    {

        OrganizationServiceProxy _orgservice;
        string userName = "";
        string passWord = "";
        string Url      = "";
        private bool InitializeCRMService(string userName, string passWord, string Url)
        {
            bool isSuccess = false;
            Uri organizationUrl = new Uri(Url);
            ClientCredentials credit = new ClientCredentials();
            credit.UserName.UserName = userName;
            credit.UserName.Password = passWord;
            _orgservice = new OrganizationServiceProxy(organizationUrl, null, credit, null);
            _orgservice.ServiceConfiguration.CurrentServiceEndpoint.EndpointBehaviors.Add(new ProxyTypesBehavior());

            if (_orgservice != null)
                isSuccess = true;
            return isSuccess;

        }
	public string BudgetBalance(string userlogin)
        {
            if (InitializeCRMService(userName, passWord, Url))
            {
                QueryExpression query = new QueryExpression("systemuser");
                string[] cols = { "businessunitid", "domainname" };
                query.Criteria = new FilterExpression();
                query.Criteria.AddCondition("domainname", ConditionOperator.Equal, userlogin);
                query.ColumnSet = new ColumnSet(cols);
                var userbusinessunit = _orgservice.RetrieveMultiple(query);
                Guid buid = (Guid)userbusinessunit[0].Attributes["businessunitid"];

                QueryExpression query1 = new QueryExpression("new_budget");
                string[] cols1 = { "owningbusinessunit", "new_selfremainbudget"};
                query1.Criteria = new FilterExpression();
                query1.Criteria.AddCondition("owningbusinessunit", ConditionOperator.Equal, buid);
                query1.ColumnSet = new ColumnSet(cols1);
                var budgetremaining = _orgservice.RetrieveMultiple(query1);

                
                Decimal remain_budget = budgetremaining[0].GetAttributeValue<decimal>("new_selfremainbudget");

                return "Latest budget available: " + remain_budget.ToString();
            }
            else
            {
                return "Failed to retrieve budge from crm";
            }
        }
    }
}


IService1.cs

namespace WCF_CRM_Multipolar
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string BudgetBalance(string userlogin);
       

        // TODO: Add your service operations here
    }


    // Use a data contract as illustrated in the sample below to add composite types to service operations.
      
}

 

The idea is when the web application call this web service, the web application fill the parameter (user login) and get the remain_budget as the return value. So they can use remain_budget and display it in web application.

The question:

When i deploy this to IIS. Is the web application can call this web service and get the return value ? If is not, could you tell me where is the error that i made


*This post is locked for comments

I have the same question (0)
  • Suggested answer
    Aiden Kaskela Profile Picture
    19,696 on at

    Hi Fikri,

    The deployment of your WCF app and the communication with CRM are independent. You can run the Service1 code as a Console App on your development machine and be able to query CRM without worrying about the WCF aspect. When your CRM logic is all good, then work on tying it into your WCF app.

    Hope this helps! I'd appreciate if you'd mark this as Answering your question.

    Thanks,

     Aiden

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans