Neuer Webserice für das CRM

13. April 2011 12:17

Hallo Zusammen,

wir haben in CRM 4 einen Webserivce geschrieben, der Daten aus dem CRM holt und neue wieder rein schreibt.

dazu haben wir den CrmService benutzt. Unter 2011 gibt es das ja nicht mehr.

Wie komme ich bei 2011 jetzt an meinen crmService?

Hier mal der alte Code

Code:
CrmService _crmService = null;

        public CrmService crmService
        {
            get
            {
                if (_crmService == null)
                {
                    CrmAuthenticationToken token = new CrmAuthenticationToken();
                    token.OrganizationName = CRMORGANISATION;
                    token.AuthenticationType = AuthenticationType.AD;
                    CrmService service = new CrmService();
                    service.Url = crmServerUri;
                    service.CrmAuthenticationTokenValue = token;
                    System.Net.NetworkCredential cred = new System.Net.NetworkCredential();
                    cred.Domain = base64Decode(ConfigurationSettings.AppSettings["DOMAIN"]);
                    cred.UserName = base64Decode(ConfigurationSettings.AppSettings["USER"]);
                    cred.Password = base64Decode(ConfigurationSettings.AppSettings["PASS"]);
                    service.Credentials = cred;
                    return service;
                }
                else
                    return _crmService;
            }
        }


Viele Grüße
Pascal

Re: Neuer Webserice für das CRM

13. April 2011 12:31

Hallo Pascal,

da kann ich dir wärmstens das SDK empfehlen, da wird das sehr genau erklärt. Das SDK findest du hier.

Re: Neuer Webserice für das CRM

13. April 2011 12:34

Da hab ich schon geschaut, aber nicht das passende gefunden :-(

Wenn man nicht weiß wo man suchen soll, dann erschlägt das einen auch son bisschen...

Ein Kleiner Tipp, wie ich jetzt ein neues IOrganisationService Objekt erstelle würd mir ja erstmal schon reichen :-)

Viele Grüße
Pascal

Re: Neuer Webserice für das CRM

13. April 2011 12:46

Im SDK gibt es in der linken Navigation einen eigenen Menüpunkt "Sample Code Directory for Microsoft Dynamics CRM".

Desweiteren gibt es sogenannte Walkthroughs im SDK, die du z. B. unter "Learn About Development ..." im UNterpunkt "Turorials for Learning..." findest. In dem Artikel werden unten eine ganze Reihe von Walkthroughs angeboten.

Re: Neuer Webserice für das CRM

15. April 2011 15:27

Hallo,

es hat jetzt verdammt lange gedauert, aber ist das so dann richtig?

System.ServiceModel.Description.ClientCredentials credentials = new System.ServiceModel.Description.ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "pwd", "domain");

Uri organizationUri = new Uri("http://server/org/XRMServices/2011/Organization.svc");
Uri homerealmuri = null;
OrganizationServiceProxy orgService = new OrganizationServiceProxy(organizationUri, homerealmuri, credentials, null);
IOrganizationService crmService = (IOrganizationService)orgService;
QueryExpression query = new QueryExpression("Account");
query.ColumnSet.AllColumns = true;
crmService.RetrieveMultiple(query);


ich habe auch versucht den Organization.svc Service direkt zu nutzen:

OrganizationServiceClient orgClient;
orgClient = new OrganizationServiceClient();
orgClient.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "pwd", "domain");
QueryExpression qb = new QueryExpression();
qb.EntityName = "account";
qb.ColumnSet = new ColumnSet().AllColumns; //hier funktioniert das auch nicht so wie im SDK! ->query.ColumnSet.AllColumns = true;
orgClient.RetrieveMultiple(qb);


aber da bekomme ich bei RetrieveMultiple IMMER einen Fehler, das der übergebene Parameter falsch ist. Verlangt wird ein QueryBase Object. Es war aber egal, ob ich eine QueryExpression übergeben habe oder ein QueryBase Objekt oder sonst irgendwas.

Viele Grüße
Pascal