<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Eric White's Blog : Screencast</title><link>http://blogs.msdn.com/ericwhite/archive/tags/Screencast/default.aspx</link><description>Tags: Screencast</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SharePoint Integration with Dynamics CRM</title><link>http://blogs.msdn.com/ericwhite/archive/2008/08/13/sharepoint-integration-with-dynamics-crm.aspx</link><pubDate>Wed, 13 Aug 2008 20:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8859651</guid><dc:creator>EricWhite</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ericwhite/comments/8859651.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericwhite/commentrss.aspx?PostID=8859651</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Two of my teammates, Girish Raja and Ben Riga, &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/benriga/archive/2008/08/12/the-dynamics-duo-talk-about-dynamics-crm-and-sharepoint.aspx"&gt;&lt;FONT face=Calibri size=3&gt;have recorded a cool 20 minute video&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; where they talk about how Dynamics CRM integrates with SharePoint.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They show a SharePoint List web part that pulls data from CRM, showing a list of CRM users and the hours from their time sheet.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They also show how to use that data to display a dashboard style gauge using &lt;/FONT&gt;&lt;A href="http://www.dundas.com/Products/Gauge/SharePoint/index.aspx"&gt;&lt;FONT face=Calibri size=3&gt;Dundas Gauge for SharePoint&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They then show how to pull that dashboard into the CRM web client and into the Outlook client.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The deep integration that is possible between SharePoint and Dynamics CRM gives users a powerful and productive environment.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Nice video, guys!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8859651" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericwhite/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/ericwhite/archive/tags/Screencast/default.aspx">Screencast</category></item><item><title>Removing Comments and Personal Information, and Accepting Revisions in an Open XML Document Stored in SharePoint</title><link>http://blogs.msdn.com/ericwhite/archive/2008/07/23/removing-comments-and-personal-information-and-accepting-revisions-in-an-open-xml-document-stored-in-sharepoint.aspx</link><pubDate>Wed, 23 Jul 2008 09:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8766087</guid><dc:creator>EricWhite</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ericwhite/comments/8766087.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericwhite/commentrss.aspx?PostID=8766087</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A class="" href="http://blogs.msdn.com/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.aspx" mce_href="http://blogs.msdn.com/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.aspx"&gt;[Blog Map]&lt;/A&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;This post presents a custom application page in SharePoint that uses Open XML, the Open XML SDK and LINQ to XML to accept revisions, remove comments, and remove personal information from an Open XML word processing document.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The following 45 second screen-cast demonstrates the code presented in this post.&lt;/FONT&gt;&lt;/P&gt;&lt;EMBED pluginspage=http://macromedia.com/go/getflashplayer src=http://images.video.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash quality="high" base="http://images.video.msn.com" allowFullScreen="true" allowScriptAccess="always" flashvars="c=v&amp;amp;v=4f9dc223-1086-4b17-86dd-8af2c71576fe&amp;amp;ifs=true&amp;amp;fr=msnvideo&amp;amp;mkt=en-US&amp;amp;brand="&gt;&lt;/EMBED&gt;&lt;BR&gt;&lt;A title="Using Open XML with SharePoint" href="http://video.msn.com/video.aspx?vid=4f9dc223-1086-4b17-86dd-8af2c71576fe" target=_new mce_href="http://video.msn.com/video.aspx?vid=4f9dc223-1086-4b17-86dd-8af2c71576fe"&gt;Video: Using Open XML with SharePoint&lt;/A&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;An approach that has interesting possibilities would be to create SharePoint workflows that query and modify Open XML documents.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For example, you could write some code that would ensure that no documents in a SharePoint document library have comments, revisions, or personal information.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ll present this code in the future.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The most interesting characteristic of this code is that until Open XML, it would be very difficult&amp;nbsp;or impossible to implement reliably on a SharePoint server.&amp;nbsp; If you wanted to implement this for binary office files, it would require using a library for accessing those binary documents, and that library may not be suitable for deployment on a SharePoint server.&amp;nbsp; I have heard of people installing a copy of Office on their server.&amp;nbsp; This has huge performance implications; in addition, it&amp;nbsp;is not in conformance&amp;nbsp;of the 2007 Office system license agreement.&amp;nbsp; But the approach presented in this post is clean, performs well, and has no adverse licensing implications.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListBullet style="MARGIN: 0in 0in 10pt; TEXT-INDENT: 0in; mso-list: none; tab-stops: .5in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;To make my development as easy as possible, I created a class, OpenXmlInfo, which has methods to query and modify the Open XML document.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I developed the class using a console application.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Then, when the class was coded and debugged, it was a simple matter to use it in the SharePoint custom application page.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The class contains six static methods; three to query a document, and three to modify a document.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here are the signatures of the methods:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; InspectForComments(WordprocessingDocument document)&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; InspectForRevisions(WordprocessingDocument doc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;bool&lt;/SPAN&gt; InspectForPersonalInfo(WordprocessingDocument document)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; RemoveComments(WordprocessingDocument document)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; AcceptRevisions(WordprocessingDocument doc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; RemovePersonalInfo(WordprocessingDocument document)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;These methods are based on code that is presented in the following blog posts:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/ericwhite/archive/2008/07/14/using-the-open-xml-sdk-and-linq-to-xml-to-remove-comments-from-an-open-xml-wordprocessing-document.aspx"&gt;&lt;FONT size=3&gt;Remove Comments from an Open XML Document&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/ericwhite/archive/2008/07/13/using-the-open-xml-sdk-and-linq-to-xml-to-remove-personal-information-from-an-open-xml-wordprocessing-document.aspx"&gt;&lt;FONT size=3&gt;Remove Personal Information from an Open XML Document&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/ericwhite/archive/2008/07/13/using-the-open-xml-sdk-and-linq-to-xml-to-accept-revisions-in-an-open-xml-wordprocessing-document.aspx"&gt;&lt;FONT size=3&gt;Accept Revisions in an Open XML Document&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;The custom application page (OpenXmlInspector.aspx) contains a few C# methods.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They are pretty straightforward.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;To open the document using the Open XML SDK, the code does the following:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=3&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;Once the code has the document in an SPFile object, it uses the OpenBinary() method to get a byte array that contains the document.&amp;nbsp; &lt;FONT size=3&gt;However, the Open XML SDK needs a stream to instantiate the document, so the code creates a MemoryStream from the byte array&lt;/FONT&gt;.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;The code then creates the WordprocessingDocument from the stream.&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;The feature adds a menu item (Inspect Open XML Document) to the ECB menu.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(The ECB menu is the drop down menu that you get for each document in a document library.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;To use this code, you will need to install the &lt;/FONT&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=120908"&gt;&lt;FONT color=#0000ff size=3&gt;Open XML SDK&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;For a good screen-cast on creating a feature in SharePoint, see &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/office/aa905382.aspx"&gt;&lt;FONT size=3&gt;Ted Pattison’s web casts&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In addition, there are some great resources at &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/click/SharePointDeveloper/"&gt;&lt;FONT size=3&gt;http://www.microsoft.com/click/SharePointDeveloper/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;Note that this code is just a demonstration of using the Open XML SDK and LINQ to XML to query and modify documents; you would want to make modifications to this code before deploying it in a production environment.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For instance, the code does not validate that the document is an Open XML document before querying it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’m presenting it as an example of the type of development that you can do using these technologies.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;Code is attached.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8766087" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/ericwhite/attachment/8766087.ashx" length="25391" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/ericwhite/archive/tags/OpenXML/default.aspx">OpenXML</category><category domain="http://blogs.msdn.com/ericwhite/archive/tags/LINQ+to+XML/default.aspx">LINQ to XML</category><category domain="http://blogs.msdn.com/ericwhite/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/ericwhite/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://blogs.msdn.com/ericwhite/archive/tags/OpenXmlSdk/default.aspx">OpenXmlSdk</category></item></channel></rss>