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 

 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:\\ Dynamics CRM\Trace (See AJAX, Mashups)  ISV.Config: Add custom buttons, menus and entity-  Exchange 2003 or 2007 Implementation Guide)  Plug-Ins level navigation.  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 ”  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.("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 CRM 4.0 Quick Reference support Created by Tim A. Dutcher – http://mscrmrocks.blogspot.com