• Narrow screen resolution
  • Wide screen resolution
  • Decrease font size
  • Default font size
  • Increase font size
Home arrow Blog arrow Wie installiere ich Anpassungen an Microsoft CRM
Wie installiere ich Anpassungen an Microsoft CRM E-Mail
Sonntag, 25. November 2007

Heute beschreibe ich die Möglichkeiten, ein Installer- bzw. Setup-Programm  zu erstellen, das Anpassungen am CRM auf andere Server migriert. Verwenden Sie die Microsoft.Crm.Sdk.IsvReadiness Klassen, die mit dem ISVReadiness Beispielcode des CRM SDK geliefert werden.

Nachdem die Arbeiten an den benutzerdefinierten Entitäten (alle Entitäten die standardmäig mit "new_" beginnen, sofern die in den Einstellungen nicht geändert wurde) und deren Beziehungen abgeschlossen sind, exportieren Sie nur diese Entitäten und fügen Sie die erzeugte XML-Datei zu Ihren Visual Studio Installer Projekt. Schreiben Sie dann Ihren Code, der diese XML-Datei zur Laufzeit importiert und danach publiziert.

private void importEntities()
{
  //Import custom entities
  ImportAllXmlRequest import = new ImportAllXmlRequest();
  using (StreamReader sr = new StreamReader("customentities.xml"))
  {
      string customizationXml = sr.ReadToEnd();
      import.CustomizationXml = customizationXml;
  }
  _crmservice.Execute(import);

  //Publish
  PublishAllXmlRequest publish = new PublishAllXmlRequest();
  _crmservice.Execute(publish);
}

Nachdem Sie nun Ihre Änderungen an den System-Entitäten und deren Geschäftsbeziehungen vorgenommen haben:

private void changeLeadEntity()
{

  //Load the lead entity in an XmlDocument
  ExportXmlRequest export = new ExportXmlRequest();
  export.ParameterXml = “lead“;
  ExportXmlResponse entities = (ExportXmlResponse)_crmservice.Execute(export);
  XmlDocument xml = new XmlDocument();
  xml.PreserveWhitespace = true;
  xml.LoadXml(entities.ExportXml);

  //Add an attriute map to tell crm what to do with an atrribute if the user converts a lead to an opportunity
  XmlDocument map = new XmlDocument();
  map.LoadXml(”new_customsourceidnew_customtargetid“);

  XmlNode mapnode = map.DocumentElement;

  XmlElement attributemap = xml.CreateElement(”AttributeMap”);
  XmlElement attributesource = xml.CreateElement(”AttributeSource”);
  attributesource.InnerText = “new_customsourceid”;
  XmlElement attributetarget = xml.CreateElement(”AttributeTarget”);
  attributetarget.InnerText = “new_customtargetid”;

  attributemap.AppendChild(attributesource.Clone());
  attributemap.AppendChild(attributetarget.Clone());

  XmlNode newnode = xml.SelectSingleNode(”descendant::EntityTarget[@LocalizedName=’Opportunity’]”).ParentNode.SelectSingleNode(”AttributeMaps”).AppendChild(attributemap.Clone());

  //Add fields to the lead form
  FormCustomizer leadFormEditor = new FormCustomizer(xml, “connectpartners”);

  XmlDocument helper = new XmlDocument();
  helper = leadFormEditor.Xml;

  helper.SelectSingleNode(”descendant::tab[@id=’” + xml.SelectSingleNode(”descendant::tab”).Attributes[”id”].Value + “‘]/sections/section/labels/label[@description=’blabla’]”).ParentNode.ParentNode.ParentNode.RemoveChild(helper.SelectSingleNode(”descendant::tab[@id=’” + xml.SelectSingleNode(”descendant::tab”).Attributes[”id”].Value + “‘]/sections/section/labels/label[@description=’blabla’]”).ParentNode.ParentNode);
  leadFormEditor.Xml = helper;

  Guid sectionid = Guid.NewGuid();
  Guid tabid = new Guid(xml.SelectSingleNode(”descendant::tab”).Attributes[”id”].Value);

  //Add a lookup field to a new section
  leadFormEditor.AddSection(”lead”, tabid, sectionid, “testsection”, true, true, 0, “varwidth”, 11, 1031);
  leadFormEditor.AddCellToNewRow(”lead”, tabid, sectionid, “My Attribute”, “new_customattribute”, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.FieldDataType.Lookup, “”new_customattributeid”, false, true, false, 2, 1, 1031);

  //Add Javascript to the onload event
  if (!leadFormEditor.Xml.OuterXml.Contains(”newmethod”))
  {
  leadFormEditor.AddFormEventJScript(”lead”, “newmethod = function (){ doSomething(); windows.alert(’Done’);}”, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.JScriptType.onload, Microsoft.Crm.Sdk.IsvReadiness.SupportingItems.FormCustomizer.InsertionMode.InsertAfter, new string[] { });
  }

  //Import the modifications
  ImportAllXmlRequest import = new ImportAllXmlRequest();
  import.CustomizationXml = leadFormEditor.Xml.OuterXml;
  _crmservice.Execute(import);

  //Publish
  PublishAllXmlRequest publish = new PublishAllXmlRequest();
  _crmservice.Execute(publish);
}

 

Deutsch      English