Wie bekomme ich denn jetzt am schlankesten und sichersten diesen String aus der Opportunity Close Record mit Abgleich der OpportunityID in das neu eingeführte Feld? Vielleicht kann auch jemand bei diesme Snippet weiterhelfen? Viele Dank!
Ich würde Dir zunächst einmal empfehlen, Dich mit dem Developer Toolkit vertraut zu machen. Das findest Du im SDK. Wenn Du es in Visual Studio integrierst, und ein neues CRM Projekt erstellst, sollte Dir das die Erstellung deutlich vereinfachen.
Dann würde ich die Early bound types über das crmsvcutil erstellen (mit Context MyProjectContext) und ins Projekt einbinden. Und den IOrganizationServiceContext verwenden.
- Du liest Dir aus der PrimaryEntity der OpportunityClose die ID aus.
- Du instantiierst den MyProjectContext mit dem OrganizationService, den Du aus dem IServiceProvider kriegst, der an die Execute Funktion des Plugins übergeben wird
- Über die Primary Entity des Pluginexecutioncontext bekommst Du die Id und description der OpportunityClose.
Und dann kannst Du dir die Opportunity auslesen und ändern.
In Pseudocode ungefähr so:
var contextInstance = new MyProjectContext(organizationServiceInstance)
var opp = (from opp in contextInstance.OpportunitySet where opp.OpportunityId == this.PluginExecutionContext.PrimaryEntity.Attributes["opportunitycloseid"] select opp).SingleOrDefault();
opp.new_description = oppClose.Description;
contextInstance.UpdateObject(opp);
contextInstance.SaveChanges();
So ungefähr sollte das funktionieren.
Viele Grüße,
Jan Nebendahl