CRM 4.0 Quick Reference Selling Points Major Product Components CRM: Sales, Service, Marketing, Custom Entities; Free 90-day trial available Web Application / Web Services Own or rent: On-premise, partner, or CRM Online Windows Workflow Foundation What’s New in 4.0 (“Titan”) Flexible access: Outlook (on/offline), browser, mobile, portal (SharePoint), custom UI Data Connector for Reporting Services Multi-tenancy: Multiple organizations with one Customization: Custom entities, Web/Outlook forms, JScript, Plugins, Workflow Asynchronous Service implementation; dynamically updated WSDL for each org. Web-based administration; Role-based security; Line of Business (LOB) platform Discovery Service Internet-facing deployment (IFD); CRM Online (hosted) Engineered for change (auto-adapting metadata-driven design); Office integration Deployment Service Major workflow improvements via Workflow Foundation (Outlook, Excel reports and pivot tables, Word mail merge) Metadata Repository Reporting Wizard Outlook Client (Add-in) Duplicate detection; Bulk delete E-mail Router (POP3/SMTP/Exchange) CRM 4.0 Server Editions Async operations (plug-ins; workflow) Data Migration Manager Workgroup: Maximum of five User licenses. Windows Small Business Server. Algorithm-based e-mail tracking (no token required) Duplicate detection Professional: Single tenant deployment. Multi-server. No user license limit. Data Migration Manager and Import Data Wizard Queues Many-to-many and self-referential entity relationships Enterprise: Multi-tenant, multi-server. No user license limit. Multilanguage; multicurrency Unsupported Customizations Importing Data Rule: If not in SDK then consider it unsupported. Deployment Scenarios On-premise Requirements Import Data Wizard: Basic data importing; Start with delimited Examples: Changing any CRM file (js, aspx, etc.), Adding All-in-One (Small Business) Active Directory file; One file per entity; Assigned to single owner; 4 MB max file custom files in folders other than Bin and ISV, Changing the Team / Department (Medium Windows Server SBS/2003/2008 size; Automatic or manual data mapping; Admin UI shows database schema, Changing CRM website settings, Business) Internet Information Services (IIS) success/failures Manipulating HTML DOM, Changing undocumented registry SQL Server 2005 or 2008 Division / Enterprise Data Migration Manager: Import multiple source files at one entries, Hide system views, Using custom HTTP modules, CRM Online SQL Server Reporting Services time; Assign records to multiple users;Complex data mapping Creating virtual directory under CRM app, etc. Partner or Enterprise Hosted Internet Explorer
Outlook UI Customization (ISV.Config and SiteMap) Visual Studio 2008 Miscellaneous Integration SiteMap: Modify the application-level navigation pane .NET Framework 3.0 CRM server tracing: Enable via the Registry; Trace data is written to UI (IFrame, Web Services, and Workplace profiles; Set order of nav links Optional Configuration Drive:\Program Files\Microsoft Dynamics CRM\Trace (See AJAX, Mashups) ISV.Config: Add custom buttons, menus and entity- Exchange 2003 or 2007 Implementation Guide) Plug-Ins level navigation. Microsoft Office SharePoint Server Access CRM database through SQL filtered views. SharePoint (Web Parts) o To pass parameters to the target URL, set SQL Analysis Services MetaData browser: http://server[:port]/orgname/sdk/list.aspx EAI PassParams attribute to true. Parameters: Network Load Balancing Workflow or Plug-in? Use workflow when possible and async is ok; ETL typename, type, id, orgname, userlcid, orglcid SQL Clustering Use plug-in for synchronous processing, offline use, and data Note: To edit SiteMap or ISV.Config, export to XML file, ISA Server validation; If manual execution is needed then use workflow make changes, and import. Performance and Scalability BizTalk Dev tools: Search online for crmdiagtool4, "ie developer toolbar", Service grid architecture System Management Server fiddler, ieinspector, sysinternals, stunnware, “crm codeplex” Deployment choice Operations Manager Outlook Client WAN performance System Center Supports Connected and Disconnected (Offline) modes Core System Entities optimization Near identical functionality as web client Salesforce Automation: Account, Contact, Lead, Opportunity, Load balance clustering Workflow Offline: Data copied to local MS SQL 2005 Express Competitor, Quote, Order, Invoice, Product Web farm clustering CRM workflow runs as a Windows o Can schedule background interval data updates Marketing: Campaign, List, Literature Exchange clustering Service; provides asynchronous o Synchronize offline changes back to the server Service: Case, Contract, KB Article SQL Server clustering processing o Select data to download with Local Data Groups Activities: E-mail, Fax, Letter, Phone Call, Task, Appointment, Service SQL mirroring Can be initiated manually, o Limitations: no workflow, async plug-ins, import Activity, Campaign Response, Campaign Activity, Order Close, Quote Scale to: 24,000+ users automatically from triggering Special feature: Activity reminders Close, Opportunity Close, Quick Campaign, Case Resolution, System o > 1M web requests / hour event, or from another workflow No Outlook Web Access (OWA) integration Job, Bulk Operation Log process Built-in rules handle deleted data in Outlook and web Other: Subject, Role, Team, Business Unit Reporting Options User context: Manually started = Diagnostics tool provided for troubleshooting Entity views and Advanced context of the user who started it; Find Rule-based = workflow owner E -mail Functionality Asynchronous Service Dynamic Excel files Trigger when record is Created, Router: Interface between e-mail system (Exchange/SMTP/POP3) Managed Queue: Executes asynchronous registered plug- SQL Server Reporting Services Status Changes, Assigned, and Dynamics CRM; Outlook is an alternative on client computers ins, workflows, bulk mail, bulk import, bulk delete, and Reporting Wizard (Web UI) Attributes Change, Deleted Tracking: Automatic tracking of inbound/outbound e-mail; campaign activity propagation. Filtered (SQL) views Actions: Create/Update/Assign Optional tracking tokens; Smart matching; Individual-level settings “System Job” in UI = asyncoperation (SDK Class) MS Word, Excel, Access record, Send e-mail, Start child Templates: Insert into messages; Bulk (direct) send; Use in work- Start/stop the service in Windows Services tool . Links to Web pages workflow, Change status, Stop flows and system job notification; Supports data fields, ownership Common uses for async plug-ins: recurring events, Third-party reporting tools workflow, Custom actions levels. Single entity or global. No use in Quick Campaigns. auditing, bulk operations, process-intensive operations.
Forms and Controls SDK IPluginExecutionContext Interface Technologies Form Properties: IsDirty; FormType (0=undefined, Web services: Properties Good tech skills 1=create, 2=update, 3=readonly, 4=disabled, 5=quick Discovery: http://CrmServer/mscrmservices/2007/ad/crmdiscoverservice.asmx BusinessUnitId : Guid to have/know: create, 6=bulk edit); ObjectId; ObjectTypeCode; o Used to find correct CrmService endpoint for an organization; obtain ticket CallerOrigin : CallerOrigin CRM SDK ObjectTypeName; all.{field_name} CRM: http://CrmServer/mscrmservices/2007/crmservice.asmx CorrelationId : Guid C# / VB.NET o Syntax: crmForm.propertyname o Strongly-typed access to all entities; Methods: Create, Retrieve, CorrelationUpdatedTime : CrmDateTime OOP Form Events: onLoad; onSave (Refer to event.Mode RetrieveMultiple, Update, Delete, Fetch, Execute Depth : int JScript property for type of save occurring) Metadata: http://CrmServer/mscrmservices/2007/metadataservice.asmx InputParameters : PropertyBag T-SQL o To cancel save: event.returnValue = false o Read/write metadata (entity/attribute/relationship definitions) InvocationSource : int ASP.NET Form Methods: Save, SaveAndClose; Save example: Assemblies: IsExecutingInOfflineMode : bool .NET Frmwrk crmForm.Save() Microsoft.Crm.Sdk.dll: Contains methods needed for developing plug-ins and MessageName : string HTML/DOM Field Properties (all fields): DataValue, Disabled, custom workflows. Use DynamicEntity class. Method: Execute. Mode : int XML/DOM RequiredLevel, IsDirty, ForceSubmit Microsoft.Crm.SdkTypeProxy.dll: Contains types needed for developing plug-ins OrganizationId : Guid SSRS Field Events (all fields): onChange (occurs when the data and custom workflows. OutputParameters : PropertyBag IIS Admin in a form field has changed and focus is lost) ParentContext : IPluginExecutionContext Active Dir. Field Methods (all fields): SetFocus, FireOnChange PostEntityImages : PropertyBag Win Security Accessing CrmService (Sample Code) Field Types: Boolean, Customer, Date/Time, Duration, E- PreEntityImages : PropertyBag Workflow Fn. public CrmService GetCrmService(string orgName, string server) { mail Body, Float, Integer, Lookup, Memo, Money, PrimaryEntityName : string SharePoint CrmAuthenticationToken token = new CrmAuthenticationToken(); PartyList, Picklist, Regarding, State, StatusReason, String SecondaryEntityName : string BizTalk token.AuthenticationToken = 0 // Active Directory (On-Premise); Picklists: A picklist contains multiple options. Properties SharedVariables : PropertyBag SOAP token.OrganizationName = orgName; and methods: DataValue (get/set; get returns string of Stage : int Exchange CrmService service = new CrmService(); selected option; set changes the selected option); UserId : Guid CSS service.Credentials = System.Net.CredentialCache.DefaultCredentials; SelectedText (get; returns string value of selected option); Methods SSL service.CrmAuthenticationTokenValue = token; GetSelectedOption (returns a picklist option object); CreateCrmService() : object NLB service.Url = Options (get/set; array of Picklist option objects); CreateMetadataService() : object MS Oper Mgr string.Format("http://{0}/mscrmservices/2007/crmservice.asmx", server); AddOption; DeleteOption; DefaultValue (get/set default Virtualization return service; } value)
DateTime: Can be formatted to show both the date and time, or the date only. Properties: DataValue (get/set), Plug-Ins (Plugins) Workflow Assemblies TimeVisible (get only). Write plug-ins using any.NET 2.0 CLR-compliant language. Inherit from Pass and retrieve values from custom assemblies in CRM workflow. Regarding: A field that represents a Lookup where the IPlugin. Sign (strong name) each assembly. Handle pre-event and post-event. In Visual Studio, create a Workflow Activity project. Reference CRM linked record can be any record type that can be SDK assemblies and Microsoft.Crm.Workflow. Sign your assembly. presented in the field. Supports the DataValue property. Basic plug-in class example: Basic workflow class example: Customer: A field that represents a type of Lookup where using System; [CrmWorkflowActivity("Workflow Step","Group Name")] either an account or contact is a valid type of record. using Microsoft.Crm.Sdk; public class Activity1 : SequenceActivity { using Microsoft.Crm.SdkTypeProxy; protected override ActivityExecutionStatus Execute( … namespace MyPlugins ActivityExecutionContext executionContext { Parent { IContextService contextService = (IContextService) … Project (primary) public class AccountCreateHandler: IPlugin { executionContext.GetService(typeof(IContextService)); Manager Option Properties: DataValue (index value of entityselected public void Execute(IPluginExecutionContext context) { IWorkflowContext ctx = contextService.context; option), Text (text of selected1:N option). try { ICrmService crmService = (ICrmService)context.CreateCrmService(); Manages // Do something here. See SDK for samples. } // Execute custom logic here… Child N:1 catch (SoapException ex) { public static DependencyProperty myStringProperty = … (related) Project throw new InvalidPluginExecutionException("err",ex) } DependencyProperty.Register("myString", typeof(System.String), entity } typeof(Activity1)); } [CrmInput("My String")] Entity Relationships } // Note: If plug-ins consist of multiple assemblies, consider using ILMerge [CrmOutput("My String Output")] Relationship Types: one-to-many, many-to-one, many-to- Events (Messages): [CrmDefault("My Default String")] many, self-referential. Create, Retrieve, RetrieveMultiple, Update, Delete, SetState, Assign, Route, public string myString { Behavior Types: Parental, Referential, Referential / Merge , DeliverIncoming, DeliverPromote, Send get { return (string)base.GetValue(myStringProperty); } Restrict Delete, Cascade All, Cascade Active, Cascade Registering: set { base.SetValue(myStringProperty, value); } User-Owned, Cascade None PluginRegistration tool provides GUI; PluginDeveloper tool is for } Cascading Rules: Assign, Share, Unshare, Reparent, programmatically registration; Source code for both is provided in SDK. } Delete, Merge (Don’t forget to add a Step to the Plug-in.) Deployment: See plug-in deployment. Restart CRM Async Service. N:N limitations: No added attributes; “Add Existing Deployment: Deploy to database (recommended) or file system. Debug by providing PDB file in server\bin\assembly folder. Record” limits search to 100 records; No workflow Microsoft Dynamics CRM 4.0 Quick Reference support Created by Tim A. Dutcher – http://mscrmrocks.blogspot.com