tag:blogger.com,1999:blog-40581657596948163442024-02-07T06:48:25.822+02:00CRM DE LA CREME!The Menu of Support for Microsoft Dynamic CRM profesionals and users!Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-4058165759694816344.post-45422853238542421772014-03-11T13:14:00.002+02:002014-03-11T13:14:51.641+02:00CRM 2013 Latest Compatibility List<a href="http://support.microsoft.com/kb/2669061">http://support.microsoft.com/kb/2669061</a>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-82090609176747786262013-11-01T08:44:00.000+02:002013-11-01T08:44:11.594+02:00Getting Started with CRM 2013<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:RelyOnVML/>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="371">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";
mso-ansi-language:EN-US;
mso-fareast-language:EN-US;}
</style>
<![endif]-->
<br />
<div class="MsoBodyText">
<span lang="EN-AU"><a href="http://youtu.be/-L7rcj1LFxs">Getting
started with Microsoft Dynamics CRM 2013 </a></span></div>
<div class="MsoBodyText">
<span lang="EN-AU"><br /></span></div>
<div class="MsoBodyText">
<span lang="EN-AU">Training Resources:</span></div>
<div class="MsoBodyText">
<span lang="EN-AU"><br /></span></div>
<div class="MsoBodyText">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-ZA</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--></div>
<br />
<div class="MsoBodyText">
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="371">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
</style>
<![endif]-->
</div>
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="https://community.dynamics.com/crm/b/dynamicscrmsupportblog/archive/2013/10/15/microsoft-dynamics-crm-online-fall-2013-important-information-for-administrators.aspx" target="_new">community.dynamics.com/.../microsoft-dynamics-crm-online-fall-2013-important-information-for-administrators.aspx</a></span><br />
<br />
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="http://blogs.technet.com/b/lystavlen/rss.aspx?Redirected=true" target="_new">blogs.technet.com/.../rss.aspx</a></span><br />
<br />
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="https://community.dynamics.com/crm/b/crmconnection/archive/2013/10/09/microsoft-dynamics-crm-online-fall-13-now-available.aspx" target="_new">community.dynamics.com/.../microsoft-dynamics-crm-online-fall-13-now-available.aspx</a></span><br />
<br />
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="http://rc.crm.dynamics.com/rc/2011/en-us/Dynamics-CRM-Upcoming-Release-FAQ.aspx" target="_new">rc.crm.dynamics.com/.../Dynamics-CRM-Upcoming-Release-FAQ.aspx</a></span><br />
<br />
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="https://community.dynamics.com/crm/b/crmcustomereffective/archive/2013/08/02/great-changes-are-coming-soon-crm-online-fall-39-13-subscription-user-license-pricing.aspx" target="_new">community.dynamics.com/.../great-changes-are-coming-soon-crm-online-fall-39-13-subscription-user-license-pricing.aspx</a></span><br />
<br />
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="http://technet.microsoft.com/en-us/library/dn265924.aspx" target="_new">technet.microsoft.com/.../dn265924.aspx</a></span><br />
<br />
Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-24458882199648873382013-11-01T08:41:00.002+02:002014-03-11T13:34:53.758+02:00CRM 2013 Certification Exams<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:RelyOnVML/>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="371">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";
mso-ansi-language:EN-US;
mso-fareast-language:EN-US;}
</style>
<![endif]--><span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-700
Microsoft Dynamics CRM Applications</span> <span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;"> </span></span><br />
<span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-701 Extending Microsoft Dynamics CRM</span></span><br />
<span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-702 Deploying Microsoft Dynamics CRM</span> <span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;"> </span></span><br />
<span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-703 Microsoft Dynamics CRM
Customization and Configuration</span> <span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;"> </span></span><br />
<span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-704 Deploying Microsoft Dynamics CRM
Online</span></span><br />
<span style="color: orange;"><span lang="EN-AU" style="font-family: "Segoe UI","sans-serif"; font-size: 10.0pt; line-height: 150%;">MB2-705 Microsoft Dynamics CRM Online
Customization and Configuration</span></span>
Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-59833924889723387692013-10-07T09:27:00.001+02:002013-10-07T09:27:11.401+02:00CRM 2013 new UIHere is a nice video showing the nice UI for CRM 2013.<br />
Can't wait for the release it is going to be awesome! :)<br />
<br />
<a href="http://www.youtube.com/watch?v=EScDpwxRuiI">http://www.youtube.com/watch?v=EScDpwxRuiI</a>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-61551886676557027852010-05-21T06:49:00.002+02:002010-05-21T06:52:01.839+02:00CRM Installation Tips<span style="font-family:arial;"><strong>All Installations</strong><br />Whether you are upgrading an existing CRM 3 installation or installing a fresh new CRM 4 installation, you will have to pay close attention to all of the system requirements prior to starting your installation or upgrade process. The CRM installation program has a fairly good pre-requisites test that will assess your infrastructure and give you a report of your readiness prior to actually performing the installation.<br />Some of the things that you should be aware of before you start. Install the latest version of .Net framework on the CRM server, and be aware that CRM 4 requires both SQL Server 2005 and SQL Server Reporting Services 2005, both with Service Pack 2. I recommend that you take care of these prerequisited before starting the CRM 4 installation program, otherwise your prerequisites will fail and the installation program will not let you continue with the installation. </span><br /><span style="font-family:arial;"><br /><strong>Upgrading from CRM3</strong><br />Backup everything - including your existing CRM 3 operating system. Backup your databases as well. If your CRM 4 upgrade fails, you will be left with having to reinstall CRM 3 from scratch. So backup everything. Consider yourself forewarned!<br />Many CRM 3 installations are still running on a SQL 2000 / SQL 2000 Reporting Services Infrastructure. The initial installation guides do not cover the topic of upgrading your SQL infrastructure before you start the CRM 4 upgrade process, but it is an absolute requirement. I highly recommend that to prepare for a CRM 4 upgrade, you upgrade your existing CRM 3 installation to SQL 2005 and ensure that it is all working before you start an upgrade to CRM 4. I would even recommend that you upgrade to SQL 2005 and take a new backup so that your restore point is not so far back. You may even wish to split your upgrade process into a couple of weekends, upgrading your SQL infrastructure on the first weekend, then the CRM system on the next weekend.<br /><br /><strong><span style="color:#ff0000;">*IMPORTANT NOTE*</span></strong><br />If you upgrade your database to SQL 2005, you *MUST* ensure that full-text indexing is enabled on your SQL 2005 database prior to running the installation progam. The CRM 4 installation does not test for this, and if full text indexing is not enabled, you will encounter an installation error and be left with the only option of reinstalling CRM 3 and restarting the entire process. You may even have to reinstall your operating system or restore the OS from backups as you may have difficulties with the CRM 3 installation process as well after a botched CRM 4 installation. Full text indexing should be on for SQL 2005 databases, but if you mount a SQL 2000 database in SQL 2005, it might not be enabled. You can enable full text indexing by issuing the following SQL command on that database:<br /><br /><em><span style="color:#000066;">sp_fulltext_database @action='enable'</span></em><br /><br /><strong><em>Installing Reporting Services SP2</em></strong><br />You may have a problem trying to patch Reporting Services with Service Pack 2. The upgrade program creates bad SQL that it runs in the process, and that results in the installation failing. The solution is to locate the upgrade log, then strip out the SQL, make the required changes, then run it manually. For example, if your reporting server database is CRM_ReportingServices, the SQL commands will include a USE statement of: USE CRM_[CRM_ReportingServices], which is not valid. I have not found any other way to fix this problem. That said, CRM 4 will require Reporting Services 2005 Service Pack 2, so I recommend you ensure that your reporting services is properly patched prior to installing and configuring CRM 4.<br />Before you start the CRM 4 upgrade/installation process, be sure to test your Reporting Services url.<br /><br /><strong>404.1 Error Accessing Reporting Services from the CRM Server<br /></strong>You may encounter an issue where the reporting services url does not work from the server that you are installing CRM from. When you browse the reporting services url, you are challenged for credentials 3 times and then given a generic 401.1 error. The fix is to either disable the LSA loopback check, or add the url to the list of valid host names on the reporting services server. See <em><span style="color:#000066;">http://support.microsoft.com/?id=896861</span></em> for more information.<br /><br /><strong>Email Router Configuration</strong><br />The email router can be installed and configured seperately. When you install an instance of CRM 4, you will have to provide a friendly name and a convenient name for your CRM organization. This short name for the organization is used as part of the url (keep in mind that CRM 4 is multi-tenant capable). The url is normally not case sensitive, EXCEPT for the email router configuraiton. If you do not get the case properly, it will fail to load the users and will give you false instructions on how to determine your url. Do not follow those instructions - open the deployment manager and use the exact organization name from that program instead. Once you get the exact url, with case proper, you should be able to configure the email gateway.<br /><br /><strong>Access Denied and SPNs</strong><br />On one of my installations, the CRM web interface would prompt me for credentials, then give me a 401.1 access denied error. I had installed CRM 4 on a website that had custom host headers (custom urls). When I used the custom url (that was not the domain name of the machine), the integrated security would fail. During the installation program, it raised a warning that the website did not resolve to the machine name, so the CRM installation program did tell me about the problem. I noticed that if I used localhost for the url, the website would work fine, but it would not work using the custom url for the site. The solution to the problem was to download the <span style="color:#000066;"><em>SETSPN.EXE</em></span> program from the Microsoft website and issue a <em><span style="color:#000066;">SETSPN -A HOST/[url] [machine-name]</span></em> command. Once I ran this, everything worked properly. Welcome to the world of SPNs.<br />Note that this can also cause an issue with Reporting services. If you are using a custom url for reporting services, integrated security might also fail. Unfortunately, the fix that is promoted is to change the NTAuthenticationProviders IIS metabase property to "NTLM". This will make Reporting Services work, but is incompatible with CRM, as CRM needs "Negotiate, NTLM". That said, the better way to fix reporting services is to register the SPN for that url too, without making modifications to the NTAuthenticationProviders metabase attribute. This will ensure that both Reporting Services and CRM will function on the same machine.<br /><br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-35450660311253326402010-05-18T06:10:00.004+02:002010-05-20T06:02:54.043+02:00Point a IFrame to a external website<span style="font-family:arial;">Microsoft Dynamics CRM allows you to access external web sites from within forms using IFRAMES (Inline Frames). You can configure the IFRAME to take information from the parent record. A pretty standard use of this is a Web tab on the Account form where the Account’s web site URL is passed to the IFRAME and the web site is available from a Web tab.<br /><br />To do this, one sets up a little code for the form On Load event that puts the Accounts web site URL into the IFRAME’s URL. It’s actually pretty simple. Here is the code (assumes you already know how to set up an IFRAME). IFRAME_WebSite is the name of the IFRAME and .src references the URL it uses.<br /><br /><span style="color:#000066;"><em>// Load web site URL<br />{<br />var AccountURL = crmForm.all.websiteurl.DataValue;<br />if (AccountURL != null)<br />{<br />crmForm.all.IFRAME_WebSite.src = AccountURL;<br />}<br />}</em> </span></span><br /><span style="font-family:Arial;color:#000066;"></span><br /><span style="font-family:Arial;color:#ff0000;"><strong>Note:</strong></span><br /><br /><span style="font-family:arial;color:#000000;">When working with iframes in Microsoft Dynamics CRM, you may find that you need to set the source of the iframe to a blank page (often I set the source to a blank page in the form configuration – I almost always have javascript dynamically build the url for the source during the page load). Traditionally, CRM developers and consultants (myself included in this bunch) have always been setting the iframe source to about:blank. While this has been adequate for many situations, I’ve started to notice there can be issues when viewing the iframe in a browser that has Enhanced Security Configuration installed. </span><br /><span style="font-family:arial;color:#000000;">The issue that crops up is that about:blank will trigger warning notifications in Internet Explorer – if you’re pulling the pages up from the server (which is how I’m usually doing config work – since I’m an outside consultant), this can be a bit of a nuisance. But I’ve also been in a situation at a client who had a very tightly controlled and locked-down Active Directory environment and about:blank was throwing security warning on the client XP machines. Needless to say, this was not acceptable.<br />Fortunately, there is a CRM url you may use to display a blank page. Instead of setting the iframe source to about:blank, I’ve gotten into the habit of setting it to <strong><em>/_root/Blank.aspx</em></strong>. This gives you a valid url to set the iframe source to while also providing a blank space within the iframe. This method works in any iframe situation without throwing the security warnings, so I’ve made it a standard practice to always use <em><strong>/_root/blank.aspx</strong></em> when I need a blank page.</span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-28701041482534438352010-05-17T11:22:00.004+02:002010-05-18T06:13:22.178+02:00Making a field required based on picklist value<em><span style="font-family:arial;color:#000066;">if (crmForm.all."PickListAttributeName".SelectedText == "Other")<br />//or use to .SelectedIndex or .DataValue<br />{<br />crmForm.SetFieldReqLevel("theOtherField".id, 1);<br />//set it to required<br />}<br />else<br />{<br />crmForm.SetFieldReqLevel("theOtherField".id, 0);<br />//set it to not required<br />}</span></em>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-20980892841649722362010-05-17T10:21:00.001+02:002010-05-18T06:13:55.704+02:00Enabled and disable fields based on a user role<span style="font-family:arial;">All had a question to see if this could be done and this is the code that was used to enabled and disable fields based on a user role when a value is changed in a list box change event.<br /><br /><em><span style="color:#000066;">function UserHasRole(roleName)<br />{<br />//get Current User Roles, oXml is an object<br />var oXml = GetCurrentUserRoles();<br />if(oXml != null)<br />{<br />//select the node text<br />var roles = oXml.selectNodes("//BusinessEntity/q1:name");<br />if(roles != null)<br />{<br />for( i = 0; i < roles.length; i++)<br />{<br />if(roles[i].text == roleName)<br />{<br />//return true if user has this role<br />return true;<br />}<br />}<br />}<br />}<br />//otherwise return false<br />return false;<br />}<br /><br />function GetCurrentUserRoles()<br />{<br />var xml = "" +<br />"<?xml version="1.0" encoding="utf-8"?>" +<br />"<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">" +<br />GenerateAuthenticationHeader() +<br />" <soap:Body>" +<br />" <RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices">" +<br />" <query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression">" +<br />" <q1:EntityName>role</q1:EntityName>" +<br />" <q1:ColumnSet xsi:type="q1:ColumnSet">" +<br />" <q1:Attributes>" +<br />" <q1:Attribute>name</q1:Attribute>" +<br />" </q1:Attributes>" +<br />" </q1:ColumnSet>" +<br />" <q1:Distinct>false</q1:Distinct>" +<br />" <q1:LinkEntities>" +<br />" <q1:LinkEntity>" +<br />" <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +<br />" <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +<br />" <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +<br />" <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +<br />" <q1:JoinOperator>Inner</q1:JoinOperator>" +<br />" <q1:LinkEntities>" +<br />" <q1:LinkEntity>" +<br />" <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +<br />" <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +<br />" <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +<br />" <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +<br />" <q1:JoinOperator>Inner</q1:JoinOperator>" +<br />" <q1:LinkCriteria>" +<br />" <q1:FilterOperator>And</q1:FilterOperator>" +<br />" <q1:Conditions>" +<br />" <q1:Condition>" +<br />" <q1:AttributeName>systemuserid</q1:AttributeName>" +<br />" <q1:Operator>EqualUserId</q1:Operator>" +<br />" </q1:Condition>" +<br />" </q1:Conditions>" +<br />" </q1:LinkCriteria>" +<br />" </q1:LinkEntity>" +<br />" </q1:LinkEntities>" +<br />" </q1:LinkEntity>" +<br />" </q1:LinkEntities>" +<br />" </query>" +<br />" </RetrieveMultiple>" +<br />" </soap:Body>" +<br />"</soap:Envelope>" +<br />"";<br /><br />var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");<br /><br />xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);<br />xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");<br />xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br />xmlHttpRequest.setRequestHeader("Content-Length", xml.length);<br />xmlHttpRequest.send(xml);<br /><br />var resultXml = xmlHttpRequest.responseXML;<br />return(resultXml);<br />}<br /><br /><br />//This is the code used to enable or disable the fields in CRM 4.<br /><br />try<br />{<br />if(crmForm.all.isp_goodwill.DataValue == '1') //List box selected = yes<br />{<br />if(UserHasRole("Goodwill Manager")) //Role to look for<br />{<br />//Fields to enable.<br />crmForm.all.isp_goodwillrequestedbyid.Disabled = false;<br />crmForm.all.isp_goodwillapprovedbyid.Disabled = false;<br />crmForm.all.isp_goodwillvalueapproved.Disabled = false;<br />}<br />}<br />}<br />catch(e)<br />{<br />alert(this.gErrorMessage("Authorisation Form",e.description ));<br />}</span></em></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-9554565794232377932010-05-05T13:55:00.002+02:002010-05-05T14:05:09.207+02:00Getting a quick introduction into CRM 4Hi<br />I used this website to quickly get a overview of how MS CRM works.<br />This helped me alot.<br /><br />Enjoy!Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-73228576573712198962010-05-04T07:49:00.004+02:002010-05-18T06:14:37.673+02:00Some more useful javascripts for MS CRM<span style="font-family:arial;"><strong>HI,Like I mentioned I found some more useful scripts on the internet</strong></span><br /><strong><span style="font-family:Arial;">Enjoy!</span></strong><br /><strong><span style="font-family:Arial;"></span></strong><br /><span style="font-family:arial;"><strong>Replacing the content of an IFRAME</strong><br /><br />If you really want to do some funny things in your CRM form, you can create an IFRAME serving as a placeholder for your real HTML code. Create an IFRAME in an entity and name it "IFRAME_TEST". In the Onload event put the following code:<br />crmForm.all.IFRAME_TEST_d.innerHTML ="<b>Some HTML text</b>";<br />Note the "_d" at the end of IFRAME_TEST. </span><br /><span style="font-family:arial;">This single line replaces the whole IFRAME element with your own HTML.<br /><br /><strong>Adding additional values to duration fields</strong><br />The following script adds the new option "42 Minutes" to the actualdurationminutes field in a task:<br /><br />var duration = crmForm.all.actualdurationminutesSelect;<br />var tables = duration.getElementsByTagName("table");<br />var table = tables[1];var row = table.insertRow();<br />var newOption = row.insertCell(-1);<br />var newValue = "42 Minutes";<br />newOption.setAttribute("val", newValue);<br />newOption.innerText = newValue;<br /><br /><strong>Changing the title of a CRM form</strong><br />document.title = "Hello World!";<br />Changing the Link of a Ticker Symbol from MSN Money to Yahoo Finances<br />This is an unsupported solution as it requires modifications to server files!<br />Open the following directory on your CRM server: C:Inetpubwwwroot_formscontrols (may vary depending on your installation)Open the following file: INPUT.text.ticker.htcSearch the following function:<br /><br />function Launch()<br />{<br />if(value.length > 0)<br />{<br />Parse();<br />window.open("http://go.microsoft.com/fwlink?linkid=8506&Symbol=" + encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) + ",width=" + (screen.availWidth * .75) + ,scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1"); }}<br />Replace it with the following:<br />function Launch()<br />{<br />if(value.length > 0)<br />{<br />Parse();<br />//window.open("http://go.microsoft.com/fwlink?linkid=8506&Symbol=" + encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) + ",width=" + (screen.availWidth * .75) + ,scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1");<br />window.open("http://finance.yahoo.com/q?s=" + encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) + ",width=" + (screen.availWidth * .75) + ",scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1");<br />}<br />}<br /><br />Save the file.On your client machine: Open Internet Explorer and remove all temporary internet files, so that the new htc source is retrieved. Navigate to any ticker symbol, enter a valid value and double click it.<br /><strong></strong></span><br /><span style="font-family:arial;"><strong>Counting the number of backslashes in a string<br /></strong><br />Of course you can use the two code snippets with any character you like.<br /><strong>Solution 1<br /></strong>var text = "hardware\printers\Epson";var paths = text.split("\");alert(paths.length -1);<br /><strong>Solution 2<br /></strong>var text = "hardware\printers\Epson";var numBs = 0;<br />var index = 0;while(index != -1) { index = text.indexOf("\", index); if (index != -1) { numBs++; index++; }}alert(numBs);<br /><br /><strong>Changing the label of a field at runtime<br /></strong><br />Lets say you want to change the label of the revenue field, then you simply write<br /><br />crmForm.all.revenue_c.innerText = "Amount Euro";<br />Simply append the "_c" to the field name. This should work for most labels. </span><br /><span style="font-family:arial;"><br /><strong>Changing the colour of a single option in a picklist</strong><br /><br />You can change the colour and background colour of an option element using the following syntax://TODO: Replace <name of your picklist field> with the schema name of the picklist in question.var list = crmForm.all.<name of your picklist field>;<br />//using the first option here, you need to find the one you need.var option = list.options[0];<br />//Set the background colour to red.option.style.backgroundColor = "#FF0000";<br />//Set the text colour to white.option.style.color = "#FFFFFF";<br />Opening a new window without the IE menu and status bars<br /><br />The following is a sample HTML page that you can use to test. Replace the link with the URL of your web page.<br /><br /><html><br /><head/><br /><body><br /><p><a href="javascript:;" onClick="window.open('http://www.domain.com/crm','domain','toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes'); return false">Domain</a><br /></p><br /></body><br /></html><br /><br /><br /><br /><br /><strong>Retrieving the text of a lookup control</strong><br /><br />var lookup = crmForm.all.<lookupfield>.DataValue;if (lookup[0] != null) { var theText = lookup[0].name;}<br /><strong></strong><br /><strong>Disabling a form at runtime</strong><br /><br />document.body.disabled = true;<br /><br />This will disable all controls except the Notes tab, where you still can enter new notes.<br /><br /><strong>Automatically changing the value of a text field to capitals</strong><br />Put the following script in the OnChange event of the text field:<br /><br />crmForm.all.<name of text field>.DataValue = crmForm.all.<name of text field>.DataValue.toUpperCase();<br /><br /><strong>Getting notified when the user selects a another tab on a form</strong><br />Put the following in the OnLoad event of your form:<br /><br />crmForm.all.tab0Tab.onclick = function()<br />{<br />alert("Tab 0 clicked");<br />}<br />crmForm.all.tab1Tab.onclick = function()<br />{<br />alert("Tab 1 clicked");<br />}<br /><br />It seems that the tab pages are always named "tabxTab", where x is a number starting from 0 (first tab) to (n-1), where n is the total number of tabs. Maybe you find better events that handle the activation instead of a click, but that's the general way it should work.<br />The current record id<br />The primary key is always available in<br />crmForm.ObjectId<br />It is set to null, if the record hasn't been saved yet. There are some other useful properties. Look at the "Form Object Model" in the SDK docs for more information.<br />The current object type code<br />The type code of the entity being displayed in a CRM form is available through<br /><br />crmForm.ObjectTypeCode<br /><br />There are some other useful properties. Look at the "Form Object Model" in the SDK docs for more information.<br /><br /><br />&#8195;<br /><br /><strong>Initializing a date field with the current date</strong><br /><br />crmForm.all.<attribute>.DataValue = new Date();<br />Changing the URL of an IFRAME at runtime<br /><br /><strong>Set the initial URL of the IFRAME to about:blank and execute the following line:</strong><br /><br />document.all.IFRAME_<name of iframe>.src = http://domain/file;<br /><strong>Displaying a picture in a CRM form, using a text field to store the data source</strong><br /><br />Let's say you have a custom field storing the image name called new_pictureName. Then in the OnLoad event do the following:<br /><br />if ((crmForm.all.new_pictureName != null) && (crmForm.all.new_pictureName.DataValue != null))<br />{<br />document.all.IFRAME_<name of iframe>.src = http://server/dir/images/ + crmForm.all.new_pictureName.DataValue;<br />}<br /><br />In the OnChange event of the new_pictureName place the following:<br /><br />if (crmForm.all.new_pictureName.DataValue != null)<br />{<br />document.all.IFRAME_<name of iframe>.src = http://server/dir/images/ + crmForm.all.new_pictureName.DataValue;<br />}<br />else<br />{<br />document.all.IFRAME_<name of iframe>.src = "about:blank"}<br /><br />Checking crmForm.all.new_pictureName for null in the OnLoad event is a sanity check. Bulk edit forms will not display all fields and if it is not contained in the form, it will be null. This check is not required in the OnChange event, as this event will never fire if the field does not exist.<br /><br /><strong>Changing the default lookup type</strong><br /><br />When opening a lookup that can select from multiple entity types, you may want to use a different default entity in the lookup dialog. The following script changes the default entity of the regardingobjectid field in an activity to contacts:<br />if (crmForm.all.regardingobjectid != null)<br />{<br />crmForm.all.regardingobjectid.setAttribute("defaulttype", "2");<br />}<br />Checking if a field is present in a form<br />if (crmForm.all.<name of field> != null)<br />{<br />//do your JavaScript processing here}<br /><br />You should always check if a field is present before accessing it, because your script may throw an exception if it is not included in a form (like in quick create forms if your field is not required or recommended).<br />Calculating a date field based upon the selection of a picklist<br />The following script assumes that you have a picklist with three values: "1 year", "2 years" and "3 years".<br /><br />var years = 0;<br />switch(crmForm.all.<name of picklist field>.DataValue)<br />{<br />//You need to check the picklist values if they have the values 1, 2 and 3. Look at the attribute in the entity customization and note the option values.<br />case "1": years = 1;<br />break;<br />case "2": years = 2;<br />break;<br />case "3": years = 3;<br />break;<br />}<br />if (years != 0)<br />{<br />var date = new Date();<br />date.setYear(date.getYear() + years);<br />crmForm.all.<name of date field>.DataValue = date;<br />}<br /><br /><strong>Creating a new email when double-clicking a standard text field</strong><br /><br />if (crmForm.all.<name of text field> != null)<br />{<br />crmForm.all.<name of text field>.ondblclick = function()<br />{<br />var email = crmForm.all.<name of text field>.DataValue;<br />if ((email != null) && (email.length > 0))<br />{<br />window.navigate("mailto:" + email);<br />}<br />}}<br />Resetting a field value if validation fails<br />In the OnLoad event, place the following code:<br /><br />crmForm.all.<field to check>.setAttribute("lastKnownGood", crmForm.all.<field to check>.DataValue);<br /><br />This adds a new attribute to field for later access. In the OnChange event put the following:<br /><br />//checkFailed contains either true or false and must be set to the result of your validation routineif (checkFailed)<br />{<br />crmForm.all.<field to check>.DataValue = crmForm.all.fieldToCheck.getAttribute("lastKnownGood");<br />else<br />{<br />crmForm.all.<field to check>.setAttribute("lastKnownGood", crmForm.all.fieldToCheck.DataValue);<br />}<br /><br /><strong>Inserting line breaks in a text area control</strong><br />Put the following in the OnLoad event:<br /><br />crmForm.all.<your text field>.style.whiteSpace = "pre";<br /><strong></strong><br /><strong>Hiding an entire row of a CRM form<br /></strong><br />//the field you want to hidevar field = crmForm.all.name;//search the enclosing table rowwhile ((field.parentNode != null) && (field.tagName.toLowerCase() != "tr"))<br />{<br />field = field.parentNode;<br />}<br />//if we found a row, disable itif (field.tagName.toLowerCase() == "tr")<br />{<br />field.style.display = "none";<br />}<br /><br /><strong>Disabling the time selection of a date/time field</strong><br /><br />You can dynamically enable or disable the time selection box of a date/time field using the following syntax:<br />var dateField = crmForm.all.<name of datetime field>;<br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (dateField.all.time != null)<br />{<br />//Disable the time field<br />dateField.all.time.disable();<br />//Enable the time field<br />dateField.all.time.enable();<br />}<br />CRM automatically enables the time selection box if the date value changes to a non-null value, so in order to always disable the time selection box, you need to add the following OnChange event script to the datetime field:<br />var dateField = crmForm.all.<name of datetime field>;<br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (dateField.all.time != null)<br />{<br />//Disable the time field<br />dateField.all.time.disable();<br />}<br />To initially disable the time field, put the following into the form OnLoad event:<br />var dateField = crmForm.all.<name of datetime field>;<br />//Check the existence of the datetime field. It may not be included in a quick create form!<br />if (dateField != null)<br />{<br />//Call the OnChange event handler<br />dateField.FireOnChange();<br />}<br /><br /><strong>Changing the time interval in date/time fields</strong><br /><br />The time selection box of a date/time field uses a 30 minute interval. You can change it to a different interval using the following code in an OnLoad event:<br /><br />var dateField = crmForm.all.<name of datetime field>;<br />//Check the existence of the datetime field. It may not be included in a quick create form!<br />if (dateField != null)<br />{<br />var timeField = dateField.all.time;<br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (timeField != null)<br />{<br />//The new interval in minutes.<br />var interval = 15;<br />var tables = timeField.getElementsByTagName("table");<br />if ((tables != null) && (tables.length > 0))<br />{<br />var table = tables[1];<br />//Remove all existing values from the selection box while (table.firstChild != null)<br />{<br />table.removeChild(table.firstChild);<br />}<br />//Add the new values for (hour = 0; hour < 24; hour++)<br />{<br />for (min = 0; min < 60; min += interval)<br />{<br />var row = table.insertRow();<br />var cell = row.insertCell();<br />var time = ((hour < 10) ? "0" : "") + hour + ":" + ((min < 10) ? "0" : "") + min;<br />cell.setAttribute("val", time);<br />cell.innerText = time;<br />}<br />}<br />}<br />}<br />}<br /><br /><strong>Getting the quote id inside a quotedetail form</strong><br /><br />There's a hidden field in the quotedetail form storing the quote id. You can access it using<br />alert("Quote ID = " + crmForm.all.quoteid.DataValue);<br />How to know which button triggered the OnSave event<br />You can use the event.Mode property in the OnSave event. It will tell you which button was used to save an entity. Not all values are documented in the SDK, e.g the "Save as completed" in a phone call has a value of 58. As it's not documented, this number may change in future releases.<br />To get started enter the following into your OnSave script:<br />alert ("event.Mode = " + event.Mode);<br />event.returnValue = false;<br />return false;<br />This codes makes it impossible to save the entity, but allows you to write down all of the values passed to OnSave. You will see 1 for a normal save operation and 2 for Save and Close. Most but not all constants are defined in /_common/scripts/formevt.js.<br />Accessing the CRM database from JavaScript<br />To access the CRM database from JavaScript, use the following as a template:<br />var connection = new ActiveXObject("ADODB.Connection");<br />var connectionString = "Provider=SQLOLEDB;Server=xxxxx;Database=xxxx_mscrm;Integrated Security=sspi";<br />connection.Open(connectionString);<br />var query = "SELECT name FROM FilteredAccount";<br />var rs = new ActiveXObject("ADODB.Recordset");<br />rs.Open(query, connection, /*adOpenKeyset*/1, /*adLockPessimistic*/2);<br />rs.moveFirst();<br />var values = "";<br />while (!rs.eof)<br />{<br />values += rs.Fields(0).Value.toString() + " ";<br />rs.moveNext();<br />}<br />connection.Close();<br />alert(values);<br />You may need to adjust your security settings in IE in order to run this code.<br /><br /><strong>Modifying the Quick Create Form</strong><br /><br />Allthough the quick create form isn't listed in the forms and views dialog, it uses the same scripts entered in the main application form. You can use the following in the OnLoad script to run code when inside of a quick create form:<br /><br />if (crmForm.FormType == 5 /* Quick Create Form */)<br />{<br />//modify the form using DHTML<br />}<br />Forcing the selection of an account in the potential customer field of an opportunity<br />Put the following into the opportunity's OnLoad event:<br />crmForm.all.customerid.setAttribute("lookuptypes", "1");<br />This tells the customer lookup to only include the account (object type code 1). A value of 2 forces the lookup to only display contacts.<br /><br /><br /><strong>Hiding and showing fields dynamically based on other field values</strong><br /><br />You can do this in client-side JavaScript. Let's say you have a picklist named "new_category" and you have assigned the following options to it:<br />1 – Business<br />2 – Private<br />3 - Unspecified<br />Let's further assume that you want to hide the fields "new_a" and "new_b" whenever a user selects "Private", but they should be visible if a different option is selected in the picklist. Your OnChange event script of the new_category field will be:<br /><br />var hideValues = (crmForm.all.new_category != null) && (crmForm.all.new_category.DataValue == "2");<br />var displayStyle = hideValues ? "none" : "";<br />crmForm.all.new_a.style.display = displayStyle;<br />crmForm.all.new_b.style.display = displayStyle;<br /><br />To run the code when the form is initially loaded, put the following into the OnLoad event:<br /><br />if (crmForm.all.new_category != null)<br />{<br />crmForm.all.new_category.FireOnChange();<br />}<br />The test for a null value of crmForm.all.new_category is included to avoid errors if the field is not available on a form. This is true for quick create forms if the field required level is not set to business required or business recommended.<br />Removing the value from a lookup field<br />crmForm.all.<lookupField>.DataValue = null;<br />Hiding tabs at runtime<br />You can hide and show entire tabs dynamically using the following code:<br />//Add your condition here, usually a field comparison in an OnChange event<br />if (condition == true)<br />{<br />//hide the second tab<br />crmForm.all.tab1Tab.style.display = "none";<br />}<br />else<br />{<br />//show the second tab<br />crmForm.all.tab1Tab.style.display = "";<br />}<br />The tabs are named "tab0Tab", "tab1Tab", "tab2Tab" and so on.<br /><br /><strong>Setting the active tab</strong><br /><br />From the SDK docs:SetFocus: Sets the focus, changes tabs, and scrolls the window as necessary to show the specified field. Example:<br />// Set focus to the field.<br />crmForm.all.SOME_FIELD_ID.SetFocus();<br /><br /><strong>Displaying related entities instead of the form when opening a record</strong><br /><br />To open a related entity view of the left navigation bar (like contacts in an account entity), you can use the following:<br />loadArea("areaContacts");<br />Each entry in the navigation bar has a unique area name (areaContacts is just a sample). If you haven't already done it, download and install the Internet Explorer Developer Toolbar to find the name of the entry you're after. Some instructions on how to use it are in http://www.stunnware.com/crm2/topic.aspx?id=CrmLookAndFeel1; though it is a different topic, I included some screenshots using the developer toolbar in CRM.<br /><br /><strong>Modifying the color of disabled form fields</strong><br /><br />Disabled form fields are sometimes hard to read. Making the color a little bit darker greatly helps to read all of the content without loosing the information that a field is read-only.<br />Open the following file in your CRM web: /_forms/controls/controls.css. Then find the following style:<br />INPUT.ro,TEXTAREA.ro,DIV.ro,SPAN.ro<br />{<br />background-color: #ffffff;<br />color: #808080;<br />border-color: #808080;<br />}<br />The color attribute is the light gray you're seeing by default. You may change it to #404040 to get a slightly darker gray. If you don't see the new colors in IE, hit CTRL-F5 to reload the source files, including the updated css file.<br />Removing a navigation bar entry at runtime<br />To remove a navigation bar entry dynamically, you can use the following code:<br />var navigationBarEntry = document.getElementById("navProds");<br />if (navigationBarEntry != null)<br />{<br />var lbArea = navigationBarEntry.parentNode;<br />if (lbArea != null)<br />{<br />lbArea.removeChild(navigationBarEntry);<br />}<br />}<br />If you haven't already done it, download and install the Internet Explorer Developer Toolbar to find the name of the navigation bar entry.<br /><br /><strong>Changing the colour of a label</strong><br /><br />var label = crmForm.all.<field name>_c;<br />label.innerHTML = "<font colour='#FF0000'>" + label.innerText + "</font>";<br /><br /><br /></span><span style="font-family:arial;"></span><span style="font-family:arial;"><p><br /><strong>Hide a section on a form</strong><br />crmForm.all.new_attribute_c.parentElement.parentElement.parentElement.style.display = 'none' </p><p><br /><strong>To show the section again:</strong><br />crmForm.all.new_attribute_c.parentElement.parentElement.parentElement.style.display = 'block'<br /><br /><strong>AJAX - CRM 3 only</strong><br />checkResult = function()<br />{<br />var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />oXmlDoc.async = false;<br />var s;<br />s = "http://localhost:5555/adv_postback.aspx?fundid=" + crmForm.all.adv_fundid.DataValue[0].id;<br />oXmlDoc.load(s);<br />var oNode = oXmlDoc.selectSingleNode("results/fundcode");<br />if (oNode != null)<br />{<br />res = oNode.text;<br />crmForm.all.adv_adminno.DataValue = res<br />}<br />}<br />Maximise Screen<br />if (window.screen)<br />{<br />var aw = screen.availWidth;<br />var ah = screen.availHeight;<br />window.moveTo(0, 0);<br />window.resizeTo(aw, ah);<br />}<br /><strong>Date Functions</strong><br />var currentTime = new Date()<br />var month = currentTime.getMonth() + 1<br />var day = currentTime.getDate()<br />var year = currentTime.getFullYear()<br />document.write(month + "/" + day + "/" + year)<br />var currentTime = new Date()<br />var hours = currentTime.getHours()<br />var minutes = currentTime.getMinutes()<br />if (minutes < 10)<br />minutes = "0" + minutes<br />document.write(hours + ":" + minutes + " ")<br />if(hours > 11)<br />{<br />document.write("PM")<br />}<br />else<br />{<br />document.write("AM")<br />}<br />getTime() - Number of milliseconds since 1/1/1970 @ 12:00 AM<br />getSeconds() - Number of seconds (0-59)<br />getMinutes() - Number of minutes (0-59)<br />getHours() - Number of hours (0-23)<br />getDay() - Day of the week(0-6). 0 = Sunday, ... , 6 = Saturday<br />getDate() - Day of the month (0-31)<br />getMonth() - Number of month (0-11)<br />getFullYear() - The four digit year (1970-9999)<br />MAKE THE RECIPIENT BLANK FOR NEW EMAILS<br />var CRM_CREATE_FORM = 1;<br />var formType = crmForm.FormType;<br />if(formType == CRM_CREATE_FORM)<br />{<br />crmForm.all.to.DataValue = null;<br />}<br /><br /><strong>FORMAT PHONE NUMBER</strong> </p><p><br />// Attempt to auto-format basic US phone numbers. This method supports<br />// 7 and 10 digit numbers. Example: (410) 555-1212<br />// Get the field that fired the event<br />var oField = event.srcElement;<br />// If we have the field and all is well<br />if (typeof(oField) != "undefined" && oField != null)<br />{<br />// Remove any non-numeric characters<br />var sTmp = oField.DataValue.replace(/[^0-9]/g, "");<br />// If the number is a length we expect and support, format the number<br />switch (sTmp.length)<br />{<br />case "4105551212".length:<br />oField.DataValue = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4);<br />break;<br />case "5551212".length:<br />oField.DataValue = sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4);<br />break;<br />}<br />} </p><p><br /><strong>CONFIRM SAVE</strong> </p><p><br />if (confirm("Are you sure you want to save this Stakeholder Contact?"))<br />{<br />//save the form.<br />}<br />else<br />{<br />event.returnValue = false;<br />validationErrors = true;<br />}<br />&#8195; </p><p><br /><strong>HIDE CONVERT BUTTON ON LEAD </strong></p><strong><p><br /></strong>var myField = crmForm.all.leadqualitycode.DataValue;<br />switch(crmForm.FormType)<br />{<br />case 1:<br />case 2:<br />case 3:<br />case 4:<br />case 5:<br />case 6:<br />break;<br />case 2:<br />if(myField == [ValueThatEqualsYes])<br />{<br />var btConvert = "_MBconvertLead";<br />var menuButton = document.getElementById(btConvert);<br />if (menuButton != null)<br />{<br />menuButton.style.display='';<br />}<br />}<br />else<br />{<br />var btConvert = "_MBconvertLead";<br />var menuButton = document.getElementById(btConvert);<br />if (menuButton != null)<br />{<br />menuButton.style.display='none';<br />}<br />}<br />break;<br />} </p><p><br /><strong>MAKE THE TAB TITLE BLUE</strong> </p><p>crmForm.all.tab0Tab.style.backgroundColor="blue"; </p><p><strong>SHOW NUMBER OF NOTES ON THE NOTES TAB (CRM 3)</strong><br />This is in the form load event of the aspx page:<br />Dim NoteCount As Integer, ID As String, SQL As String, _ con As SqlConnection, com As SqlCommand, ds As New DataSet<br />ID = Request("ID")<br />SQL = "Select count(*) from annotation where ObjectID='" + ID + "'"<br />con = New SqlConnection<br />con.ConnectionString = "server=galatea;database=IOM_MSCRM;User Id=crmcustom;Password=crm@custom;"<br />con.Open()<br />com = New SqlCommand<br />com.CommandText = SQL<br />com.Connection = con<br />Dim da As New SqlDataAdapter(com)<br />da.Fill(ds)<br />For Each dr As DataRow In ds.Tables(0).Rows<br />NoteCount = dr.Item(0)<br />Next<br />con.Close()<br />Response.Clear()<br />Response.ContentType = "textXML"<br />Response.Write("<results><result>" & NoteCount & "</result></results>")<br />Response.End()<br />This is in the form load event of the CMR form:<br />DISPLAY NUMBER OF NOTES<br />var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />oXmlDoc.async = false; // We want to wait for a response<br />var site;<br />site = window.location.protocol + "//" + window.location.host + "/ISP_IOM/CountNotes.aspx?id=" + crmForm.ObjectId<br />oXmlDoc.load(site);<br />var oNode = oXmlDoc.selectSingleNode("results/result");<br />if (oNode != null)<br />{<br />res = oNode.text;<br />crmForm.all.tab3Tab.innerText = "Notes (" + res + ")";<br />} </p><p><br /><strong>CHECK FOR . IN STRING</strong> </p><p><br />if (myString.indexOf(".")>=0)<br />{<br />alert("yes!");<br />}<br />else<br />{<br />alert("no!");<br />}<br />window.alert('demoalert');<br /><br /><br /><strong>Buttons</strong><br />This is an example on how to create a button on the form, using java script. First of all we need to create a nvarchar attribute and put it on the form where we want our button. I assume that everybody knows how to create an attribute and put in on the form, so i won't talk about this.<br />In this example my attribute's schema name is new_button. Here is the code:<br />// This is how we call the button, what we see<br />crmForm.all.new_button.DataValue = "Ok";<br />// We could align it a bit<br />crmForm.all.new_button.style.textAlign = "center";<br />crmForm.all.new_button.vAlign = "middle";<br />//we make the mouse look as a hand when we're moving over<br />crmForm.all.new_button.style.cursor = "hand";<br />crmForm.all.new_button.style.backgroundColor = "#CADFFC";<br />crmForm.all.new_button.style.color = "#FF0000";<br />crmForm.all.new_button.style.borderColor = "#330066";<br />crmForm.all.new_button.style.fontWeight = "bold";<br />crmForm.all.new_button.contentEditable = false;<br />//we attach some events in order to make it look nice :)<br />crmForm.all.new_button.attachEvent("onmousedown",color1);<br />crmForm.all.new_button.attachEvent("onmouseup",color2);<br />crmForm.all.new_button.attachEvent("onmouseover",color3);<br />crmForm.all.new_button.attachEvent("onmouseleave",color4);<br />function color3()<br />{<br />crmForm.all.new_button.style.backgroundColor = "#6699FF";<br />}<br />function color4()<br />{<br />crmForm.all.new_button.style.backgroundColor = "CADFFC";<br />}<br />function color1()<br />{<br />crmForm.all.new_button.style.color = "000099";<br />}<br />function color2()<br />{<br />crmForm.all.new_button.style.color = "FF0000";<br />}<br />//here we attach what we want our button do<br />crmForm.all.new_button.attachEvent("onclick",someFunction);<br />&#8195; </p><p><br /><strong>Integer Validation</strong><br />This script Validates weather an entry is an integer field or not using the isNAN function<br />var my_string= crmForm.all.new_accountnumber.DataValue<br />if(isNaN(my_string))<br />{<br />alert ("Please do not enter text into the account number field");<br />event.returnValue = false;<br />}<br />else<br />{alert("Account Number Accepted ");<br />if (crmForm.all.new_accountnumber.DataValue.length != 11)<br />{<br />alert ("Please enter in a numeric account number that is 11 digits long");<br />event.returnValue = false;<br />}<br />}<br /><br /><strong>Replacing the content of an IFRAME</strong><br />If you really want to do some funny things in your CRM form, you can create an IFRAME serving as a placeholder for your real HTML code. Create an IFRAME in an entity and name it "IFRAME_TEST". In the Onload event put the following code:<br />crmForm.all.IFRAME_TEST_d.innerHTML ="<b>Some HTML text</b>";<br />Note the "_d" at the end of IFRAME_TEST. This single line replaces the whole IFRAME element with your own HTML.<br /><strong>Adding additional values to duration fields</strong><br />The following script adds the new option "42 Minutes" to the actualdurationminutes field in a task:<br />var duration = crmForm.all.actualdurationminutesSelect;<br /><br />var tables = duration.getElementsByTagName("table");<br />var table = tables[1];<br /><br />var row = table.insertRow();<br />var newOption = row.insertCell(-1);<br /><br />var newValue = "42 Minutes";<br />newOption.setAttribute("val", newValue);<br />newOption.innerText = newValue; </p><p><br /><strong>Changing the title of a CRM form</strong><br />document.title = "Hello World!"; </p><p><br /><strong>Changing the Link of a Ticker Symbol from MSN Money to Yahoo Finances</strong><br />This is an unsupported solution as it requires modifications to server files!<br />Open the following directory on your CRM server: C:Inetpubwwwroot_formscontrols (may vary depending on your installation)<br />Open the following file: INPUT.text.ticker.htc<br /><br />Search the following function:<br />function Launch()<br />{<br />if(value.length > 0)<br />{<br />Parse();<br /><br />window.open("http://go.microsoft.com/fwlink?linkid=8506&Symbol=" +<br />encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) +<br />",width=" + (screen.availWidth * .75) +<br />,scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1");<br />}<br />}<br />Replace it with the following:<br />function Launch()<br />{<br />if(value.length > 0)<br />{<br />Parse();<br /><br />//window.open("http://go.microsoft.com/fwlink?linkid=8506&Symbol=" +<br />encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) +<br />",width=" + (screen.availWidth * .75) +<br />,scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1");<br />window.open("http://finance.yahoo.com/q?s=" +<br />encodeURIComponent(value), "", "height=" + (screen.availHeight * .75) +<br />",width=" + (screen.availWidth * .75) +<br />",scrollbars=1,resizable=1,status=1,toolbar=1,menubar=1,location=1");<br />}<br />}<br />Save the file.<br /><br />On your client machine: Open Internet Explorer and remove all temporary internet files, so that the new htc source is retrieved. Navigate to any ticker symbol, enter a valid value and double click it. </p><p><br /><strong>Counting the number of backslashes in a string</strong><br />Of course you can use the two code snippets with any character you like.<br /><strong>Solution 1</strong><br />var text = "hardware\printers\Epson";<br />var paths = text.split("\");<br />alert(paths.length -1);<br />Solution 2)<br />var text = "hardware\printers\Epson";<br />var numBs = 0;<br />var index = 0;<br /><br />while(index != -1) {<br />index = text.indexOf("\", index);<br /><br />if (index != -1) {<br />numBs++;<br />index++;<br />}<br />}<br /><br />alert(numBs); </p><p><br /><strong>Changing the label of a field at runtime</strong><br />Lets say you want to change the label of the revenue field, then you simply write<br />crmForm.all.revenue_c.innerText = "Amount Euro";<br />Simply append the "_c" to the field name. This should work for most labels.<br /><strong></strong></p><p><strong>Changing the color of a single option in a picklist</strong><br />You can change the color and background color of an option element using the following syntax:<br /><br />//TODO: Replace <name of your picklist field> with the schema name of the picklist in question.<br />var list = crmForm.all.<name of your picklist field>;<br /><br />//using the first option here, you need to find the one you need.<br />var option = list.options[0];<br /><br />//Set the background color to red.<br />option.style.backgroundColor = "#FF0000";<br /><br />//Set the text color to white.<br />option.style.color = "#FFFFFF";<br />Opening a new window without the IE menu and status bars<br />The following is a sample HTML page that you can use to test. Replace the link with the URL of your web page.<br /><html><br /><head/><br /><body><br /><p><br /><a href="javascript:;"<br />onClick="window.open('http://www.stunnware.com/crm','stunnware','toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes');<br />return false">Stunnware</a><br /></p><br /></body><br /></html><br />Retrieving the text of a lookup control<br />var lookup = crmForm.all.<lookupfield>.DataValue;<br /><br />if (lookup[0] != null) {<br />var theText = lookup[0].name;<br />} </p><p><br /><strong>Disabling a form at runtime</strong><br />document.body.disabled = true;<br />This will disable all controls except the Notes tab, where you still can<br />enter new notes. </p><p><br /><strong>Automatically changing the value of a text field to capitals</strong><br />Put the following script in the OnChange event of the text field:<br />crmForm.all.<name of text field>.DataValue = crmForm.all.<name of text field>.DataValue.toUpperCase(); </p><p><br /><strong>Getting notified when the user selects a another tab on a form</strong><br />Put the following in the OnLoad event of your form:<br />crmForm.all.tab0Tab.onclick = function() {<br />alert("Tab 0 clicked");<br />}<br /><br />crmForm.all.tab1Tab.onclick = function() {<br />alert("Tab 1 clicked");<br />}<br />It seems that the tab pages are always named "tabxTab", where x is a number starting from 0 (first tab) to (n-1), where n is the total number of tabs. Maybe you find better events that handle the activation instead of a click, but that's the general way it should work.<br />The current record id<br />The primary key is always available in<br />crmForm.ObjectId<br />It is set to null, if the record hasn't been saved yet. There are some other useful properties. Look at the "Form Object Model" in the SDK docs for more information.<br />The current object type code<br />The type code of the entity being displayed in a CRM form is available through<br />crmForm.ObjectTypeCode<br />There are some other useful properties. Look at the "Form Object Model" in the SDK docs for more information. </p><p><br /><strong>Initializing a date field with the current date<br /></strong>crmForm.all.<attribute>.DataValue = new Date(); </p><p><br /><strong>Changing the URL of an IFRAME at runtime</strong><br />Set the initial URL of the IFRAME to about:blank and execute the following line:<br />document.all.IFRAME_<name of iframe>.src = <a href="http://domain/file">http://domain/file</a>; </p><p><br /><strong>Displaying a picture in a CRM form, using a text field to store the data source</strong><br />Let's say you have a custom field storing the image name called new_pictureName. Then in<br />the OnLoad event do the following:<br />if ((crmForm.all.new_pictureName != null) && (crmForm.all.new_pictureName.DataValue != null)) {<br />document.all.IFRAME_<name of iframe>.src = http://server/dir/images/ + crmForm.all.new_pictureName.DataValue;<br />}<br />In the OnChange event of the new_pictureName place the following:<br />if (crmForm.all.new_pictureName.DataValue != null) {<br />document.all.IFRAME_<name of iframe>.src = http://server/dir/images/ +<br />crmForm.all.new_pictureName.DataValue;<br />}<br /><br />else {<br />document.all.IFRAME_<name of iframe>.src = "about:blank"<br />}<br />Checking crmForm.all.new_pictureName for null in the OnLoad event is a sanity check. Bulk edit forms will not display all fields and if it is not contained in the form, it will be null. This check is not required in the OnChange event, as this event will never fire if the field does not exist. </p><p><br /><strong>Changing the default lookup type</strong><br />When opening a lookup that can select from multiple entity types, you may want to use a different default entity in the lookup dialog. The following script changes the default entity of the regardingobjectid field in an activity to contacts:<br />if (crmForm.all.regardingobjectid != null) {<br />crmForm.all.regardingobjectid.setAttribute("defaulttype", "2");<br />}<br />Checking if a field is present in a form<br />if (crmForm.all.<name of field> != null) {<br />//do your JavaScript processing here<br />}<br />You should always check if a field is present before accessing it, because your script may throw an exception if it is not included in a form (like in quick create forms if your field is not required or recommended). </p><p><br /><strong>Calculating a date field based upon the selection of a picklist</strong><br />The following script assumes that you have a picklist with three values: "1 year", "2 years" and "3 years".<br />var years = 0;<br /><br />switch(crmForm.all.<name of picklist field>.DataValue) {<br /><br />//You need to check the picklist values if they have the values 1, 2 and 3. Look at the attribute in the entity customization and note the option values.<br />case "1":<br />years = 1;<br />break;<br /><br />case "2":<br />years = 2;<br />break;<br /><br />case "3":<br />years = 3;<br />break;<br />}<br /><br />if (years != 0) {<br /><br />var date = new Date();<br />date.setYear(date.getYear() + years);<br /><br />crmForm.all.<name of date field>.DataValue = date;<br />}<br />Creating a new email when double-clicking a standard text field<br />if (crmForm.all.<name of text field> != null) {<br /><br />crmForm.all.<name of text field>.ondblclick = function() {<br /><br />var email = crmForm.all.<name of text field>.DataValue;<br /><br />if ((email != null) && (email.length > 0)) {<br />window.navigate("mailto:" + email);<br />}<br />}<br />} </p><p><br /><strong>Resetting a field value if validation fails</strong><br />In the OnLoad event, place the following code:<br />crmForm.all.<field to check>.setAttribute("lastKnownGood", crmForm.all.<field to check>.DataValue);<br />This adds a new attribute to field for later access. In the OnChange event put the following:<br />//checkFailed contains either true or false and must be set to the result of your validation routine<br />if (checkFailed) {<br />crmForm.all.<field to check>.DataValue = crmForm.all.fieldToCheck.getAttribute("lastKnownGood");<br />}<br /><br />else {<br />crmForm.all.<field to check>.setAttribute("lastKnownGood", crmForm.all.fieldToCheck.DataValue);<br />} </p><p><br /><strong>Inserting line breaks in a text area control</strong><br />Put the following in the OnLoad event:<br />crmForm.all.<your text field>.style.whiteSpace = "pre"; </p><p><br /><strong>Hiding an entire row of a CRM form</strong><br />//the field you want to hide<br />var field = crmForm.all.name;<br /><br />//search the enclosing table row<br />while ((field.parentNode != null) && (field.tagName.toLowerCase() != "tr")) {<br />field = field.parentNode;<br />}<br /><br />//if we found a row, disable it<br />if (field.tagName.toLowerCase() == "tr") {<br />field.style.display = "none";<br />}<br />It's been a while since I posted these small JavaScript snippets (More JavaScript Code, More JavaScript Code Part 2), so after half a year I'm adding the third part today, containing 23 new samples. Hope you find it as useful as the first two articles. </p><p><br /><strong>Setting the background color of a CRM form</strong><br />If you want to make it easier for a user to note what type of entity a CRM form is displaying, you can change the background color with only one line of code:<br />document.body.style.backgroundColor = 'red';<br />Put it into the OnLoad event of the form you want to change and replace 'red' with the color of your choice.<br />Why can't we use VBScript to write client-side code?<br />As CRM is a web application, client-side code deals with DHTML objects and the supported languages in IE are JavaScript and VBScript. JavaScript is the standard used in the internet, while VBScript is IE only, so it will never work with any browser other than IE.<br />One could argue that CRM is tied to IE6 and above, but allowing and supporting VBScript would make it impossible for the product team to even think about supporting other browsers. I never saw an official statement as to why VBScript is not supported though.<br />Some calculated fields on the CRM form are not saved in the database<br />If the field is disabled, which is a common practice for calculated fields, it is not sent to the server when the form is saved. To override this behavior, add this line to your code:<br />crmForm.all.your_field.ForceSubmit = true; </p><p><br /><strong>Changing detailed tooltips when hovering over fields in a CRM form<br /></strong>This article explains in depth how to do it: http://blogs.msdn.com/crm/archive/2006/11/17/using-the-attachevent-method-to-show-users-context-sensitive-help.aspx<br />Fixing problems with orphaned OnChange event handlers<br />When changing entire field definitions in client-side script (e.g. Overcoming relationship restrictions in Microsoft CRM v3.0 or Converting the country field to a combobox) the OnChange event code may not be triggered.<br />To overcome this situation, place the following in your script after you have replaced the HTML code:<br />crmForm.all.your_field.onchange = function() {<br />//add code here<br />}<br />If you need to initially call the OnChange code, use this instead:<br />your_field_OnChange = function() {<br />//add code here<br />}<br /><br />//attaching the event<br />crmForm.all.your_field.onchange = your_field_OnChange;<br /><br />//calling the event (same idea as FireOnChange())<br />your_field_OnChange(); </p><p><br /><strong>Setting the field required level at runtime</strong><br />You can access the current required level of any field by using the RequiredLevel property:<br />var reqLevel = crmForm.all.your_Field.RequiredLevel.<br />However, as it is a read-only property, you cannot use it to change the required level. There is an undocumented (and therefore unsupported) method on the crmForm object allowing to make a field required or not required:<br />function SetFieldReqLevel(sField, bRequired)<br />If bRequired is set to 0 (false), it is not required. If bRequired is set to anything else (true), the field is required.<br />Note: you cannot use this method to make a field business recommended. Here's the code to set a field to any of the possible states:<br />//No Requirement<br />//------------------------------<br />crmForm.all.your_field.setAttribute("req", 0);<br />crmForm.all.your_field_c.className = "n";<br /><br />//Recommended<br />//------------------------------<br />crmForm.all.your_field.setAttribute("req", 1);<br />crmForm.all.your_field_c.className = "rec";<br /><br />//Required<br />//------------------------------<br />crmForm.all.your_field.setAttribute("req", 2);<br />crmForm.all.your_field_c.className = "req";<br />Replace "your_field" and "your_field_c" with the name of the field you want to set, e.g. to set the accountnumber field to business recommended, you specify<br />crmForm.all.accountnumber.setAttribute("req", 1);<br />crmForm.all.accountnumber_c.className = "rec";<br />Setting a default time in a date field<br />A date field in a CRM form always contains a date part and optionally a time part. Sometimes it is useful to set a default time, like 8:30am, but unless the user has entered a valid date, the time selection box is disabled. Here's the code to set the default time once the user has specified the date part:<br />OnLoad<br />----------------------------------------<br />//check if the field exists on the form<br />if (crmForm.all.your_DateField != null) {<br />//save the value for future reference. Note that it is a global variable.<br />_previousValue = crmForm.all.your_DateField.DataValue;<br />}<br />OnChange of your date field<br />----------------------------------------<br />var dateField = crmForm.all.your_DateField;<br />var currentValue = dateField.DataValue;<br /><br />//If the user changes the date field from null to a valid date, set the<br />//time portion to 8:30<br />if ((currentValue != null) && (_previousValue == null)) {<br />dateField.DataValue = new Date(currentValue.getYear(), currentValue.getMonth(), currentValue.getDate(), 8, 30);<br />}<br /><br />//update _previousValue<br />_previousValue = currentValue;<br />I tried it with the scheduledend field of a task and it worked. The time combo of the scheduledend field is disabled as long as you put a date into the date field. This triggers the OnChange event and sets the default time.<br />User interaction with yes/no style message boxes<br />You can use window.confirm to present the user a yes/no-style dialog. The buttons are actually named "Ok" and "Cancel", so you have to use a good explanation in the message text. The result is either true (Ok) or false (Cancel):<br />var answer = window.confirm("Click Ok to proceed or Cancel to abort the operation.");<br /><br />if (answer) {<br />//User selected OK<br />}<br /><br />else {<br />//User selected Cancel<br />}<br />Testing if a lookup field has a value<br />It's the same as as for any other field type:<br />if (crmForm.all.your_field.DataValue == null) {<br />//code here<br />} </p><p><br /><strong>Comparing date values</strong><br />It is a common mistake to directly compare two date values like this:<br />var date1 = new Date(2007, 4, 30);<br />var date2 = new Date(2007, 5, 1);<br /><br />if (date1 > date2) {<br />//some code here<br />}<br />You may expect it to work, but you have to use the valueOf method of the Date object:<br />var date1 = new Date(2007, 4, 30);<br />var date2 = new Date(2007, 5, 1);<br /><br />if (date1.valueOf() > date2.valueOf()) {<br />//some code here<br />} </p><p><br /><strong>Getting notified when the user enters a form field</strong><br />The OnChange event of a form field is fired when you are leaving a field (and of course have changed the field value). If you want to perform an action when the users enters the field, use the onfocus event:<br />crmForm.all.your_field.onfocusin = function() {<br />alert("Received focus");<br />} </p><p><br /><strong>Overriding the click event of a lookup field</strong><br />If you need to run code whenever a user clicks on a lookup button, use the following code to override the standard implementation of the click event:<br />//overrides the default click handler<br />crmForm.all.your_lookupField.onclick = function() {<br /><br />alert("Lookup dialog is opening now");<br /><br />//open the lookup dialog<br />crmForm.all.your_lookupField.Lookup(true);<br /><br />alert("Lookup dialog closed");<br />}<br />Be careful with this as some lookup fields specify additional settings in their click events.<br />Formatting a date to YYYYMMDD<br />There is no toString() implementation in JavaScript allowing you to format a data value, so you have to build it on your own:<br />getYear returns the current year<br />getMonth returns the month starting from 0 for January to 11 for December<br />getDate returns the day of the month (1-31)<br />A common error is to use getDay instead of getDate. getDate returns the day of the week.<br />var now = new Date();<br /><br />var year = now.getYear().toString();<br />var month = (now.getMonth() + 1).toString();<br />var dayOfMonth = now.getDate().toString();<br /><br />if (month.length == 1) {<br />month = "0" + month;<br />}<br /><br />if (dayOfMonth.length == 1) {<br />dayOfMonth = "0" + dayOfMonth;<br />}<br /><br />var yyyymmdd = year + month + dayOfMonth;<br />The DataValue of a picklist is a string!<br />The DataValue of a picklist is a string, not an integer. You would expect it to be an integer as a picklist value is stored as an integer in the database and the Picklist class in the WSDL also specifies an integer value. Anyway when comparing the value of a picklist in client-side code, make sure to use a string value:<br />if (crmForm.all.your_picklist.DataValue == "1") {<br />} </p><p><br /><strong>Setting a picklist's default value in code</strong><br />If a default option is specified in the attribute definition of a picklist, CRM assumes that you don't want to allow an empty value. This may not be true in all circumstances, so here's the workaround: In the attribute definition change the default value back to unassigned. This adds back the empty option in the picklist. Open the form's OnLoad event and add the following code:<br />if (crmForm.ObjectId == null) {<br />crmForm.all.your_picklist.DataValue = "1";<br />}<br />The code selects the first option in the picklist when inside a create form. It does not change the value once the form has been saved.<br />Starting an application from a CRM form<br />var shell = new ActiveXObject("WScript.Shell");<br /><br />if (shell != null) {<br />shell.Run("c:\directory\application.exe " + crmForm.ObjectId);<br />}<br />You may face security issues preventing your code from being executed. An alternative is to use a custom .NET assembly as outlined in Using .NET assemblies in JavaScript code. </p><p><br /><strong>Changing the available entity types in a lookup dialog<br /></strong>Use one of the following in your OnLoad event:<br />//Allow only accounts to be selected<br />crmForm.all.regardingobjectid.setAttribute("lookuptypes", "1");<br /><br />//Allow only contacts to be selected<br />crmForm.all.regardingobjectid.setAttribute("lookuptypes", "2");<br /><br />//Allow accounts or contacts to be selected<br />crmForm.all.regardingobjectid.setAttribute("lookuptypes", "1,2");<br />It does not change the behavior of the form assistant, but the lookup dialog will not display any other entity. The attribute values are entity type codes and are documented in the SDK help file. You can use the code for any field allowing multiple entity types (usually customer fields and the regarding field).<br />Setting the text of the "Save As Completed" button<br />To display the text "Save as completed" in the toolbar button performing this action, put this code into the OnLoad event:<br />document.all._MBSaveAsCompleted.children[0].innerHTML += "Save as completed";<br />This is unsupported and may not work in the future. </p><p><br /><strong>Calculating durations</strong><br />The following code subtracts the current date from a date specified on a CRM form and calculates the remaining or elapsed days, hours or minutes.<br />var displayField = crmForm.all.<name of a string field>;<br />var formDate = crmForm.all.<name of a datetime field>.DataValue;<br />var now = new Date();<br />var ms = formDate.valueOf() - now.valueOf();<br />var minutes = ms / 1000 / 60;<br />var hours = minutes / 60;<br />var days = hours / 24;<br /><br />if (days >= 1) {<br />displayField.DataValue = Math.floor(days) + " day(s) left";<br />}<br /><br />else if (hours >= 1) {<br />displayField.DataValue = Math.floor(hours) + " hour(s) left";<br />}<br /><br />else if (minutes >= 1) {<br />displayField.DataValue = Math.floor(minutes) + " minute(s) left";<br />}<br /><br />else if (days <= -1) {<br />displayField.DataValue = Math.floor(-days) + " day(s) late";<br />}<br /><br />else if (hours <= -1) {<br />displayField.DataValue = Math.floor(-hours) + " hour(s) late";<br />}<br /><br />else if (minutes <= -1) {<br />displayField.DataValue = Math.floor(-minutes) + " minute(s) late";<br />}<br /><br />else {<br />displayField.DataValue = "NOW";<br />} </p><p><br /><strong>Hiding a single field</strong><br />crmForm.all.<fieldname>_c.style.display = "none"; //hides the label<br />crmForm.all.<fieldname>_d.style.display = "none"; //hides the field </p><p><br /><strong>Setting a text field to the name of the entity referenced in a lookup control</strong><br />if (crmForm.all.<lookupField>.DataValue == null) {<br />crmForm.all.<textField>.DataValue = null;<br />}<br /><br />else {<br />crmForm.all.<textField>.DataValue = crmForm.all.<lookupField>.DataValue[0].name;<br />} </p><p><br /><strong>Getting notified when a user changes a checkbox value before leaving the field</strong><br />The OnChange event of a bit field is fired when you leave the field. Often you want the event to be triggered as soon as the user clicks on a checkbox before tabbing out. Here's the code:<br />In the OnLoad event create a new event handler like this:<br />crmForm.all.your_checkboxfield.onclick = function() {<br />crmForm.all.your_checkboxfield.FireOnChange();<br />}<br />Obviously the onclick event is raised when clicking on the checkbox. Not so obvious is the fact that it also fires when you change the value using the keyboard (space bar). The above code calls your OnChange event handler after the value changed but before the control looses focus, so OnChange will be triggered again when you tab out. If that's a problem, place the existing OnChange event handler into the onclick event:<br />crmForm.all.your_checkboxfield.onclick = function() {<br />//add existing OnChange implementation here<br />}<br />Now you can deactivate your OnChange event. </p><p><br /><strong>Preventing an OnChange event handler from executing when the form closes</strong><br />To prevent an OnChange event handler from running if the form is closing, add the following code to your OnLoad event:<br />//declaring a global variable<br />_windowClosing = false;<br /><br />//onbeforeunload is called when you close the form but before the OnChange event is triggered<br />window.onbeforeunload = function() {<br />_windowClosing = true;<br />}<br />In your OnChange script, do the following:<br />if (!_windowClosing) {<br />//add your existing script code<br />}<br /><br /><strong>Maximizing a form</strong><br />Put the following two lines of code into any OnLoad event to maximize the form:<br />window.moveTo(0,0);<br />window.resizeTo(screen.availWidth, screen.availHeight);<br />moveTo moves the window to the specified location and resizeTo resizes it. screen is a global object and give you the available screen width and height in the corresponding properties. </p><p><br /><strong>Using a toolbar button to open a referenced entity</strong><br />Let's say you have added a lookup field to a form referencing one of your custom entities and you have added a toolbar button in isv.config.xml. When clicked it should open the entity shown in the lookup field, which basically is the same as clicking the link in the lookup itself.<br />Here's the code:<br />var lookup = crmForm.all.your_lookup_field;<br /><br />if ((lookup != null) && (lookup.DataValue != null)) {<br />var objectTypeCode = lookup[0].type;<br />var objectId = lookup[0].id;<br />var url = '/userdefined/edit.aspx?id=" + objectId + '&etc=' + objectTypeCode;<br /><br />window.open(url);<br />}<br />Note that when using a system entity, you have to replace /userdefined/edit.aspx with the appropriate edit URL of the system entity. The code first checks for the availability of the lookup field. If it's not included on the form (lookup will be null) or no data value has been set then no action is performed; otherwise the complete edit URL is stored in the url variable and passed to the window.open method. </p><p><br /><strong>Calculating the sum of two or more fields</strong><br />Though it seems straightforward to sum up field values in a form, you can easily run into problems with null values. Here's a sample script that sums up three fields (your_field1, your_field2, your_field3) and stores the sum in your_sum:<br />//A field is accessed with crmForm.all.<the_field_name><br />//A field value is accessed through it's DataValue property<br />var value1 = crmForm.all.your_field1.DataValue;<br />var value2 = crmForm.all.your_field2.DataValue;<br />var value3 = crmForm.all.your_field3.DataValue;<br /><br />//The DataValue of an empty field is null, so in order to<br />//sum up the values, you have to check for null values<br />value1 = (value1 == null) ? 0 : value1;<br />value2 = (value2 == null) ? 0 : value2;<br />value3 = (value3 == null) ? 0 : value3;<br /><br />//Setting a value follows the same rules used for retrieving<br />crmForm.all.your_sum.DataValue = value1 + value2 + value3;<br />Calculating the total charge based on actural duration, hourly rate, trip charge and tax rate<br />Instead of trying to make this one generic, I'm repeating the original question:<br />"I created 4 attributes under the Case entity as follows:<br />• new_hourlyrate - picklist (95.00 and 125.00 for values)<br />• new_taxrate - picklist (.06 and .07 for values)<br />• new_tripcharge - picklist (0.00, 15.00, 30.00, 60.00 for values)<br />• new_totalcharge - money<br />I need to populate the totalcharge field based on the actualdurationminutes attribute with the following math equation:<br />totalcharge = actualdurationminutes/60 (to get hours) multiplied by the hourly rate, add the tripcharge, multiplied by the tax rate. Take that value and add it to the hourly rate multiplied by the hours, and add the trip charge, to get total charge."<br />And here's the code:<br />var hourlyRateField = crmForm.all.new_hourlyrate;<br />var taxRateField = crmForm.all.new_taxrate;<br />var tripChargeField = crmForm.all.new_tripcharge;<br />var totalChargeField = crmForm.all.new_totalcharge;<br />var actualDurationMinutesField = crmForm.all.actualdurationminutes;<br /><br />//Sanity check: if at least one of the fields is not available on the form,<br />the following condition is not met<br />if (hourlyRateField && taxRateField && tripChargeField && totalChargeField && actualDurationMinutesField) {<br /><br />var hourlyRate = (hourlyRateField.DataValue == null) ? 0 : parseFloat(hourlyRateField.SelectedText);<br />var taxRate = (taxRateField.DataValue == null) ? 0 : parseFloat(taxRateField.SelectedText);<br />var tripCharge = (tripChargeField.DataValue == null) ? 0 : parseFloat(tripChargeField.SelectedText);<br />var actualDurationMinutes = (actualDurationMinutesField.DataValue == null) ? 0 : parseFloat(actualDurationMinutesField.DataValue);<br /><br />var totalCharge = (actualDurationMinutes/60 * hourlyRate) + tripCharge;<br />var totalTax = totalCharge * taxRate;<br /><br />totalChargeField.DataValue = totalCharge + totalTax;<br />}<br />Note that in the above code parseFloat uses the SelectedText of the picklists instead of the DataValue.<br /><strong></strong></p><p><strong>Changing error messages in CRM forms</strong><br />Sometimes the error messages displayed when entering an incorrect value may not be correct. An example from a Dutch system: when a user tries to input a date by hand, for example 14/05/1998 an error is displayed because the correct format is 14-05-1998. However the error message tells you to specify the date as D/M/YYYY, which isn't correct.<br />You can change these error messages on the fly by simply replacing the appropriate variable in OnLoad. Note the error message and search for it in in the page source. You will find something like this:<br />var LOCID_ALERT_ENTER_VALID_DATE = "De opgegeven datum is ongeldig. voer een datum in met de notatie: D/M/YYYY.";<br />To change it, put the following line in your OnLoad event:<br />LOCID_ALERT_ENTER_VALID_DATE = "De opgegeven datum is ongeldig. voer een datum in met de notatie: DD-MM-YYYY."; </p><p><br /><strong>Setting a custom date field to another date minus 60 days<br /></strong>Date calculation problems are still popping up in the newsgroups, so here's another quick example. Let's say you want to calculate a date based on the value of the effectiveto field in your crmForm minus 60 days. Here's the code:<br />var effectiveTo = crmForm.all.effectiveto.DataValue;<br /><br />var remindOn = new Date(<br />effectiveTo.getYear(),<br />effectiveTo.getMonth(),<br />effectiveTo.getDate() - 60);<br />or<br />var effectiveTo = crmForm.all.effectiveto.DataValue;<br /><br />var remindOn = new Date(<br />effectiveTo.getYear(),<br />effectiveTo.getMonth() - 2,<br />effectiveTo.getDate());<br />The difference between the codes is that the first subtracts exactly 60 days, whereas the second subtracts two months, which is between 58 and 62 days. </p><p><br /><strong>Changing the default height of the lookup window</strong><br />This is an unsupported change, but if you want to change the initial size of a lookup window, open /_controls/lookup/lookup.js in the CRM web and search for the function BuildFeatures(lookupStyle). Inside of this function search for the following:<br />switch (lookupStyle)<br />{<br />case "multi":<br />oFeatures.height = "460px";<br />oFeatures.width = "600px";<br />break;<br />case "single":<br />oFeatures.height = "488px";<br />oFeatures.width = "600px";<br />break;<br />oFeatures.height and oFeatures.width are the initial lookup dimensions. After changing them, clear your browser cache to reload the include files the next time a lookup is accessed, otherwise IE will still use the cached values and you don't see a difference. </p><p><br /><strong>Accessing the previous field value in OnChange</strong><br />Sometimes you need to know the previous field value in an OnChange event or you need to know the initial value after the form has loaded. This information of course is lost in OnChange, as the field value already has changed. Here's a simple workaround:<br />// OnLoad event<br />// no var statement here to declare a global variable<br />_oldDateValue = crmForm.all.the_fieldName.DataValue;<br /><br />// OnChange event<br />if (_oldDateValue == null) {<br />//no previous value<br />}<br /><br />else {<br />var currentValue = crmForm.all.the_fieldName.DataValue;<br />DoStuff(currentValue, _oldValue);<br /><br />//update the old value with the new value, if appropriate<br />_oldDateValue = currentValue;<br />} </p><p><br /><strong>Automatically calculate the tax value in an invoice line (invoicedetail)</strong><br />CRM does not calculate the tax amount for you and if you want to automate it you have to add custom script. Sp here's an example for the invoicedetail. In the OnLoad event of the invoicedetail form add the following:<br />CalculateTax = function() {<br /><br />var pricePerUnit = 0;<br />var quantity = 0;<br />var manualDiscount = 0;<br /><br />if (crmForm.all.priceperunit.DataValue != null) {<br />pricePerUnit = crmForm.all.priceperunit.DataValue;<br />}<br /><br />if (crmForm.all.quantity.DataValue != null) {<br />quantity = crmForm.all.quantity.DataValue;<br />}<br /><br />if (crmForm.all.manualdiscountamount.DataValue != null) {<br />manualDiscount = crmForm.all.manualdiscountamount.DataValue;<br />}<br /><br />crmForm.all.tax.DataValue = (pricePerUnit * quantity - manualDiscount) * 0.175;<br />}<br />In the OnChange events of priceperunit, quantity and manualdiscountamount add:<br />CalculateTax();<br />Change 0.175 (17.5%) to the tax you need to charge. You can also add a new field instead of using a fixed value in the script code.<br /><strong></strong></p><p><strong>Performing an action when a CRM form closes</strong><br />If you want to execute your script whenever the form closes, whether it is saved or not, you can subscribe to the onunload event:<br />window.onunload = function() {<br />//add code here<br />}<br />Hooking into the "Lookup Address" feature in the order form<br />To get notified when a user presses the "Lookup Address" button in the order form, put this code into the order's OnLoad event:<br />if (document.all._MBLookupAddress != null) {<br />document.all._MBLookupAddress.onclick = function() {<br />LookupAddress();<br />alert("Address lookup closed");<br />}<br />}<br />The alert pops up after the address lookup dialog closes but there's no way to distinguish if the user selected an address or canceled the dialog. Of course this is an unsupported customization as it uses undocumented functions.</p><p><br /><strong>Changing the form title (not the browser title)</strong><br />A CRM form displays the primary field of an entity in a large bold font just below the toolbar buttons. If you want to change the displayed text, put the following code into your OnLoad event:<br />var cells = document.getElementsByTagName("td");<br /><br />for (var i = 0; i < cells.length; i++) {<br />if (cells[i].className == "formTitle") {<br />cells[i].innerText = "Ticket: 123456";<br />break;<br />}<br />} </p><p><br /><strong>Passing parameters from a toolbar button to a CRM form</strong><br />Sometimes you add buttons to a form's toolbar that simply create a new entity. However in the created entity you need to know if it was created from your toolbar button or not. Here's an easy solution to pass an additional parameter that you can check in the OnLoad entity of the new entity form.<br />First of all let's start with the toolbar button. It usually has a Url attribute like "/userdefined/edit.aspx?etc=10018". To differentiate add an additional parameter like "/userdefined/edit.aspx?etc=10018&template=1".<br />Note: using the entity type code is dangerous, as it may break when deploying your solution to another server.<br /><br />In the OnLoad event of the target entity (with object type code 10018) use the following code to extract the template parameter from the query string:<br />var QueryString = ParseQueryString();<br />var template = QueryString["template"];<br /><br />alert(template);<br /><br />if (template == "1") {<br />// "New Template" clicked<br />}<br /><br />else {<br />// "New" clicked<br />}<br /><br />function ParseQueryString() {<br /><br />var dict = new Object();<br /><br />if ((document.location.search != null) && (document.location.search != "?")) {<br />var qsParts = document.location.search.substr(1).split("&");<br />var index;<br /><br />for(index in qsParts) {<br />var keyValue = qsParts[index].split("=");<br />dict[keyValue[0]] = unescape(decodeURIComponent(keyValue[1]));<br />}<br />}<br /><br />return dict;<br />}<br />The basic idea is passing additional parameters to the form and reading them in OnLoad. As the default "New" button does not add the template parameter, you can use it as an indicator which button initiated the creation of the new entity. </p><p><br /><strong>Aborting an OnChange operation</strong><br />"I populated a picklist with some values and add code to the OnChange() event. When users change the picklist value by selection in the dropdown, a message box will pop up and ask the user to confirm the change. If the user chooses No, how could I restore the original value selected in the picklist?"<br />// OnLoad<br />// Note that the "var" keyword is missing intentionally to declare prevPicklistValue as a global variable<br />prevPicklistValue = crmForm.all.the_picklist.DataValue;<br /><br />// OnChange of prevPicklistValue<br />var currentPicklistValue = crmForm.all.the_picklist.DataValue;<br /><br />if (prevPicklistValue == currentPicklistValue) {<br />//Reaching this line when restoring the previous value<br />return;<br />}<br /><br />var answer = window.confirm("Click Ok to proceed or Cancel to abort the operation.");<br /><br />if (answer) {<br />//User selected OK -> Save the current value as the last accepted value<br />prevPicklistValue = currentPicklistValue;<br />}<br /><br />else {<br />//User selected Cancel -> Restore the previous value.<br />crmForm.all.the_picklist.DataValue = prevPicklistValue<br />}<br /><strong></strong></p><p><strong>Disabling the time selection of a date/time field</strong><br />You can dynamically enable or disable the time selection box of a date/time field using the following syntax:<br />var dateField = crmForm.all.<name of datetime field>;<br /><br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (dateField.all.time != null) {<br /><br />//Disable the time field<br />dateField.all.time.disable();<br /><br />//Enable the time field<br />dateField.all.time.enable();<br />}<br />CRM automatically enables the time selection box if the date value changes to a non-null value, so in order to always disable the time selection box, you need to add the following OnChange event script to the datetime field:<br />var dateField = crmForm.all.<name of datetime field>;<br /><br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (dateField.all.time != null) {<br />//Disable the time field<br />dateField.all.time.disable();<br />}<br />To initially disable the time field, put the following into the form OnLoad event:<br />var dateField = crmForm.all.<name of datetime field>;<br /><br />//Check the existence of the datetime field. It may not be included in a quick create form!<br />if (dateField != null) {<br /><br />//Call the OnChange event handler<br />dateField.FireOnChange();<br />} </p><p><br /><strong>Changing the time interval in date/time fields<br /></strong>The time selection box of a date/time field uses a 30 minute interval. You can change it to a different interval using the following code in an OnLoad event:<br />var dateField = crmForm.all.<name of datetime field>;<br /><br />//Check the existence of the datetime field. It may not be included in a quick create form!<br />if (dateField != null) {<br /><br />var timeField = dateField.all.time;<br /><br />//Check the existence of the time field. It is null if the control is setup to only display the date.<br />if (timeField != null) {<br /><br />//The new interval in minutes.<br />var interval = 15;<br />var tables = timeField.getElementsByTagName("table");<br /><br />if ((tables != null) && (tables.length > 0)) {<br /><br />var table = tables[1];<br /><br />//Remove all existing values from the selection box<br />while (table.firstChild != null) {<br />table.removeChild(table.firstChild);<br />}<br /><br />//Add the new values<br />for (hour = 0; hour < 24; hour++) {<br />for (min = 0; min < 60; min += interval) {<br /><br />var row = table.insertRow();<br />var cell = row.insertCell();<br />var time = ((hour < 10) ? "0" : "") + hour + ":" + ((min < 10) ? "0" : "") + min;<br /><br />cell.setAttribute("val", time);<br />cell.innerText = time;<br />}<br />}<br />}<br />}<br />} </p><p><br /><strong>Getting the quote id inside a quotedetail form</strong><br />There's a hidden field in the quotedetail form storing the quote id. You can access it using<br />alert("Quote ID = " + crmForm.all.quoteid.DataValue); </p><p><br /><strong>How to know which button triggered the OnSave event</strong><br />You can use the event.Mode property in the OnSave event. It will tell you which button was used to save an entity. Not all values are documented in the SDK, e.g the "Save as completed" in a phone call has a value of 58. As it's not documented, this number may change in future releases.<br />To get started enter the following into your OnSave script:<br />alert ("event.Mode = " + event.Mode);<br />event.returnValue = false;<br />return false;<br />This codes makes it impossible to save the entity, but allows you to write down all of the values passed to OnSave. You will see 1 for a normal save operation and 2 for Save and Close. Most but not all constants are defined in /_common/scripts/formevt.js. </p><p><br /><strong>Accessing the CRM database from JavaScript</strong><br />To access the CRM database from JavaScript, use the following as a template:<br />var connection = new ActiveXObject("ADODB.Connection");<br />var connectionString = "Provider=SQLOLEDB;Server=STUNNWARECRM;Database=stunnware_mscrm;Integrated Security=sspi";<br /><br />connection.Open(connectionString);<br /><br />var query = "SELECT name FROM FilteredAccount";<br />var rs = new ActiveXObject("ADODB.Recordset");<br /><br />rs.Open(query, connection, /*adOpenKeyset*/1, /*adLockPessimistic*/2);<br />rs.moveFirst();<br /><br />var values = "";<br /><br />while (!rs.eof) {<br />values += rs.Fields(0).Value.toString() + " ";<br />rs.moveNext();<br />}<br /><br />connection.Close();<br /><br />alert(values);<br />You may need to adjust your security settings in IE in order to run this code. </p><p><br /><strong>Modifying the Quick Create Form</strong><br />Allthough the quick create form isn't listed in the forms and views dialog, it uses the same scripts entered in the main application form. You can use the following in the OnLoad script to run code when inside of a quick create form:<br />if (crmForm.FormType == 5 /* Quick Create Form */) {<br />//modify the form using DHTML<br />} </p><p><br /><strong>Forcing the selection of an account in the potential customer field of an opportunity<br /></strong>Put the following into the opportunity's OnLoad event:<br />crmForm.all.customerid.setAttribute("lookuptypes", "1");<br />This tells the customer lookup to only include the account (object type code 1). A value of 2 forces the lookup to only display contacts. </p><p><br /><strong>Hiding and showing fields dynamically based on other field values<br /></strong>You can do this in client-side JavaScript. Let's say you have a picklist named "new_category" and you have assigned the following options to it:<br />1 - Business<br />2 - Private<br />3 - Unspecified<br />Let's further assume that you want to hide the fields "new_a" and "new_b" whenever a user selects "Private", but they should be visible if a different option is selected in the picklist. Your OnChange event script of the new_category field will be:<br />var hideValues = (crmForm.all.new_category != null) && (crmForm.all.new_category.DataValue == "2");<br />var displayStyle = hideValues ? "none" : "";<br /><br />crmForm.all.new_a.style.display = displayStyle;<br />crmForm.all.new_b.style.display = displayStyle;<br />To run the code when the form is initially loaded, put the following into the OnLoad event:<br />if (crmForm.all.new_category != null) {<br />crmForm.all.new_category.FireOnChange();<br />}<br />The test for a null value of crmForm.all.new_category is included to avoid errors if the field is not available on a form. This is true for quick create forms if the field required level is not set to business required or business recommended. </p><p><br /><strong>Removing the value from a lookup field</strong><br />crmForm.all.<lookupField>.DataValue = null; </p><p><br /><strong>Hiding tabs at runtime</strong><br />You can hide and show entire tabs dynamically using the following code:<br />//Add your condition here, usually a field comparison in an OnChange event<br />if (condition == true) {<br />//hide the second tab<br />crmForm.all.tab1Tab.style.display = "none";<br />}<br /><br />else {<br />//show the second tab<br />crmForm.all.tab1Tab.style.display = "";<br />}<br />The tabs are named "tab0Tab", "tab1Tab", "tab2Tab" and so on. </p><p><br /><strong>Setting the active tab</strong><br />From the SDK docs:<br />SetFocus: Sets the focus, changes tabs, and scrolls the window as necessary to show the specified field. Example:<br />// Set focus to the field.<br />crmForm.all.SOME_FIELD_ID.SetFocus(); </p><p><br /><strong>Displaying related entities instead of the form when opening a record</strong><br />To open a related entity view of the left navigation bar (like contacts in an account entity), you can use the following:<br />loadArea("areaContacts");<br />Each entry in the navigation bar has a unique area name (areaContacts is just a sample). If you haven't already done it, download and install the Internet Explorer Developer Toolbar to find the name of the entry you're after. Some instructions on how to use it are in http://www.stunnware.com/crm2/topic.aspx?id=CrmLookAndFeel1; though it is a different topic, I included some screenshots using the developer toolbar in CRM. </p><p><br /><strong>Modifying the color of disabled form fields</strong><br />Disabled form fields are sometimes hard to read. Making the color a little bit darker greatly helps to read all of the content without loosing the information that a field is read-only.<br />Open the following file in your CRM web: /_forms/controls/controls.css. Then find the following style:<br />INPUT.ro,TEXTAREA.ro,DIV.ro,SPAN.ro<br />{<br />background-color: #ffffff;<br />color: #808080;<br />border-color: #808080;<br />}<br />The color attribute is the light gray you're seeing by default. You may change it to #404040 to get a slightly darker gray. If you don't see the new colors in IE, hit CTRL-F5 to reload the source files, including the updated css file.<br /><strong></strong></p><p><strong>Removing a navigation bar entry at runtime</strong><br />To remove a navigation bar entry dynamically, you can use the following code:<br />var navigationBarEntry = document.getElementById("navProds");<br /><br />if (navigationBarEntry != null) {<br /><br />var lbArea = navigationBarEntry.parentNode;<br /><br />if (lbArea != null) {<br />lbArea.removeChild(navigationBarEntry);<br />}<br />}<br />If you haven't already done it, download and install the Internet Explorer Developer Toolbar to find the name of the navigation bar entry. </p><p><br /><strong>Changing the color of a label</strong><br />var label = crmForm.all.<field name>_c;<br />label.innerHTML = "<font color='#FF0000'>" + label.innerText + "</font>";<br />It's time to continue the "More JavaScript" series. Here's the fifth article containing more snippets and I hope that you find them as valuable as the four previous articles. I also updated the JavaScript Snippets Directory. </p><p><br /><strong>Formatting international phone numbers</strong><br />The CRM SDK contains a sample to format US phone numbers and it works pretty well. However, there are customers outside the US and the sample doesn't work with international phone numbers. An easy formatting rule is replacing any occurrence of '(', ')' or a space with a dash. People can then enter the phone number in their preferred way, but get the same output.<br />var originalPhoneNumber = "+49 (89) 12345678";<br />var formattedPhoneNumber = originalPhoneNumber.replace(/[^0-9,+]/g, "-");<br />formattedPhoneNumber = formattedPhoneNumber.replace(/-+/g, "-");<br />alert(formattedPhoneNumber);<br />The first call to the replace method changes every character in the input string that is not a digit and not the plus sign (which is used for international<br />numbers) to the dash symbol. However, the output is +49--89--12345678, so the second call replaces all occurrences of multiple dashes with a single<br />one, giving a final result of +49-89-12345678. </p><p><br /><strong>Rounding numerical fields</strong><br />Rounding fields is done similar to any other programming language. The following method rounds a float value using a precision of two decimal places:<br />function round(value) {<br />return Math.round(value * 100) / 100;<br />}<br />The Math object defines three methods for rounding operations:<br />• Math.ceil(arg): Returns an integer value equal to the smallest integer greater than or equal to its numeric argument.<br />• Math.floor(arg): Returns an integer value equal to the greatest integer less than or equal to its numeric argument.<br />• Math.round(arg): If the decimal portion of number is 0.5 or greater, the return value is equal to the smallest integer greater than number. Otherwise, round returns the largest integer less than or equal to number.<br />Be aware of null values in Boolean fields<br />When working with Boolean fields it's seems natural to compare the value to either true or false:<br />var value = crmForm.all.my_bool.DataValue;<br /><br />if (value == true) {<br />//do something<br />}<br /><br />else {<br />//do something else<br />}<br />However, the value may also be null and you should make sure that your code handles it correctly:<br />var value = crmForm.all.my_bool.DataValue;<br /><br />if (value == null) {<br />//do appropriate steps if there is no value<br />}<br /><br />else if (value == true) {<br />//do something<br />}<br /><br />else {<br />//do something else<br />}<br />If you want to execute either the "true" part or the "false" part when no value is set, then I recommended the following (including the comment, to make it obvious):<br />var value = crmForm.all.my_bool.DataValue;<br /><br />//Default to true if no value is set<br />if (value == null) {<br />value = true;<br />}<br /><br />if (value == true) {<br />//do something<br />}<br /><br />else {<br />//do something else<br />}<br /><strong>Reusing code in OnLoad and OnChange event handlers</strong><br />I often see code like this:<br />OnLoad:<br />if (crmForm.all.my_lookup_field.DataValue != null) {<br />crmForm.all.my_text_field.DataValue = crmForm.all.my_lookup_field.DataValue[0].name;<br />}<br />OnChange:<br />if (crmForm.all.my_lookup_field.DataValue != null) {<br />crmForm.all.my_text_field.DataValue = crmForm.all.my_lookup_field.DataValue[0].name;<br />}<br />The code is identical in both events: it copies the display name of the selected item in a lookup field to a text box. Later you notice that it doesn't remove an existing value in the text field when the user removes the lookup selection and change the OnChange code to this:<br />if (crmForm.all.my_lookup_field.DataValue != null) {<br />crmForm.all.my_text_field.DataValue = crmForm.all.my_lookup_field.DataValue[0].name;<br />}<br /><br />else {<br />crmForm.all.my_text_field.DataValue = null;<br />}<br />It sometimes happens that you forget to change the OnLoad code as well, so instead of copy paste the code between OnChange and OnLoad, you should use one of the following implementation styles:<br />1. Implementing the code in the OnChange event handler and using FireOnChange to execute it in the OnLoad event:<br />OnLoad<br />crmForm.all.my_lookup_field.FireOnChange();<br />OnChange<br />if (crmForm.all.my_lookup_field.DataValue != null) {<br />crmForm.all.my_text_field.DataValue = crmForm.all.my_lookup_field.DataValue[0].name;<br />}<br /><br />else {<br />crmForm.all.my_text_field.DataValue = null;<br />}<br />2. Implementing the code in OnLoad and calling it from the OnChange event:<br />OnLoad<br />MyLookup_OnChange = function() {<br />if (crmForm.all.my_lookup_field.DataValue != null) {<br />crmForm.all.my_text_field.DataValue = crmForm.all.my_lookup_field.DataValue[0].name;<br />}<br /><br />else {<br />crmForm.all.my_text_field.DataValue = null;<br />}<br />}<br /><br />MyLookup_OnChange();<br />OnChange<br />MyLookup_OnChange();<br />The second implementation has the benefit that all of your code is in a single place.<br />Tip: The code can be rewritten to this: </p><p><br />var lookupValue = crmForm.all.my_lookup_field.DataValue;<br />crmForm.all.my_text_field.DataValue = (lookupValue == null) ? null : lookupValue[0].name;<br />Getting notified when the user selected an address in the address picker (quote, order, invoice)<br />When working with quotes, orders and invoices, you pick an address to specify the bill to and ship to address. Though the address fields are properly filled with the selected values, no OnChange event is executed in the CRM form. Here's an easy but unsupported way to be informed when the user closes the address lookup dialog:<br />if (document.all._MBLookupAddress != null) {<br />document.all._MBLookupAddress.onclick = function() {<br />LookupAddress();<br />alert("Address lookup closed");<br />}<br />}<br />You don't know if the user selected an address or canceled the operation though. You can use the same idea to override other built-in functions, but as said, it's unsupported and may break in future releases.<br />What is "if (condition) ? statement1 : statement2"?<br />I'm using the above notation a lot because it's an easy way to set a value to one out of two values. This construct is available in C, C++, Java, C# and I'm sure that most other languages have similar commands. I noticed though that it's not as as clear as I thought, so here's the same using a standard if/then/else:<br />if (condition) {<br />statement1;<br />}<br /><br />else {<br />statement2;<br />}<br />And here's a real example:<br />var s = (crmForm.all.my_lookup.DataValue == null) ? null : crmForm.all.my_lookup.DataValue[0].name;<br />And the same with an if/then/else:<br />var s;<br /><br />if (crmForm.all.my_lookup.DataValue == null) {<br />s = null;<br />}<br /><br />else {<br />s = crmForm.all.my_lookup.DataValue[0].name;<br />} </p><p><br /><strong>Copying the display name of a selcted lookup value into a textbox</strong><br />See the sample above. </p><p><br /><strong>Retrieving all fields inside a CRM form</strong><br />If you want to loop over all fields (input fields) on a CRM form, you can use the following script as a starting point:<br />for (var index in crmForm.all) {<br />var control = crmForm.all[index];<br /><br />if (control.req && (control.Disabled != null)) {<br />//control is a CRM form field<br />}<br />}<br />The conditions mean that a control must have the "req" attribute and the "Disabled" method. This seems a good indicator for a CRM form field.<br /><strong>Knowing if you are running in CRM 3.0 or CRM 4.0</strong><br />It's fairly easy to differentiate if your code is running on CRM 4.0 or not. Just pick a method or variable that did not exist in CRM 3.0 and check if it is available:<br />if (typeof(GenerateAuthenticationHeader) == "undefined") {<br />alert("Version 3");<br />}<br /><br />else {<br />alert("Version 4");<br />}<br />GenerateAuthenticationHeader was introduced in CRM 4.0 and is a global function available in all forms.<br /><strong></strong></p><p><strong>Showing/Hiding tabs based on the selection in a picklist</strong><br />The next script shows one out of three tabs based on the selection in the new_combo field. It hides all tabs if no selection is made or a different value is selected.<br />OnLoad:<br />//Sanity check: if new_combo is not present on the form, then don't call FireOnChange<br />if (crmForm.all.new_combo != null) {<br />crmForm.all.new_combo.FireOnChange();<br />}<br />OnChange:<br />//Check for create, update, read-only or disabled form<br />if ((crmForm.FormType >= 1) && (crmForm.FormType <= 4)) {<br /><br />var value = crmForm.all.new_combo.DataValue;<br /><br />crmForm.all.tab1Tab.style.display = (value == "1") ? "none" : "";<br />crmForm.all.tab2Tab.style.display = (value == "2") ? "none" : "";<br />crmForm.all.tab3Tab.style.display = (value == "3") ? "none" : "";<br />} </p><p><br /><strong>Changing the background color of a form (CRM 4.0)</strong><br />Instead of explaining in detail, simply copy the following code into the OnLoad event:<br />document.all.areaForm.style.backgroundColor = 'yellow';<br />document.all.tab0.style.backgroundColor = 'red';<br />document.all.tab1.style.backgroundColor = 'blue';<br />document.all.tab2.style.backgroundColor = 'green';<br />document.all.tab3.style.backgroundColor = 'cyan';<br />The above is for an entity with 4 tabs, like the default account form. If you have less tabs, then remove some of the lines at the end (tab0 = the first tab, tab1 = the second tab, ...).<br />Instead of using color names, you can also specify RGB values, e.g.<br />document.all.tab0.style.backgroundColor = '#A040FF'; </p><p><br /><strong>Calculating the difference of two numerical fields</strong><br />Seems easy enough:<br />var result = crmForm.all.num_field1.DataValue - crmForm.all.num_field2.DataValue;<br />It will break though if either of the two fields is null. Use the following instead:<br />var fieldValue1 = (crmForm.all.num_field1.DataValue == null) ? 0 : crmForm.all.num_field1.DataValue;<br />var fieldValue2 = (crmForm.all.num_field2.DataValue == null) ? 0 : crmForm.all.num_field2.DataValue;<br />var diff = fieldValue1 - fieldValue2;<br />You can use a different notation to check for the null value:<br />var fieldValue1 = crmForm.all.num_field1.DataValue ? 0 : crmForm.all.num_field1.DataValue;<br />var fieldValue2 = crmForm.all.num_field2.DataValue ? 0 : crmForm.all.num_field2.DataValue;<br />var diff = fieldValue1 - fieldValue2;<br />It depends on your coding style which version you prefer. The second is smaller but doesn't really tell what you are comparing, while the first explicitly cheks for a null value. </p><p><br /><strong>Disable all fields on a form</strong><br />This is just a variation of the code shown in the "Retrieving all fields inside a CRM form" sample:<br />for (var index in crmForm.all) {<br />var control = crmForm.all[index];<br /><br />if (control.req && (control.Disabled != null)) {<br />control.Disabled = true;<br />}<br />} </p><p><br /><strong>When events do not fire anymore</strong><br />If your OnLoad, OnSave or OnChange code isn't executed at all, make sure that you have enabled the event first. It's always a good idea to check the obvious things first. If you have enabled the event and are not testing the code in the form preview, then ask yourself if you have published the changes.<br />If your code still isn't executed, place an alert('TEST'); as the first line into your code and try again. If you don't see the alert message, then you have a syntax problem in your code. The most common reason is a missing curly brace somewhere in your code and it may be in any event you have added to the CRM form. It may also be related to an inline comment using the "// my comment" notation. Try using "/* my comment */" instead.</span></p>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-12933057106005460712010-03-12T08:25:00.006+02:002010-03-14T11:12:54.420+02:00Adding Http compression to ms crm<span style="font-family:arial;"><strong>1.Download and install the HttpModule</strong> from </span><a href="http://capitalhead.com/articles/enable-http-compression-for-your-aspnet-applications.aspx"><span style="font-family:arial;">http://capitalhead.com/articles/enable-http-compression-for-your-aspnet-applications.aspx</span></a><span style="font-family:arial;">. Simply follow this link and download the binary package.<br /><br /><br /><strong>2.Extract the package and copy the extracted files into the CRMWEB bin folder.</strong><br />blowery.Web.HttpCompress.dll<br />blowery.Web.HttpCompress.dll.xml<br />ICSharpCode.SharpZipLib.dll<br />ICSharpCode.SharpZipLib.dll.xml<br /><br /><strong>3.Modify your Web.config </strong><br />1.Add to the configSections<br /><sectionGroup name="blowery.web"> <section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/></sectionGroup></span><br /><span style="font-family:arial;"></span><br /><span style="font-family:arial;"><strong>2.Add to the httpModules section inside system.web (if httpModules section does not exist, create it)<br /></strong><br /><httpModules><add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/></httpModules></span><br /><span style="font-family:arial;"></span><br /><span style="font-family:arial;"><strong>3.Add to the configuration section</strong><br /><br /><blowery.web><httpCompress preferredAlgorithm="deflate" compressionLevel="high"> <excludedMimeTypes> <add type="image/jpeg"/> <add type="image/gif"/> </excludedMimeTypes> <excludedPaths></add path="AASA/_grid/cmds/dlg_exportcustomizations.aspx"</excludedPaths></httpCompress></blowery.web><br /><br /></span><span style="font-family:arial;color:#ff0000;"><strong><em>Please Note: When exporting or importing CRM customizations switch the compressin off.Set the compression setting in the webconfig file to "none"</em></strong></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-13797815999374461322010-03-12T05:43:00.000+02:002010-03-12T05:45:15.732+02:00Compare Microsoft Dynamics CRM 4.0 Server Editions<span style="font-family:arial;">Every server that runs Microsoft Dynamics CRM 4.0 requires a Server License. Three Server Editions are available for Microsoft Dynamics CRM 4.0:<br /><br /><strong>Microsoft Dynamics CRM 4.0 Workgroup Server</strong><br /><br />*Replaces the Small Business Edition of CRM 3.0.<br />*Includes and supports a maximum of 5 named User licenses.<br />*Runs on any version of Windows Server.<br /><br /><strong>Microsoft Dynamics CRM 4.0 Professional Server</strong> </span><br /><span style="font-family:arial;"><br />*Rich feature set with no licensing based scalability limit.<br />*Single-tenant deployment.<br /><br /><strong>Microsoft Dynamics CRM 4.0 Enterprise Server</strong><br /><br />*Rich feature set with no licensing based scalability limit.<br />*Multi-tenant deployments.<br /><br /><strong>Client Access Licenses</strong><br /><br />*User CAL - With a user CAL, each licensed user may access the Server from any device.<br />*Device CAL - With a device CAL, the CAL is assigned to a device and may be shared by non-concurrent users over time, such as in a shift worker or call center scenario.<br />*Limited Access – Grants read only access to users.<br /><br /><br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-48366577123563172782010-03-11T02:02:00.002+02:002010-03-11T02:07:47.715+02:00CRM Icons not correctly associated after publishing customizations.HI<br />Something strange happened with me today.We created a export through the sdk for the customizations and import it into the server.After publishing I noticed all the icons were miss aligned with different entities.<br /><br />I edited one entity and changed the icon associated to it to something different.Once pressing ok the crm system reloads the customizations entity page.This corrected the problem.I republished and by luck all the associations was correctly updated.Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-44437530721139257722010-03-08T08:28:00.004+02:002010-03-08T08:36:20.937+02:00CRM Configuration Manager<div><span style="font-family:arial;">I Came across this great tool from Daniel Halan, for deploying customizationsfor MSCRM across multiple server deployments.</span></div><br /><div><br /><span style="font-family:arial;">The CRM Configuration Manager is a Windows application to create an Export / Import selection that can later be exported as a command prompt string for later use, or execute directly inside the application. The main features of CRM Configuration Manager are,<br /><br />•Easy access to the features of CRM Customization Manager<br />•Possible to select a CRM server as destination, allowing one click export and import.<br />•Create advance export/import selections for later use inside scripts / installations<br />This release includes CRM Customization Manager v2.0 that contains fixes and few new features,<br /><br />•JavaScript Export/Import, This allows you to extract JavaScript to a local folder, where you can work in a proper script editor, and later import them back. You can also create new javascripts in the same folder, just follow the name convention and they will also be imported to the correct entity / event.<br />•Zip support, Now all features works with zipped customizations<br />•Include Related Entities, This features will automatically include related entities to the selected entities, so their relationships are exported and can be reviewed for conflicts. This is recommended during the development process when relationships may change.<br />•Publish Workflows, Publish operation now also publishes workflows</span></div><br /><div><span style="font-family:Arial;"></span></div><br /><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnDC-ArfEWyNojNNKScvMTEGzyfOZSIziBko5HipOvGcjwxf1QHU6OY20fmHwVqsNCqomfSYqFvH6kh-ojv7f0kJ1kU9WziMg30JccFOhzPoZTR5GRAGkkXlszKSOpiy792yJ5l4Xutspl/s1600-h/image.jpg"><img style="WIDTH: 281px; HEIGHT: 253px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446147694095039058" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnDC-ArfEWyNojNNKScvMTEGzyfOZSIziBko5HipOvGcjwxf1QHU6OY20fmHwVqsNCqomfSYqFvH6kh-ojv7f0kJ1kU9WziMg30JccFOhzPoZTR5GRAGkkXlszKSOpiy792yJ5l4Xutspl/s400/image.jpg" /></a></p><br /><div><span style="font-family:Arial;"></span></div><br /><div><span style="font-family:Arial;">Download the application by clicking on the post heading.</span></div><br /><div><span style="font-family:Arial;">Enjoy</span></div>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-84114570646441302502010-03-08T07:21:00.001+02:002010-03-08T07:51:21.001+02:00How to confuse production with management!<span style="font-family:arial;"><strong>Got this email from a friend and thought this makes so much sense that, I had to blog it.<br />How many times do we fix stuff that doesn't require fixing ?</strong></span><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9ieLG2-UOtyLBAtVYw81eHZ9j5KZ8lWtcM5hIpM7RinsB2QznbWEd2Q2CvnlVG_Dj4qjBEg_YuBMDMZymTtYmXxZCIeRRqYiH1SfwXvDwCwAsjLjUxUm4CPLZ2M05sJ1ulehRE9S1wZq/s1600-h/1.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446134153038007634" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9ieLG2-UOtyLBAtVYw81eHZ9j5KZ8lWtcM5hIpM7RinsB2QznbWEd2Q2CvnlVG_Dj4qjBEg_YuBMDMZymTtYmXxZCIeRRqYiH1SfwXvDwCwAsjLjUxUm4CPLZ2M05sJ1ulehRE9S1wZq/s400/1.jpg" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnkZij_x62sMknq3CHu2a1uqYZuS09GcLAm5RyS0VN2kC4wmiwOGpjN0kXpuvVr5MM9Y5ZWDIqJMrKJzhgjJbe0v4-bfbUW2iDD_-YXxval8U6ZorEe1V58Y0FadXPtjl8aEA68UR2QpC8/s1600-h/2.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446134150207451122" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnkZij_x62sMknq3CHu2a1uqYZuS09GcLAm5RyS0VN2kC4wmiwOGpjN0kXpuvVr5MM9Y5ZWDIqJMrKJzhgjJbe0v4-bfbUW2iDD_-YXxval8U6ZorEe1V58Y0FadXPtjl8aEA68UR2QpC8/s400/2.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWLQm92QjG7E3NDkqJy5x9bKr3quzg_SgMToRRwjocI47qGspMrQ3sNzA-JBDXnZ0Xc8wYcwgCkujhIqfoW-onpISVJmVGRI8T_ZV8LdcamqbTp5VgiGzhc9TGAFN_Z3iBvEl8waLE20Y/s1600-h/3.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446134144718356322" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdWLQm92QjG7E3NDkqJy5x9bKr3quzg_SgMToRRwjocI47qGspMrQ3sNzA-JBDXnZ0Xc8wYcwgCkujhIqfoW-onpISVJmVGRI8T_ZV8LdcamqbTp5VgiGzhc9TGAFN_Z3iBvEl8waLE20Y/s400/3.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGv_xJHOIp_HxLlrmVWDG2b1V5wqzvbEBTBT0rKKYUC4baRq5zbSi-7Z5_Fq8PHfPHU80zmGSULf4_JEl1i-UFowNTFqhMV4CebzTVUsWU-BeKTqIhB5_uLgXbKLMpWL898l6lu5SP8Ba/s1600-h/4.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131825831964290" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqGv_xJHOIp_HxLlrmVWDG2b1V5wqzvbEBTBT0rKKYUC4baRq5zbSi-7Z5_Fq8PHfPHU80zmGSULf4_JEl1i-UFowNTFqhMV4CebzTVUsWU-BeKTqIhB5_uLgXbKLMpWL898l6lu5SP8Ba/s400/4.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUITdxlyZ8oVw5nlzsdjgF4GqBs_JToigm5tCCA160qyqymlCjbQ1j0Pw3vgOvzdvPTdjzTrEkAMAEA8hqnULOVIe9Y-NhLpp6bC8uYU23j3ubcZjB7jnpfF6wfVdOXAqCa8cTqunMPF_k/s1600-h/5.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131816550418402" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUITdxlyZ8oVw5nlzsdjgF4GqBs_JToigm5tCCA160qyqymlCjbQ1j0Pw3vgOvzdvPTdjzTrEkAMAEA8hqnULOVIe9Y-NhLpp6bC8uYU23j3ubcZjB7jnpfF6wfVdOXAqCa8cTqunMPF_k/s400/5.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV72Ws9_Prj72kNAkZwIOouxKhxqEE1ftJZ8m-0h0yAu7EpGJ_UQb63iptno-DV4kzuBh4ywtta7A2S6zsY8t4YqDKjxPvY2Orw9sKmmJyuY_9uUULFehAGFAoKmPmsTV_Uxl2Y1Aj9-Cl/s1600-h/6.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131814129841202" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV72Ws9_Prj72kNAkZwIOouxKhxqEE1ftJZ8m-0h0yAu7EpGJ_UQb63iptno-DV4kzuBh4ywtta7A2S6zsY8t4YqDKjxPvY2Orw9sKmmJyuY_9uUULFehAGFAoKmPmsTV_Uxl2Y1Aj9-Cl/s400/6.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWsAYCKc7KxrsZCl7yODIw08idkEbU7d1D76XHs8KooKfUGwnK2xLI0Zbe7ume3OsesCdO2x7JCGhVua4O2a2aM8y2xTv-ntGzm7-bP3wJDb2qRRBlCEKvRrmMO5vK_4gaUJizHC-_xMxh/s1600-h/7.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131809623106482" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWsAYCKc7KxrsZCl7yODIw08idkEbU7d1D76XHs8KooKfUGwnK2xLI0Zbe7ume3OsesCdO2x7JCGhVua4O2a2aM8y2xTv-ntGzm7-bP3wJDb2qRRBlCEKvRrmMO5vK_4gaUJizHC-_xMxh/s400/7.jpg" /></a> <div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj08Hci6FiD4bOeWpP11xegoHAFGfqNWnJzMX2_TrRKTzcxIVSCuPaZ6txwWfeYFVSrPEeV0srebu37ofkTmR8YIrAUHMYGti0NszG26JQpir9rSa_F32YYv_5VAlg-ne48qJ95JIwXy8xh/s1600-h/8.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131803329590514" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj08Hci6FiD4bOeWpP11xegoHAFGfqNWnJzMX2_TrRKTzcxIVSCuPaZ6txwWfeYFVSrPEeV0srebu37ofkTmR8YIrAUHMYGti0NszG26JQpir9rSa_F32YYv_5VAlg-ne48qJ95JIwXy8xh/s400/8.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwg-sgp7bK4anMjbM8vbjMcOYWHxXn5gEGqWwKOY1NJ6smiMSweJPd-Ai8xDgjpxV-g3eqlcZIQCkS0DlRjmueqJCvu4JkeUMufA6QYUTN_Dev7BOMeIO4n-POIUpqJLkDxcEZg0vkc0M_/s1600-h/9.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131121161450130" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwg-sgp7bK4anMjbM8vbjMcOYWHxXn5gEGqWwKOY1NJ6smiMSweJPd-Ai8xDgjpxV-g3eqlcZIQCkS0DlRjmueqJCvu4JkeUMufA6QYUTN_Dev7BOMeIO4n-POIUpqJLkDxcEZg0vkc0M_/s400/9.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM-dRqsz0fhtR4UH6JsJZMXJtu7kIFG6K8YpV4PW27WtU4esg1GwCVW2HdQXleFt0KKaM4nLbeZISKBNZeD8lH6D9duutxGT6uj-0ZiU8sDhsy-lCpTUpgjAh5Z01bMWTw4Hu9RbYxESMp/s1600-h/10.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131115408931874" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM-dRqsz0fhtR4UH6JsJZMXJtu7kIFG6K8YpV4PW27WtU4esg1GwCVW2HdQXleFt0KKaM4nLbeZISKBNZeD8lH6D9duutxGT6uj-0ZiU8sDhsy-lCpTUpgjAh5Z01bMWTw4Hu9RbYxESMp/s400/10.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTJk0rUAd64dN4L1w3oR1WQlKCoD0DFy12ckYq8ECb29s9TWnyTeof3COrKLE8lhyeaPxV5bVwNjGyGE-QXQr4BkSiLevoLGZpCIw-fwmxR-hjr3EIrU8RCx4QZ5iifWHWDQK-qHe0-dpp/s1600-h/11.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131111752177506" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTJk0rUAd64dN4L1w3oR1WQlKCoD0DFy12ckYq8ECb29s9TWnyTeof3COrKLE8lhyeaPxV5bVwNjGyGE-QXQr4BkSiLevoLGZpCIw-fwmxR-hjr3EIrU8RCx4QZ5iifWHWDQK-qHe0-dpp/s400/11.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH5nEgiIcudB4o7bJ-OT-d8zqOPANrIjxB9emra8DSaBIqf7VhfLwn0AwXxbNf0AYj845uIkfau5NxeT_6cVOPu2b8wl7EctwL0jrVv7GLw2xkZ7Q3WBLHCkpQfgH06-eEkjIrTYwFr2VX/s1600-h/12.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131108837741890" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH5nEgiIcudB4o7bJ-OT-d8zqOPANrIjxB9emra8DSaBIqf7VhfLwn0AwXxbNf0AYj845uIkfau5NxeT_6cVOPu2b8wl7EctwL0jrVv7GLw2xkZ7Q3WBLHCkpQfgH06-eEkjIrTYwFr2VX/s400/12.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeVZ45NyQSb44ijv3xo_PiC6TXZ6-bkVFYJ2Vh-3GdB-Z5HIUZ630-YGwfWd6VwDtwK7lf6JjSmctAIzbvLbNFxZUKXbadxAUT-s6eH2bNOD2KrgnfX9XAvFfxT-ITwK8E9J9YSegCshlD/s1600-h/13.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446131103026533794" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeVZ45NyQSb44ijv3xo_PiC6TXZ6-bkVFYJ2Vh-3GdB-Z5HIUZ630-YGwfWd6VwDtwK7lf6JjSmctAIzbvLbNFxZUKXbadxAUT-s6eH2bNOD2KrgnfX9XAvFfxT-ITwK8E9J9YSegCshlD/s400/13.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOVZeDrot1vg_OooqJJJNBmoBZV-loFsy087VJxKBeMCT8gMQT8AjqS8gXvbrsSxtim9Zr5jdnq5lJm7cZO2CsE6PqShvGyTj1Aj4NJnuvkGnkTEPX1_sGM-FfkNAthnn11YnIsTN2A8BN/s1600-h/14.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130660624734418" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOVZeDrot1vg_OooqJJJNBmoBZV-loFsy087VJxKBeMCT8gMQT8AjqS8gXvbrsSxtim9Zr5jdnq5lJm7cZO2CsE6PqShvGyTj1Aj4NJnuvkGnkTEPX1_sGM-FfkNAthnn11YnIsTN2A8BN/s400/14.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRK8UDRF5jSU1t9MGL1ekhy4mT-_p1iMCPIY9loBfjq5KjmUnWix4VVyrGT7sNZjrADXTtQ2H_d1CcLHJe8G8vAgxktmGFtEadzN2jBBLHn8BNP7w492HIji_FHQW9FovDJlQ5kAhr4g_9/s1600-h/15.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130657585628114" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRK8UDRF5jSU1t9MGL1ekhy4mT-_p1iMCPIY9loBfjq5KjmUnWix4VVyrGT7sNZjrADXTtQ2H_d1CcLHJe8G8vAgxktmGFtEadzN2jBBLHn8BNP7w492HIji_FHQW9FovDJlQ5kAhr4g_9/s400/15.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9xOfm46Jogk4-KKK7pIjncUhbcxG7_rqiqyiFlTNDRP1YcrqwY625uPPcF9h2DvEvaiJgiFWlVqt7tlGZ5GvtvqZR4k2ohUOeIPgNggWWNYVa69g9oxVqKCpnSs4jck8mZF_DYkZD6wM/s1600-h/16.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130643994308498" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9xOfm46Jogk4-KKK7pIjncUhbcxG7_rqiqyiFlTNDRP1YcrqwY625uPPcF9h2DvEvaiJgiFWlVqt7tlGZ5GvtvqZR4k2ohUOeIPgNggWWNYVa69g9oxVqKCpnSs4jck8mZF_DYkZD6wM/s400/16.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjulddX16jqeK7ROn8x2V-AQ3QLOj3dCuTpCFNUO_HHmB-gN0mJNzjcSMJdy_iVZ8OehXPDv4PPh8-cFtSm-vPBru0_XdLa2U7jJn_6f7gL2DSPLO7Y3mFC6fMI_bRvft2syrJzgS6oDMxB/s1600-h/17.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130645680430882" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjulddX16jqeK7ROn8x2V-AQ3QLOj3dCuTpCFNUO_HHmB-gN0mJNzjcSMJdy_iVZ8OehXPDv4PPh8-cFtSm-vPBru0_XdLa2U7jJn_6f7gL2DSPLO7Y3mFC6fMI_bRvft2syrJzgS6oDMxB/s400/17.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1N03eXnWMbVDKO02Yf3JLHO8Pkw9WmXbIaxB9feXC4oDpSCVemvcybXOMgfcrWT9tMq-J3Joo-6H39diL62aHjhpJaDibDMLpzGY8t6-Bj5h7Iu3DNgzOu9mQqRP2znoQ_p8Sx7bqeBdF/s1600-h/18.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130638960817986" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1N03eXnWMbVDKO02Yf3JLHO8Pkw9WmXbIaxB9feXC4oDpSCVemvcybXOMgfcrWT9tMq-J3Joo-6H39diL62aHjhpJaDibDMLpzGY8t6-Bj5h7Iu3DNgzOu9mQqRP2znoQ_p8Sx7bqeBdF/s400/18.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvcslyGFIJt1VhQ9rixtKL_Ec-lBS1XkhfyOS0OKd8uWxGGm7t4Du0zUO_m6RGz0wSQYHEsmHAi0k987CPRK5qRYJy2gb9Ge21xwK9VZOB4FChQ0kLvbUt-tBXTqXkkXLmNsb7nEMaR8I_/s1600-h/19.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130262269003282" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvcslyGFIJt1VhQ9rixtKL_Ec-lBS1XkhfyOS0OKd8uWxGGm7t4Du0zUO_m6RGz0wSQYHEsmHAi0k987CPRK5qRYJy2gb9Ge21xwK9VZOB4FChQ0kLvbUt-tBXTqXkkXLmNsb7nEMaR8I_/s400/19.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9dTq7mZVkxmWnoFb2E9bF0nIT-wCjtyRzTUssLRslh8-nW4GihXNkQTEaPvy1HS2R7iTJ1zVk4dVNEB4f-TKk0TE1JykUQar30XSXCO4CYfo4a2GmfZ1919gE0V1VL7VfZJsmRM1Qrd7c/s1600-h/20.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130257995153506" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9dTq7mZVkxmWnoFb2E9bF0nIT-wCjtyRzTUssLRslh8-nW4GihXNkQTEaPvy1HS2R7iTJ1zVk4dVNEB4f-TKk0TE1JykUQar30XSXCO4CYfo4a2GmfZ1919gE0V1VL7VfZJsmRM1Qrd7c/s400/20.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4NDqJ1KDlWaFbW9RSNolFUNXZ4rMsSV-3NpVWqFdGlWJNHfWNlosF9plEl-CGYc-52EeD0ohnx4_rCDglbDO_gOSMXgdXnxIF8KDenwyrLv7UgzXCrEghvNK_FGJOyyZHh1vFCIwuWfu/s1600-h/21.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130254430846178" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4NDqJ1KDlWaFbW9RSNolFUNXZ4rMsSV-3NpVWqFdGlWJNHfWNlosF9plEl-CGYc-52EeD0ohnx4_rCDglbDO_gOSMXgdXnxIF8KDenwyrLv7UgzXCrEghvNK_FGJOyyZHh1vFCIwuWfu/s400/21.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkvHzF5v89Yj-lNQ-JtOSTTdOULKE5XiV7m1n3bOVziAjTvRjW-vbAty58pDZSCQCZ6NYf7vztBYgC9WuZBxIY5ElcDPDKkoa4XzcJYqGtTZwIN51KdQcSEqkdLQPTmtmvnd0cigSDHNrR/s1600-h/22.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130248687862450" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkvHzF5v89Yj-lNQ-JtOSTTdOULKE5XiV7m1n3bOVziAjTvRjW-vbAty58pDZSCQCZ6NYf7vztBYgC9WuZBxIY5ElcDPDKkoa4XzcJYqGtTZwIN51KdQcSEqkdLQPTmtmvnd0cigSDHNrR/s400/22.jpg" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZHcyda_OcRgikv4AAHMOgIUSpHnPsfIK28MWzLsnVDS3Dgreje2w667AMVx1NkIBMId8rBWFfLbeSHxXj-5KW_Iv5fdj9Vei1AchsLlAzenW_eFWLRN1mRMaf8M3izam9VQrLVxvsigtY/s1600-h/23.jpg"><img style="WIDTH: 400px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5446130250751484130" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZHcyda_OcRgikv4AAHMOgIUSpHnPsfIK28MWzLsnVDS3Dgreje2w667AMVx1NkIBMId8rBWFfLbeSHxXj-5KW_Iv5fdj9Vei1AchsLlAzenW_eFWLRN1mRMaf8M3izam9VQrLVxvsigtY/s400/23.jpg" /></a> </div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-34022980609184668682010-02-25T10:06:00.003+02:002010-02-25T10:18:36.172+02:00CRM slow in IE browsers!<span style="font-family:arial;">Is browsing always slow in Internet Explorer? Does it frequently stop responding (hang), or stop working (crash)? Do you receive error messages that indicate that Internet Explorer has "encountered a problem and needs to close"? Or that a Visual C++ "runtime error" has occurred in Iexplore.exe?<br /><br />If so, then you might want to try resetting Internet Explorer. When you reset Internet Explorer settings, all add-ons and customizations are deleted, and you basically start with a fresh version of Internet Explorer. This article helps you reset Internet Explorer.<br /><br /><br /><br /></span><a href="http://go.microsoft.com/?linkid=9646978"><span style="font-family:arial;">Fix this problem</span></a><span style="font-family:arial;"><br />Microsoft Fix it 50195<br /><br />Note This fix does not work in Windows 7. Instead, you can use the Internet Explorer troubleshooters to achieve this automatically.<br /><br />Note This wizard may be in English only; however, the automatic fix also works for other language versions of Windows.<br /><br />Note If you are not on the computer that has the problem, you can save the automatic fix to a flash drive or to a CD, and then you can run it on the computer that has the problem.<br /><br />If the problem is caused by damaged or incompatible Internet Explorer settings or add-ons, you can usually resolve the problem by resetting Internet Explorer settings.<br /><br /><strong>To use the Reset Internet Explorer Settings feature from Control Panel, follow these steps:</strong><br />Exit all programs, including Internet Explorer (if it is running).<br />If you use Windows XP, click Start, and then click Run. Type the following command in the Open box, and then press ENTER:<br /><em>inetcpl.cpl</em><br />If you use Windows Vista, click StartCollapse this imageExpand this image. Type the following command in the Start Search box, and then press ENTER:<br />inetcpl.cpl<br />The Internet Options dialog box appears.<br />Click the Advanced tab.<br />Under Reset Internet Explorer settings, click Reset. Then click Reset again.<br />When Internet Explorer finishes resetting the settings, click Close in the Reset Internet Explorer Settings dialog box.<br />Start Internet Explorer again.<br /><br />To reset Internet Explorer automatically, click the Fix this problem link. Then click Run in the File Download dialog box, and follow the steps in this wizard.<br /><br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-28972675075300823102010-02-12T08:28:00.001+02:002010-02-12T08:30:09.844+02:00Update Rollup 9 for Microsoft Dynamics CRM 4.0<span style="font-family:arial;">Update Rollup 9 for Microsoft Dynamics CRM 4.0 resolves the following issues that were not previously documented in a Knowledge Base article:<br />• When a user runs code that uses the RetrieveAllChildUsersSystemUserRequest method to find the direct reports of another user, you receive the following error message:<br />The value passed for ConditionOperator.In is empty.<br />This problem occurs if the user who runs the code is not a manager.<br />• After you import customizations from Microsoft Dynamics CRM Online to Microsoft Dynamics CRM 4.0, Microsoft Dynamics CRM 4.0 incorrectly uses the SystemUser entity form that is used in Microsoft Dynamics CRM Online.<br />• Assume that you use Microsoft Dynamics CRM 4.0 in the Internet-Facing Deployment (IFD) mode. When you export data from Microsoft Dynamics CRM 4.0 to an Microsoft Excel worksheet as a dynamic worksheet, a PrimaryKey column of entities is not exported to the Excel worksheet. For example, when you export contacts to an Excel worksheet, the ContactId column is not exported to the Excel worksheet.<br />• Assume that you enable the Secure Sockets Layer (SSL) setting in Internet Explorer 6. When you use Internet Explorer 6 to run Microsoft Dynamics CRM 4.0, you receive the following security warning message:<br />This page contains both secure and nonsecure items.<br />This problem occurs when you create a new report or when you run the Duplicate Detection function.<br />• Consider the following scenario:<br />o You run a mail merge process for marketing e-mail messages in the Microsoft dynamics CRM 4.0 client for Outlook.<br />o The merged e-mail message is addressed to a lead.<br />o In this e-mail message, you specify an unsubscribing link so that the lead can unsubscribe the marketing materials.<br />In this scenario, Microsoft Dynamics CRM 4.0 does not consider the unsubscribing request when the lead sends an unsubscribing e-mail message by clicking the link.<br />• Assume that you use the InvalidPluginExecutionException handler in a custom plug-in and you specify a custom exception message for the handler. When you upload an attachment to a Microsoft Dynamics CRM record, you receive the following exception message:<br />File Could Not Be Uploaded.<br />You expect to receive the custom exception message that you specified.<br />• Consider the following scenario. You select to use the Custom option when you install Microsoft Dynamics CRM 4.0. Then, you click Next, you click Back, and then you select to use the Typical option to install Microsoft Dynamics CRM 4.0. In this scenario, the Platform Server role is deleted when you run the Repair process during the installation of Microsoft Dynamics CRM 4.0.<br />• Consider the following scenario:<br />o You use a domain account for the CRMAppPool application pool.<br />o You enable the Microsoft Dynamics CRM tracing.<br />In this scenario, the following error message for the domain account is logged in the Application log several times:<br />User Was Not Found.<br />• Assume that you use the ISO-2022-JP encoding for POP3 e-mail messages. When the Microsoft Dynamics CRM E-Mail Router tracks an e-mail message, you notice garbage characters in the e-mail message.<br />• Consider the following scenario:<br />o You create a workflow to send an e-mail message that uses an e-mail template.<br />o The template contains HTML code.<br />o You run the workflow.<br />In this scenario, the e-mail message is displayed as plain text without HTML code.<br />• When you include the address of a recipient in an e-mail message by using single straight quotation marks (''), the e-mail message cannot be tracked in Microsoft Dynamics CRM 4.0.<br />• When you use a lookup field to update a record in an entity form, the corresponding note information does not appear in the entity form.<br />• If you block the ActiveX control by using the CLSID value "{00000000-0000-0000-0000-000000000000}," you cannot log on to the Microsoft Dynamics CRM 4.0 Web client. Additionally, you are redirected to the following Web page:<br />http://common/error/unsupportedSecurity.aspx<br />• You cannot receive all e-mail messages in Microsoft Dynamics CRM 4.0 if the mail server uses a time setting that differs from the time setting that is used by the Microsoft Dynamics CRM E-mail Router.<br />• The resource name unexpectedly changes to "Selection Rule" after you save a service activity.<br />• Assume that you create a record in the Phone Call form in Microsoft Dynamics CRM for Microsoft Office Outlook with Offline Access. When you change the Direction value of the record, you receive the following error message:<br />A record with these values already exists. A duplicate record cannot be created. Select one or more unique values and try again.<br />• When multiple levels of menus are displayed in the Microsoft Dynamics CRM 4.0 Web client, the sub menus are displayed behind the main menus. This problem occurs if you use Microsoft Internet Explorer 8.0.<br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-76762607901655806182010-02-10T13:09:00.012+02:002010-02-11T16:21:51.264+02:00Editing the CRM Site Map made so easy!!!!...<ul><li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=634508DC-1762-40D6-B745-B3BDE05D7012&displaylang=en"><span style="font-family:arial;">Download the CRM Demonstration Toolkit</span></a><span style="font-family:arial;"><br /></li></ul></span><p><span style="font-family:arial;">Launch the MSDYCRM4.0_Demonstration Tools.exe </span></p><p><span style="font-family:arial;">Use the Site Map Editor to modify the contents of the Microsoft Dynamics CRM Navigation Pane. You can use the editor to move, add, or delete items from the navigation pane.<br />NOTE: It’s strongly recommended that you back up your CRM data before using this tool.<br /><br /></span><br /><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436570529882323938" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHOv17SWfCstFXvW2-Gp3HtiXT4dNdHxiZMKUu7S1E22rK9Xg3rZ18fkn-BE14lrz6dqFCAyvlLuHucWcSmwlrRczlx2QqXtPgquz7tQrtdnSv9IqZL_74TOUSSJimYMB4P63oU5s8BRSk/s400/1.jpg" /><br /><br />• Select the hyperlink “The application is not yet connected to Microsoft Dynamics CRM, Click here to connect”. Located on the top of the page as shown below .</span></p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS5V2ml8cLBw5DePr3rycSL3ha4YXdDg25_b9AirQuDnntJoey113xmXxGHi_uPFz30IFR2iWb8zSb0Ta-P9GZ0qWCkOY1FGeYKvh5VHLb8fnjuzNqOBJQPfigHuBJQdpwW5rl4zcsf4am/s1600-h/2.jpg"><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436570663407302114" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS5V2ml8cLBw5DePr3rycSL3ha4YXdDg25_b9AirQuDnntJoey113xmXxGHi_uPFz30IFR2iWb8zSb0Ta-P9GZ0qWCkOY1FGeYKvh5VHLb8fnjuzNqOBJQPfigHuBJQdpwW5rl4zcsf4am/s400/2.jpg" /></span></a><span style="font-family:arial;"><br /><br />• Complete the login credentials and press “connect”<br /></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcPd_v2wL_egzVM8jEpNR-2mwCkJJdtqQiiu5EqIRy7UUjutsJ9FIrRtg4AcoqNH2gOrjX73TALdm_xAUB4FfKbz99YWNAlWwfilMVceSVXCfx4yh_KCi7FHxskUCv_ykkf6P-R1doGMYo/s1600-h/3.jpg"><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 385px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436570730911667506" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcPd_v2wL_egzVM8jEpNR-2mwCkJJdtqQiiu5EqIRy7UUjutsJ9FIrRtg4AcoqNH2gOrjX73TALdm_xAUB4FfKbz99YWNAlWwfilMVceSVXCfx4yh_KCi7FHxskUCv_ykkf6P-R1doGMYo/s400/3.jpg" /></span></a><span style="font-family:arial;"><br />• Select the correct Organization from the dropdown<br /><br /></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0DngcfBNNellI6ASSMY6a_a837FIHZBg83Of4dHaSbVWkIcQCe_ucZ7nBkd2X_wtnk9u7ILzQCk0sCETFIiwvQwRvUgOcl5oo4Jm1n_pvXiYBRa4kqYexsWG-n5-sSSj4Ehx1m9mxiyTy/s1600-h/4.jpg"><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 104px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436571194447888658" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0DngcfBNNellI6ASSMY6a_a837FIHZBg83Of4dHaSbVWkIcQCe_ucZ7nBkd2X_wtnk9u7ILzQCk0sCETFIiwvQwRvUgOcl5oo4Jm1n_pvXiYBRa4kqYexsWG-n5-sSSj4Ehx1m9mxiyTy/s400/4.jpg" /></span></a><span style="font-family:arial;"><br />Modify the Existing CRM Navigation Pane<br />To load and edit the current Navigation Pane for CRM:<br />1. Under Available Tools, click Site Map Editor.<br />Load the sitemap from CRM by selecting “Open from CRM” </span></p><p><span style="font-family:arial;">Under Open and Save, click Open from CRM.<br /><br /><br /></p></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKpPYZn9XMq8eAlHHOqIvTSQoVzqjCqjiYNKKDSuVfwN6FRX5EZuVbuGOpSm4jyK__6fQhZZ7qQh-2Y7ycXrPhQZe9yO8fAF09IhuwSe4dLTcSXeaw_Qm5KMLpYk-3_u9oA9wiWacv65Ko/s1600-h/5.jpg"><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 274px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436984220651249346" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKpPYZn9XMq8eAlHHOqIvTSQoVzqjCqjiYNKKDSuVfwN6FRX5EZuVbuGOpSm4jyK__6fQhZZ7qQh-2Y7ycXrPhQZe9yO8fAF09IhuwSe4dLTcSXeaw_Qm5KMLpYk-3_u9oA9wiWacv65Ko/s400/5.jpg" /> <p align="left"></span></a><span style="font-family:Arial;">The site map appears as a tree in the Edit Site Map box.</span><span style="font-family:Arial;"><br /><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 399px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436984471799911538" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpAYsEGkCVRqG8I4sKizO7o6MvvrqTe75uVkv6Vgjpw1n1DZ-4Xnbsnl7hTVcCP2eTPvs3tz1b0KmWsyPd4Vtbl2-7jgCdCmrNJCgrV320wIcMftHC9-qJtokQzm5X_AYqdeM_R58A8IIJ/s400/6.jpg" />To add a navigational section like sales, marketing select add. This will add a section to your crm navigational pane.<br /><br /></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZ91JIjgeRQAh9PrYo4jU5K0eEiPRTm2sIyDl1q1Y-VRtqKdLduEAR7Czu4FA2z9M4k4_ffr6gCtI_pAQq7ZmYfYZ7fLzsZ75aF3ConxMkJmLEm4fK0Rdz3dF1MnYAjXQ6-wQerhhhfik/s1600-h/7.jpg"><span style="font-family:Arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436984761817259330" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZ91JIjgeRQAh9PrYo4jU5K0eEiPRTm2sIyDl1q1Y-VRtqKdLduEAR7Czu4FA2z9M4k4_ffr6gCtI_pAQq7ZmYfYZ7fLzsZ75aF3ConxMkJmLEm4fK0Rdz3dF1MnYAjXQ6-wQerhhhfik/s400/7.jpg" /></span></a><span style="font-family:Arial;"><br /><strong>Add an Organizational group </strong><br />Adding a group under the section select add Under<br /><br />To add a group underneath the section just created, select the group created and select the option “Add Under”. This will allow you to add a group.To display all the groups underneath the main section select the tick box for display groups.)This will use a lot of real-estate under your navigation pane.)<br />To link a entity or call a url being on the select group you added select “Add Under”.<br />Groups organize sub-areas for usability purposes. To add a group:<br />1. In the site map tree, select the entity underwhich you want to add the group, and then click Add Under.<br />2. In the Add Group dialog, under Name, enter the title for this group. Then click OK.<br /><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436984924980499154" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUhhJPySlk-4gVYXwon-wy4vcr0TOPlbhKk9UTbOlbORiIsFcVtlrYWywXnQM-240rQpxXLfOhfbzwBT4ckeWjnVKwwK3ftFgk6tvr_M1-HKJkd-24JlaSr40B-H6bf2C5y6TPLzedI6Nx/s400/8.jpg" /><br /><strong>Sub-areas</strong> bring up the actual user interface for accomplishing tasks, such as a website or the lists/forms associated with an entity. To create a subarea:<br />1. In the site map tree, select a group and then click Add Under or select an existing subarea and click Add Under or Add (to add the new subarea above the selected subarea).<br />2. In the Sub-Area dialog:<br />• Under Entity, select the entity to add as a sub-area.<br />• Under URL, enter the URL to add as a sub-area. Click the Test URL link to verify the URL can be accessed. If you selected URL:<br />o Under Name, enter the user-friendly name that should appear in the Navigation Pane for this URL.<br />o Under Icon, enter a URL specifying the location for a graphic file that will act as the icon for this sub-area. Graphics files may be .png, .gif, .bmp, or .jpg files.<br /><br /><br /><br /></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZTIKjxqC76k_xpcGfyJdgxOFOCiUHXN_ea6w4JShNl6mvQG4wkneMy1rZ66yB0kn-qBsOP62Zzf_w_7N5vn7QF0BtEhyphenhyphen-YZFgpLRZycw0eZL7t_6zSzQlvmI3Uzivu0nDW25WseB4YQZ9/s1600-h/9.jpg"><span style="font-family:Arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436985145582019042" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZTIKjxqC76k_xpcGfyJdgxOFOCiUHXN_ea6w4JShNl6mvQG4wkneMy1rZ66yB0kn-qBsOP62Zzf_w_7N5vn7QF0BtEhyphenhyphen-YZFgpLRZycw0eZL7t_6zSzQlvmI3Uzivu0nDW25WseB4YQZ9/s400/9.jpg" /></span></a></p><span style="font-family:arial;"><p><br /></p><p><strong>Modify Existing Areas, Groups, and Subareas<br /></strong>You can edit the site map to modify the properties of existing items, move them, and delete them:<br /><strong>Edit items</strong><br />Select the item you want to edit and then click Edit. Change the title or other information for the item.<br /><strong>Remove items</strong><br />Select the item you want to remove and then click Remove. If you select an area or a group, all of the items under the area and group will also be removed.<br /><strong>Move items</strong><br />To move an item up or down, select the item and then click Move Up or Move Down. Areas are moved relative to the nearest area. Groups are moved relative to the nearest group. For example, if you select a group and click Move Down, the group and all its subordinate items will move under the next group. Sub-areas are moved relative to the nearest sub-area, but within their group.<br /><br /><br /><strong>Select Publish to CRM to test the changes.<br /></strong>After you’ve modified the site map to reflect the Navigation Pane you want to see in the application, you must publish it:<br />• On the Site Map Editor page, after you have created the site map, under Open and Save, click Publish to CRM.<br />Save a Site Map for Future Use<br />You can save the site map you’ve created for future use. To save the site map:<br />1. On the Site Map Editor page, after you have created the site map, under Open and Save, click Save.<br />2. In the Save dialog, specify the location and filename for the new XML file. Then click OK.<br /><br /><br /></p></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnVKGquGOMtwENIyae-z9il2KyzndMg1bOpABkrImSqFCgRxnbB1gO9wlShX7qhasRnuhTQVXHU_osBI4eaBv5s7CS5wwbDEpKSnucmJLO0gxlrFidJRNK5aTf0eLVL01mtsbcjLGbojim/s1600-h/10.jpg"><span style="font-family:arial;"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436985389925081714" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnVKGquGOMtwENIyae-z9il2KyzndMg1bOpABkrImSqFCgRxnbB1gO9wlShX7qhasRnuhTQVXHU_osBI4eaBv5s7CS5wwbDEpKSnucmJLO0gxlrFidJRNK5aTf0eLVL01mtsbcjLGbojim/s400/10.jpg" /></span></a><span style="font-family:arial;"><br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-74017119624110668362010-02-10T07:13:00.001+02:002010-02-10T07:23:33.930+02:00Hides the associated Views buttons/More Actions menu drop down/* Hides the associated Views buttons. i.e Hides the add existing button. */<br />/* NB: If called multiple times, the settings of the previous calls are overwritten by the final one! */<br />/* A menu element on the "More actions" drop-down menu can be hidden <br /> * by adding a string such as 'More Actions::Activate' to the buttonTitles array.<br /> */<br />HideAssociatedViewButtons = function(loadAreaId, buttonTitles) <br />{<br /> var navElement = document.getElementById('nav_' + loadAreaId);<br /> if (navElement != null) <br /> {<br /> navElement.onclick = function LoadAreaOverride() <br /> {<br /> // Call the original CRM method to launch the navigation link and create area iFrame<br /> loadArea(loadAreaId);<br /> HideViewButtons(document.getElementById(loadAreaId + 'Frame'), buttonTitles);<br /> }<br /> }<br />}<br /><br />/* Used internally by the 'HideAssociatedViewButtons' method */<br />HideViewButtons = function(Iframe, buttonTitles) <br />{<br /> if (Iframe != null) <br /> {<br /> Iframe.onreadystatechange = function HideTitledButtons() <br /> {<br /> if (Iframe.readyState == 'complete') <br /> {<br /> var iFrame = frames[window.event.srcElement.id]; <br /> var liElements = iFrame.document.getElementsByTagName('li'); <br /> for (var j = 0; j < buttonTitles.length; j++) <br /> {<br /> buttonTitleParts = buttonTitles[j].split('::');<br /> if (buttonTitleParts.length > 0)<br /> {<br /> buttonTitle = buttonTitleParts[0];<br /> for (var i = 0; i < liElements.length; i++) <br /> {<br /> liElement = liElements[i];<br /> if (liElement.getAttribute('title') == buttonTitle)<br /> {<br /> if (buttonTitleParts.length == 1)<br /> {<br /> liElement.style.display = 'none';<br /> break;<br /> }<br /> else<br /> {<br /> /* We want to hide a menu item in a drop-down menu.<br /> Find the descendant text element with the specified text.<br /> Then find its parent list item and hide it:<br /> */<br /> menuText = buttonTitleParts[1];<br /> var spanElements = liElement.getElementsByTagName('span');<br /> <br /> for (var k = 0; k < spanElements.length; k++)<br /> {<br /> spanElement = spanElements[k];<br /> if (spanElement.className == 'ms-crm-MenuItem-Text' )<br /> {<br /> textElement = spanElement.firstChild;<br /> if (textElement != null && textElement.nodeType == 3) /* 3 = Node.TEXT_NODE */<br /> {<br /> if (textElement.data == menuText)<br /> {<br /> liMenuItemElement <br /> = spanElement.parentNode.parentNode.parentNode;<br /> liMenuItemElement.style.display = 'none';<br /> break;<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br />}Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-32955019278577394982010-02-03T08:46:00.011+02:002010-02-03T17:44:03.835+02:00Adding tooltips to CRM and help developers getting the attribute name using the tooltip<span style="font-family:arial;">Found the wonderful post from Andriy on his<a href="http://a33ik.blogspot.com/2010/01/setting-attribute-description-as.html"> blog</a> <strong><em>Setting the description field of the attribute as a tooltip in CRM</em></strong>.</span><br /><span style="font-family:arial;">We changed the code a bit to make it easier for developers to access the attribute name based on the field's tooltip.</span><br /><span style="font-family:arial;"><br /><strong>Step 1: </strong>Copy the code in onload event of the form </span><span style="font-family:arial;">at the bottom of the post.</span><br /><span style="font-family:arial;font-size:100%;color:#ff0000;"><span style="color:#000000;"><span style="font-family:arial;"><strong>Step 2:</strong>Publish the changes </span><br /></span><span style="font-family:arial;"><span style="color:#000000;"><strong>Step 3</strong>:Load the relevant page</span> </span><br /></span><span style="font-family:arial;"><strong>Step 4</strong>:Click with your mouse on the display name of attribute</span><br /><p align="center"><span style="font-family:arial;"><strong><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNq3Js6WNEgKgPT1-PXHZiT43N7VzVnL-wZp1V7Qbxx1MBYgpNqw8NjXemAeBm7Dn1YjnFWnXIpMNZ9Ua_YtChKTPG_SAqZSEGIwWZA4MCk1HAC_M0NZX-I6dVQ-fM_gFb8PsjNeuKp7DU/s1600-h/picture+1.jpg"><img style="WIDTH: 400px; HEIGHT: 86px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5433911832924808834" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNq3Js6WNEgKgPT1-PXHZiT43N7VzVnL-wZp1V7Qbxx1MBYgpNqw8NjXemAeBm7Dn1YjnFWnXIpMNZ9Ua_YtChKTPG_SAqZSEGIwWZA4MCk1HAC_M0NZX-I6dVQ-fM_gFb8PsjNeuKp7DU/s400/picture+1.jpg" /></a></strong></span></p><span style="font-family:arial;"><strong>Step 5:</strong>Keeping your (Crtl) keyboard key in, click with your mouse on the tooltip. </span><br /><span style="font-family:arial;"><strong>Step 6:</strong> Open Notepad </span><br /><span style="font-family:arial;"><strong>Step 7:</strong> press (Crtl +v) and the database name will be pasted in notepad.</span><br /><br /><br /><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCqHp8Nl85QMp30poTAaw3ATjJYseXJoCDEzo3LeUkzPmwv8qxfZIcvT3M3fB5CtAwhBLf84zpRQIK-AXBKcBvCgb1u-mOI3hw6EB7NoPg5oI6VnduW_RB3fb7tFWF1heHcCJdG6A5PKMO/s1600-h/picture2.jpg"><img style="WIDTH: 368px; HEIGHT: 288px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5433912210260646290" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCqHp8Nl85QMp30poTAaw3ATjJYseXJoCDEzo3LeUkzPmwv8qxfZIcvT3M3fB5CtAwhBLf84zpRQIK-AXBKcBvCgb1u-mOI3hw6EB7NoPg5oI6VnduW_RB3fb7tFWF1heHcCJdG6A5PKMO/s400/picture2.jpg" /></a></p><span style="font-family:arial;">You will not have to have the customization window open any more to see the attributes and database names.</span><br /><br /><span style="color:#ff0000;">SetTooltips = function() {<br />try {<br />var request = "" +<br />"<?xml version="1.0" encoding="utf-8"?>" +<br />"<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">" +<br />GenerateAuthenticationHeader() +<br />" <soap:Body>" +<br />" <Execute xmlns="http://schemas.microsoft.com/crm/2007/WebServices">" +<br />" <Request xsi:type="RetrieveEntityRequest">" +<br />" <RetrieveAsIfPublished>true</RetrieveAsIfPublished>" +<br />" <EntityItems>IncludeAttributes</EntityItems>" +<br />" <LogicalName>" + crmForm.ObjectTypeName + "</LogicalName>" +<br />" </Request>" +<br />" </Execute>" +<br />" </soap:Body>" +<br />"</soap:Envelope>";<br /><br />var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");<br /><br />xmlHttpRequest.Open("POST", "/mscrmservices/2007/MetadataService.asmx", false);<br />xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");<br />xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br />xmlHttpRequest.setRequestHeader("Content-Length", request.length);<br />xmlHttpRequest.send(request);<br /><br />var result = xmlHttpRequest.responseXML;<br /><br />for (var i = 0; i < crmForm.all.length; i++)<br />if (crmForm.all[i].title != null && crmForm.all[i].title != 'undefined') {<br />var fieldName = crmForm.all[i].id;<br /><br />var desc = result.selectSingleNode("//EntityMetadata/Attributes/Attribute[LogicalName='" + fieldName + "']/Description/UserLocLabel/Label");<br />try {<br />if (desc != null) {<br />crmForm.all[fieldName + '_c'].title = desc.nodeTypedValue;<br />crmForm.all[fieldName + '_d'].title = desc.nodeTypedValue;<br />}<br />crmForm.all[fieldName + '_c'].children[0].onclick = function() { copyFieldNameToClipboard(fieldName) };<br />}<br />catch (e) { }<br />}<br />} catch (e) {<br />}<br /><br />function copyFieldNameToClipboard(fieldName) {<br />if (event.srcElement.tagName.toLowerCase() == 'label' && event.ctrlKey)<br />clipboardData.setData('text', event.srcElement.attributes['for'].value);<br />}<br />}<br /><br />setTimeout('SetTooltips();', 1500);<br /></span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-49020436690801709472010-02-01T16:16:00.002+02:002010-02-01T16:28:16.987+02:00Cannot add users in crm using "Add Multiple Users"Please see below for the solution : <br />If you do have more than one, please add a String: "PreferredDC" to the MSCRM hive in the registry on the CRM Server (HKLM - software - Microsoft - MSCRM) Add in the FQDN of the domain controller within your environment which holds the user domain accounts. <br /><br />Change the Search order in the registry of the CRM server and point to Your Primary Domain Controller. To do this make the following registry change: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"SearchList"= DCName. Change the "DCName" to your Primary Domain Controllers name You should use the FQDN of the Domain Controller where the DNS Server is held and where the CRM Domain accounts are. You MUST reboot the CRM Server in order for these change to take effect.Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-42236171058880456822010-01-29T09:35:00.007+02:002010-06-01T08:27:23.767+02:00Adding sort order to the custom entities tab for security roles in MS CRMHI Guys/Girls!<br /><br />We are busy with a huge crm implementation and currently have about 200 custom entities.<br />When we started to look at the security model for the system and it became a nightmare to set the privileges on the security roles as CRM does not sort the custom entities alphabetically.<br /><br />So what to DO?<br />We hack!...<br /><br />How the solution works:<br />Locate the file called edit.aspx located at:<br />[drive]Program Files\Microsoft Dynamics CRM\CRMWeb\Biz\Roles\edit.aspx<br /><br />Between the script tags at the bottom of the page.(As shown below)<br /><br /><script><br />var tbl = document.getElementById('tab7').children(0).children(0).children(0).children(0).children(0);<br />var x = [];<br />for (var i = 0; i < tbl.rows.length; i++)<br />x[i] = [tbl.rows[i].cells[0].innerHTML,tbl.rows[i].outerHTML];<br />var str = x[0][1];<br />for (var i = 1; i < x.length-1; i++)<br />for (var j = i+1; j < x.length; j++)<br />if (x[i][0] > x[j][0]) {<br />var tmp = x[j];<br />x[j] = x[i];<br />x[i] = tmp;<br />}<br /><br />for (var i = 1; i < x.length; i++)<br />str += x[i][1];<br />document.getElementById('tab7').children(0).children(0).children(0).children(0).innerHTML = '<TABLE class=ms-crm-Form-Area onmouseover=SetAltText(); ondblclick=ProcessClick(); onclick=ProcessClick(); cellSpacing=0 cellPadding=2>' + str + '</table>';<br /><br /></script><br /><br />Copy and paste the code above into the file or download the file here.<br /><br />And there you go!, a neat sort order for all your custom entities.<br />The code can be adopted for the other tabs as well just make a back of your edit.aspx file.<br /><br />This is a unsupported customization!!!!!! so make a copy of the original file first!Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-1373940255832912142009-10-27T06:24:00.002+02:002009-10-27T06:29:31.596+02:00CRM 4.0 Disaster Recovery<p><span style="font-family:arial;"><strong>1. Backup requirements summary</strong><br />Backup requirements vary according to the servers involved. The following table is a summary of what to back up for Microsoft Dynamics CRM.<br />Server What to back up for Microsoft Dynamics CRM Comments<br />Domain controller Full System State None.<br />Exchange Server Backup not required by Microsoft Dynamics CRM. Backup may be required for Exchange.<br />SQL Server MSCRM_CONFIG<br />OrganizationName_MSCRM<br />master<br />msdb<br />ReportServer<br />ReportServertempdb Backup should be done by using Reporting Services. The OrganizationName_MSCRM and ReportServer databases should have full database backups and transaction log backups. For databases that are rarely updated, such as msdb and MSCRM_CONFIG, you may select only full database backup. Backup of the master and msdb databases are not required by Microsoft Dynamics CRM but should be part of an overall backup strategy.<br />Microsoft Dynamics CRM Server web.config<br />(Default location: c:\Inetpub\wwwroot)<br />Windows registry:<br />HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM The web.config file is required only if the file has been changed from the default settings. The file location assumes the installation occurred at the Default Web site.<br />Windows registry subkey.<br /><br /><strong>1.1 Selecting a backup model<br /></strong>When you back up to tape, we recommend that you select a tape backup rotation model that guarantees data protection in case a tape malfunctions or loss. When backing up to disk, you can implement similar logic for rotating disk files. A popular tape rotation scheme is grandparent-parent-child:<br />• The tape used for backup on the last Friday of each month is called the grandparent tape. This tape is stored off-site.<br />• The tape used for backup every Friday (except the last Friday of the month) is called the parent tape. This tape is also stored off-site.<br />• The tapes used for backup on Monday, Tuesday, Wednesday, and Thursday are called child tapes. Frequently all child tapes are stored on-site except for the tape from the previous day.<br />The following backup options are available when you use the Microsoft Backup and Restore Wizard:<br />• Normal. Backs up all selected files and marks the files as backed up.<br />• Copy. Backs up all selected files, but does not mark the files as backed up.<br />• Differential. Backs up selected files, only if they have not been previously backed up, or changed since the last backup, but does not mark the files as backed up.<br />• Incremental. Backs up selected files, only if they have not been previously backed up, or changed, since the last backup, and marks the files as backed up.<br />• Daily. Backs up only files that have been changed, on that particular day, and marks them as backed up.<br />Because many small businesses typically do not have system administrators on staff, a regular backup, which is performed daily and according to the suggested grandparent-parent-child backup model, is recommended for small organizations. Larger organizations likely have an existing backup methodology that Microsoft Dynamics CRM will fit into. </span></p><span style="font-family:arial;"><p><br /><strong>1.2 Backing up Windows Server 2003</strong><br />Windows Server 2003 has a comprehensive backup utility that lets you back up important company data to disk or tape media. The scheduling capability found in the Backup and Restore Wizard provides data backup for the server itself and workstations in the small business network. The data backed up includes security information, file and share permissions, and registry data. For data security, only a member of the Administrators or Backup Operators group can perform a backup. Individual files and directories on the server can be restored by using the Backup and Restore Wizard.<br />When you back up to tape, the Backup and Restore Wizard requires that the tape backup device be connected to a compatible SCSI or non-SCSI controller card. The controller card must be installed correctly and functional. Windows Server 2003 automates the installation of a controller card because the new hardware is detected at system startup and the correct drivers are automatically installed.<br /><br /><strong>1.3 Backing up Active Directory<br /></strong>The Backup and Restore Wizard can back up System State data, which includes Active Directory, system startup files, the Component Services Class Registration database, the registry, and SysVol. Possible backup locations for System State data include floppy disks, hard disks, removable media, recordable compact discs, and tapes.<br />Although we recommend that you back up Active Directory, the only way to avoid data loss is to have multiple Active Directory domain controllers. Then, if a domain controller fails, the other domain controllers will have a complete copy of the directory. With a tape backup, you have data only as recent as your last backup.<br />Active Directory is a transacted database system that uses log files that support roll-back semantics to make sure that transactions are committed to the database. The files associated with Active Directory are as follows:<br />• Ntds.dit. The database.<br />• Edbxxxxx.log. Transaction logs.<br />• Edb.chk. Checkpoint file.<br />• Res1.log and Res2.log. Reserved log files.<br />Ntds.dit grows as the database fills up. However, the logs are of fixed size (10 MB). Any change made to the database is also appended to the current log file, and its disk image is always kept up to date.<br />Edb.log is the current log file. When a change is made to the database, it is written to the Edb.log file. When the Edb.log file is full of transactions, it is renamed to Edbxxxxx.log. (It starts at 00001 and continues to increment by using hexadecimal notation.) Because Active Directory uses circular logging, old log files are constantly deleted as soon as they have been written to the database. At any point in time, you will have the Edb.log file and maybe one or more Edbxxxxx.log files.<br />The Edb.chk file stores the database checkpoint, which identifies the point where the database engine has to replay the logs, generally at the time of recovery or initialization.<br />Res1.log and Res2.log are "placeholders," designed to reserve (in this case) the last 20 MB of disk space. This gives the log files sufficient room for a graceful shutdown if all other disk space is consumed.<br /><br /><br /><strong>1.4 Backing up SQL Server, including Reporting Services</strong><br />The Backup and Restore Wizard in Windows Server 2003 cannot back up SQL Server databases that are online, instead you must first stop the MSSQLSERVER service. A better solution that can be used while SQL Server runs is the built-in backup. Use SQL Server 2005 Management Studio to create a backup of the SQL Server databases. Then, you can run a backup job from the Backup and Restore Wizard to include database backups that Reporting Services created. You would schedule the backup routing in Reporting Services to run first, followed by a backup job run in the Backup and Restore Wizard. For more information about SQL Server backups, see Backing up and Restoring Databases in SQL Server Books Online.<br />Microsoft Dynamics CRM creates at least two Microsoft Dynamics CRM-specific databases on SQL Server. In addition, Microsoft Dynamics CRM requires the default master and msdb SQL Server databases for database services and the default report server SQL Server databases for Reporting Services. The databases that make up a Microsoft Dynamics CRM system on SQL Server are as follows:<br />• OrganizationName_MSCRM<br />• MSCRM_CONFIG<br />• ReportServer<br />• ReportServertempdb<br />• master<br />• msdb<br />Note<br />Your Microsoft Dynamics CRM deployment may include more than one OrganizationName_MSCRM database.<br />The SQL Server backup plan should address each of these databases to make sure that Microsoft Dynamics CRM could recover if one, or all, databases fail. If your organization already has SQL Server or another database application, your database administrator may have a database backup strategy. However, if this is the first database application in your organization, you can create and maintain scheduled backup jobs to perform the necessary backups by using the Maintenance Plan Wizard in SQL Server 2005 Management Studio. To start the Maintenance Plan Wizard, in Reporting Services, expand the server, expand the Management folder, right-click the Maintenance Plans folder, and then click Maintenance Plan Wizard.<br />Your backup plan for the Microsoft Dynamics CRM databases provides you a backup set that includes a full database backup and some number of transaction log backups, depending on the Microsoft Dynamics CRM installation and the frequency with which you determine whether you must have backups. For more information about backup and restore strategies, see SQL Server Books Online.<br />For databases that are updated infrequently, such as msdb and MSCRM_CONFIG, you might perform only full database backups. The OrganizationName_MSCRM and ReportServer databases should have both full database and transaction-log backups<br />Databases on which transaction log backups will be performed must have the Full recovery model database property set. You can set this property through SQL Server 2005 Management Studio. For more information about how to set database properties, see "How to Change the Configuration Settings for a Database" in SQL Server Books Online.<br />Schedule full database backups frequently enough to reduce the number of restores after a failure. For example, if one day's data loss is acceptable, you can back up the transaction log one time per day, and back up the database one time per week. If only one hour's maximum data loss is acceptable, you can back up the transaction log one time per hour. To reduce the number of restores, back up the database one time per day.<br />To create a database maintenance plan for scheduled backups, run the Maintenance Plan Wizard from SQL Server 2005 Management Studio. Select the option to back up the database as part of the maintenance plan for a full database backup. Select the option to back up the transaction log as part of the maintenance plan for a transaction log backup.<br />Your computer that is running SQL Server should also be designed with a level of fault-tolerance that is correct for a database server. This includes a RAID-5 disk array for your databases and a RAID-0 (mirror) for your transaction logs. With the correct level of hardware fault-tolerance, restoring from backup should be a very uncommon occurrence. </p><p><br /><strong>1.5 Backing up Exchange Server 2003 and Exchange Server 2007<br /></strong>The Backup and Restore Wizard in Windows Server 2003 can back up the Exchange Server 2003 or Exchange Server 2007 Information Store and directory services databases. Backing up the Exchange Information Store is an important part of creating a fault-tolerant messaging system. The backup and restore features in Exchange Server help you recover from various types of data loss with minimal downtime for your e-mail system.<br />Exchange Server uses the Backup and Restore Wizard to back up and restore the Exchange Information Store. The wizard helps you protect data from accidental loss or hardware and media failure by using a storage device to back up and restore data on any server in your organization locally, or over the network.<br />Improvements in Exchange Server make sure that backing up and restoring data is efficient and reliable. For example, you can restore one or more mailbox stores, or public folder stores, without shutting down the Information Store.<br />You can make sure that your organization is prepared to recover from data loss by performing the necessary planning and implementation. Developing a backup and restoration strategy consists of the following steps:<br />1. Understand Exchange Server database and storage group technology.<br />2. Design a backup plan.<br />3. Develop failure-recovery strategies.<br />4. Restore data.<br />The Microsoft Dynamics CRM E-mail Router can be installed to receive incoming e-mail messages from Exchange Servers. If the E-mail Router fails and is recovered, the E-mail Router component must be reinstalled so that it will continue to identify Microsoft Dynamics CRM e-mail messages as they enter the organization. </p><p><br /><strong>1.6 Backing up Microsoft Dynamics CRM Server</strong><br />Backing up and restoring the Microsoft Dynamics CRM Server basically involves the following data:<br />• Microsoft Dynamics CRM Server database files (explained previously)<br />• Microsoft Dynamics CRM Server program files<br />• Microsoft Dynamics CRM Web site files<br />• Customizations made to Microsoft Dynamics CRM<br />By default, all Microsoft Dynamics CRM program files are located in the following folder:<br />C:\Program Files\Microsoft CRM\<br />By default, the Microsoft Dynamics CRM Web site files are located in the following folder:<br />C:\Inetpub\wwwroot<br />The Export Customizations tool can be used to back up Microsoft Dynamics CRM customizations such as modified forms, views, and mappings. The Export Customizations tool is located in the Customizations area of the Settings area in the Microsoft Dynamics CRM application. It is a good practice to make a backup of your customizations before you try to make changes. </p><p><br /><strong>1.6.1 Backing up your Customizations<br /></strong>It's a good idea to back up (Export) your Customizations on a fairly regular basis - after you create or alter any of your Entities, Workflows, etc. This is a very simple process that can make your live easier in the future. If you are just getting started with CRM Live, go ahead and create a baseline export of the pristine system.<br />1. Navigate to Settings -> Customizations -> Export Customizations.<br />2. Select More Actions -> Export All Customizations.<br />3. You may get an Internet Explorer warning. Click Download File.<br />4. Don't be surprised if your only result is that you go back to your main Workplace screen. Simply repeat steps 1 & 2 above and I expect you will be successful<br />5. Give the customization.zip file a logical name and save it to a location that has strong backup procedures in place.<br /><br /><strong>2. Failure Recovery<br /></strong>To understand the failure-recovery procedures, you must examine several different scenarios to learn how restoration occurs in each case. For each scenario in this guide, total server failure is assumed. The following four scenarios contain information that shows the steps to ensure successful recovery.<br /><strong>2.1 SQL Server failure</strong><br />If the computer that is running Microsoft SQL Server fails, you must restore the databases from backup, and then re-associate them with the Microsoft Dynamics CRM deployment.<br />To recover from this failure, follow these steps:<br />1. Install Windows Server 2003 or Windows Server 2008, and make sure that the computer is in the same domain as the Microsoft Dynamics CRM Server. In addition, you should use the same database name and disk structure. If you change either of these, you must take additional steps to correctly restore the SQL Server databases.<br />2. Install SQL Server.<br />3. If you have a valid backup of the master database, restore that backup. For more information, see Restoring the master Database in SQL Server Books Online.<br />4. Restore the msdb database. For more information, see Restoring the model and msdb Databases in SQL Server Books Online.<br />5. Restore the MSCRM_CONFIG and OrganizationName_MSCRM databases. For more information about how to restore databases, see Backing Up and Restoring Databases.<br />6. If Microsoft SQL Server Reporting Services and the Microsoft Dynamics CRM 4.0 Connector for Microsoft SQL Server Reporting Services are also installed on the instance of SQL Server, restore the ReportServer and ReportServertempDB databases. For more information about how to restore databases, see Backing Up and Restoring Databases.<br />7. If you restored the MSCRM_CONFIG database, you must run Microsoft Dynamics CRM Server Setup and use the Connect to existing databases option on the Specify Deployment Options page. If you did not restore the MSCRM_CONFIG database and the database is functioning correctly, you use the Import Organization feature in Microsoft Dynamics CRM Deployment Manager to re-associate the organization database with the Microsoft Dynamics CRM system. For more information about how to import an organization, see the Deployment Manager Help.<br />This scenario is a worst-case situation, that is, total failure of the computer that is running SQL Server. In other circumstances, such as the failure of a disk, you may only have to restore a single database to recover the environment<br /><br /><strong>2.2 Microsoft Dynamics CRM Server failure</strong><br />Most of the Microsoft Dynamics CRM configuration information is stored on the computer that is running SQL Server. Therefore, the information can be recovered if all, or part, of Microsoft Dynamics CRM Server fails. Registry entries on the Microsoft Dynamics CRM Server are recovered when you run repair or reinstall processes for the Microsoft Dynamics CRM Server and Microsoft Dynamics CRM 4.0 Connector for Microsoft SQL Server Reporting Services.<br />If the computer that is running Microsoft Dynamics CRM Server fails, follow these steps:<br />1. Install the operating system on another server and join the same domain as the computer that is running SQL Server.<br />2. Install Microsoft Dynamics CRM Server. During Setup, you must select Connect to existing databases when you are prompted. If Microsoft Dynamics CRM 4.0 Connector for Microsoft SQL Server Reporting Services was also installed on the computer that failed, install the Microsoft Dynamics CRM 4.0 Connector for Microsoft SQL Server Reporting Services after Microsoft Dynamics CRM Server is completed.<br />3. If ISV.config and web.config have been changed from their default settings, restore these files from backup.<br />4. Publish all customizations. To do this, in the Web application, click Settings, click Customization, click Customize Entities, on the Actions toolbar select More Actions, and then click Publish all Customizations. </p><p><br /><strong>2.2.1 Uninstall or repair Microsoft Dynamics CRM Server</strong><br />To remove (uninstall) Microsoft Dynamics CRM Server, on the computer where the application is installed go to Add or Remove Programs, click Microsoft Dynamics CRM Server, click Change/Remove, select Uninstall to remove Microsoft Dynamics CRM Server, and then click Uninstall. Follow the instructions that are on the screen.<br />Important<br />The Microsoft Dynamics CRM uninstall process does not remove some components, such as the SQL Server databases, Active Directory groups, or the Microsoft Dynamics CRM Web site. Those components must be removed manually.<br />For more information about how to remove these components, or how to remove components if Setup cannot successfully remove them, see KB article 946980: How to manually remove the Microsoft Dynamics CRM 4.0 server.<br />To repair a damaged Microsoft Dynamics CRM Server installation, click Microsoft Dynamics CRM Server, click Change/Remove, select Repair, and then click Next. Follow the instructions that are on the screen. </p><p><br /><strong>2.3 Exchange Server failure</strong><br />The process to restore a Microsoft Exchange Server computer that is used by Microsoft Dynamics CRM depends on the other uses of that instance of Exchange Server. Except for the forward mailbox, Microsoft Dynamics CRM does not directly use Exchange Server mailboxes.<br />Note<br />Installing the E-mail Router on a computer that is running Exchange Server is not required.<br />1. Restore Exchange Server.<br />2. If the E-mail Router was installed on the computer that is running Exchange Server, reinstall the E-mail Router.<br />3. Restore the Microsoft.Crm.Tools.EmailAgent.xml file. By default, this file is located in the Drive:\Program Files\Microsoft CRM Email\Service folder. If this file is not available, you must reconfigure the profiles, settings, users, queue, and forward-mailbox information by running the E-mail Router Configuration Manager.<br /><br /><strong>2.4 Active Directory failure<br /></strong>In most environments, it is highly unlikely that Active Directory will fail on its own, because more than one Active Directory domain controller should be installed.<br />To recover from a failed domain controller, follow these steps:<br />1. Reinstall the Windows Server 2003 or Windows Server 2008operating system.<br />2. Perform a system state restore.<br />Make sure that you have a method for recovering from an Active Directory failure. Regardless of the size of your environment, you should consider having multiple domain controllers with regular backups of the system state. If your backups are not current, any data that belong to Microsoft Dynamics CRM objects in Active Directory will be orphaned in SQL Server and therefore will be unrecoverable. Any changes that are made in Microsoft Dynamics CRM, such as adding new Microsoft Dynamics CRM users or queues, requires that Active Directory is backed up immediately after the change.<br />One major problem can occur with Active Directory that stops Microsoft Dynamics CRM from functioning. If an administrator unintentionally deletes the organizational unit (OU) that corresponds to a Microsoft Dynamics CRM deployment, it becomes inoperable. Similarly, if any of the OU security groups that are created by Microsoft Dynamics CRM are deleted (such as PrivUserGroup, ReportingGroup, PrivReportingGroup, SQLAccessGroup, or UserGroup), Microsoft Dynamics CRM will no longer function correctly. In either of these events, an authoritative restore of Active Directory restores the deleted OU, and security groups, to their original state. </p><p><br /><strong>2.5 Microsoft Dynamics CRM for Outlook failure recovery</strong><br />Microsoft Dynamics CRM for Microsoft Office Outlook with Offline Access includes functionality that uses Microsoft SQL Server 2005 Express Edition. This enables Microsoft Dynamics CRM users to work offline with data synchronized to SQL Server when Microsoft Dynamics CRM for Outlook with Offline Access is brought online again.<br />In some cases, Microsoft Dynamics CRM users may want to back up the local SQL Server 2005 Express Edition database. This is especially useful when Microsoft Dynamics CRM users are offline for prolonged periods. The following table indicates different methods that can be used for backing up Microsoft Dynamics CRM for Outlook with Offline Access.<br /><br /><br /><strong>Backup Method ,What to Back Up for Microsoft Dynamics CRM</strong> </p><p><strong>Offline backup</strong> Contents of Microsoft Dynamics CRM data directory.<br />Default location is:<br />SystemDrive:\Documents and Settings\UserName\Application Data\Microsoft\MSCRM\Data<br />On Windows Vista, the default location is:<br />SystemDrive:\Users\UserName\AppData\Roaming\Microsoft\MSCRM\Data Before you start the backup, make sure that the SQL Server (CRM) service is stopped. Restart the service after the backup is complete.<br /><strong>Online backup</strong> using Microsoft tools MSCRM_MSDE.mdf<br />MSCRM_MSDE_log.LDF<br />Use the Osql.exe tool that is provided with Microsoft Office Server Extensions.<br />Online backup using non-Microsoft tools MSCRM_MSDE.mdf<br />MSCRM_MSDE_log.LDF<br />Look for tools that are compatible with SQL Server 2005 Express Edition.<br /><br />If there is a problem with Microsoft Dynamics CRM for Outlook with Offline Access before the user can reconnect to the server, the backup can be used to restore Microsoft Dynamics CRM functionality to the client. Outlook should be in offline mode before you restore the backup. When restored, you can then connect to the Microsoft Dynamics CRM Server (online mode). The data not already on the server will be transferred to the server from the client. Be careful when reconnecting to the server. If you restore from an outdated backup, the existing data on the server may have subsequently changed. However, neither SQL Server 2005 Express Edition nor SQL Server recognizes this fact. Therefore you run the risk of overwriting current data on the server by using older data from the offline client backup. </span></p>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-78575522195983218882009-10-26T06:01:00.000+02:002009-10-26T06:02:12.847+02:00Update Rollup 7 for Microsoft Dynamics CRM 4.0<span style="font-family:arial;">General Details about Update Rollup 7<br />Update Rollup 7 is cumulative. You do not need to install any previous Update Rollups prior to Update Rollup 7<br />The Update Rollup 7 download contains updates for the 40 supported Language Packs. Prior to installing the Update Rollup 7 Language pack you must install the original </span><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=50761e58-6040-4cf3-853a-f5ab535f7194"><span style="font-family:arial;">Language pack</span></a><span style="font-family:arial;">. If you have Language Packs installed, you should<br />Download the Update Rollup 7 Language Pack<br />Install the Update Rollup 7 Language Pack<br />De-provision the Language Pack<br />Re-provision the Language Pack<br />Update Rollup 7 adds support for Windows 7, Windows Server 2008 R2 and SQL Server 2008 R2<br />Information about how to avoid reboots when installing the CRM Outlook Client can be found in the </span><a href="http://blogs.msdn.com/crm/archive/2009/05/14/update-rollup-4-for-microsoft-dynamics-crm-4-0.aspx"><span style="font-family:arial;">Update Rollup 4 blog</span></a><span style="font-family:arial;"> posting. If the Client is being installed via AutoUpdate a reboot will be required because the AutoUpdate code is being updated in Update Rollup 7.<br />The Update Rollup 7 Client can be deployed before the server is upgraded to Update Rollup 7<br />The Update Rollup 7 Client cannot be uninstalled because of schema changes made to the offline database. All other Update Rollup 7 components (Server, Language Pack, SRS, Exchange Router, etc) can be uninstalled.<br />The Update Rollup 7 Client package will be a prerequisite for all future Client Update Rollups. Starting with Update Rollup 8 the client updates will block installation if the Update Rollup 7 Client is not found.<br />The Update Rollup 7 Client has new prerequisites<br />An internet connection is required for successful Client installation<br />Client update installation will take longer than previous URs, so please be patient<br />Steps to make the Update Rollup 7 Client available via AutoUpdate can be found in the </span><a href="http://blogs.msdn.com/crm/archive/2009/05/14/update-rollup-4-for-microsoft-dynamics-crm-4-0.aspx"><span style="font-family:arial;">Update Rollup 4 blog</span></a><span style="font-family:arial;"> posting. Once published the Link and Patch IDs can be found in kb article </span><a href="http://support.microsoft.com/?kbid=971782"><span style="font-family:arial;">971782</span></a><span style="font-family:arial;">. </span>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.comtag:blogger.com,1999:blog-4058165759694816344.post-38898604600169047422009-10-14T06:54:00.001+02:002009-10-14T06:56:57.219+02:00CRM 4.0 System Requirements and Required Components<span style="font-family:arial;">Microsoft Dynamics CRM requires several software applications and components that work together to create an effective system. Before you install Microsoft Dynamics CRM, use this section for guidance to verify that system requirements are met and the necessary software components are available.<br />Unless specified otherwise, Microsoft Dynamics CRM supports the latest version and service pack (SP) for all required components, such as Windows Server, SQL Server, Internet Explorer, and Exchange Server.<br />For the most up-to-date information about system requirements and required components, see the </span><a id="ctl00_MTCS_main_ctl01" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl01',this);" href="http://go.microsoft.com/fwlink/?linkid=78157" target="_blank"><span style="font-family:arial;">Microsoft Dynamics CRM 4.0 Server Readme</span></a><span style="font-family:arial;">.<br />For more information, see:<br /></span><a id="ctl00_MTCS_main_ctl02" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl02',this);" href="http://technet.microsoft.com/en-us/library/dd979162.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM Server hardware requirements</span></a><br /><a id="ctl00_MTCS_main_ctl03" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl03',this);" href="http://technet.microsoft.com/en-us/library/dd979163.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM Server software requirements</span></a><br /><a id="ctl00_MTCS_main_ctl04" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl04',this);" href="http://technet.microsoft.com/en-us/library/dd979174.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM Connector for SQL Server Reporting Services</span></a><br /><a id="ctl00_MTCS_main_ctl05" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl05',this);" href="http://technet.microsoft.com/en-us/library/dd979176.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM E-mail Router software requirements</span></a><br /><a id="ctl00_MTCS_main_ctl06" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl06',this);" href="http://technet.microsoft.com/en-us/library/dd979179.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM for Outlook hardware requirements</span></a><br /><a id="ctl00_MTCS_main_ctl07" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl07',this);" href="http://technet.microsoft.com/en-us/library/dd979180.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM for Outlook software requirements</span></a><br /><a id="ctl00_MTCS_main_ctl08" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl08',this);" href="http://technet.microsoft.com/en-us/library/dd979184.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM Web client software requirements</span></a><br /><a id="ctl00_MTCS_main_ctl09" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl09',this);" href="http://technet.microsoft.com/en-us/library/dd979185.aspx" target="_self"><span style="font-family:arial;">Microsoft Dynamics CRM Data Migration Manager hardware requirements</span></a><br /><a id="ctl00_MTCS_main_ctl10" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl10',this);" href="http://technet.microsoft.com/en-us/library/dd979186.aspx" target="_self"><span style="font-family:arial;">Data Migration Manager software requirements</span></a><br /><a id="ctl00_MTCS_main_ctl11" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl11',this);" href="http://technet.microsoft.com/en-us/library/dd979189.aspx" target="_self"><span style="font-family:arial;">64-bit supported configurations</span></a><br /><a id="ctl00_MTCS_main_ctl12" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl12',this);" href="http://technet.microsoft.com/en-us/library/dd979190.aspx" target="_self"><span style="font-family:arial;">Language support</span></a><br /><a id="ctl00_MTCS_main_ctl13" onclick="javascript:Track('ctl00_MTCS_main_ctl00ctl00_MTCS_main_ctl13',this);" href="http://technet.microsoft.com/en-us/library/dd979194.aspx" target="_self"><span style="font-family:arial;">Currency support</span></a>Tiaan van Niekerkhttp://www.blogger.com/profile/02009842640017015923noreply@blogger.com