<?xml version="1.0" encoding="UTF-8"?><!--RSS generated by Windows SharePoint Services V3 RSS Generator on 2/5/2012 10:23:42 AM--><?xml-stylesheet type="text/xsl" href="/en/blog/_layouts/RssXslt.aspx?List=2c30449f-e1dd-4f11-99fe-ed23589c1c3a" version="1.0"?><rss version="2.0"><channel><title>Orbit One Blog</title><link>http://www.orbitone.com/en/blog</link><description>RSS feed for the Posts list.</description><lastBuildDate>Sun, 05 Feb 2012 09:23:42 GMT</lastBuildDate><generator>SharePoint CKS:EBE</generator><ttl>60</ttl><image><title>Orbit One Blog</title><url>http://www.orbitone.com/en/blog/_layouts/images/homepage.gif</url><link>http://www.orbitone.com/en/blog</link></image><item><title>Umbraco 5 and Azure workshop</title><link>http://www.orbitone.com/en/blog/archive/2012/01/24/umbraco-5-and-azure-workshop.aspx</link><guid>/en/blog/archive/2012/01/24/umbraco-5-and-azure-workshop.aspx</guid><description><![CDATA[<div class="ExternalClassE1DE779F4264401A80DDCC698157AD69"><p>If you want to stay up to date with the technical side of hosting the upcoming Umbraco 5 in the cloud (Microsoft Azure to be exact), this workshop is for you. Orbit One is hosting this event on <strong>February 22nd</strong> and room is limited, you can <a href="http://umbraco5azure.eventbrite.com/" target="_blank">register here</a> (also contains more details about the event).</p>  <h2>Speakers</h2>  <p>   <table border="0" cellspacing="0" cellpadding="2" width="400"><tbody>       <tr>         <td valign="top" width="112"><strong><img alt="" src="http://m4.licdn.com/mpr/mpr/shrink_100_100/p/1/000/046/30b/3fd81cf.jpg"></strong></td>          <td valign="top" width="288">           <p><strong>Bart Vande Ghinste,                <br></strong>Evangelist Manager @ Microsoft</p>            <p><a href="http://be.linkedin.com/pub/bart-vande-ghinste/1/6a8/456"><strong>Linkedin</strong></a></p>         </td>       </tr>        <tr>         <td valign="top" width="112"><strong><img alt="" src="http://m3.licdn.com/mpr/mpr/shrink_100_100/p/1/000/04c/20c/0b2adee.jpg" width="100" height="100"></strong></td>          <td valign="top" width="288">           <p><strong>Tom Crombez                <br></strong>Web channel audience manager @ Microsoft </p>            <p><a href="http://be.linkedin.com/in/tomcrombez"><strong>LinkedIn</strong></a>               <br></p>         </td>       </tr>        <tr>         <td valign="top" width="112"><strong><img alt="" src="http://m4.licdn.com/mpr/mpr/shrink_100_100/p/3/000/081/304/07c65c2.jpg" width="100" height="100"></strong></td>          <td valign="top" width="288">           <p><strong>Wim De Coninck,                <br></strong>Developer Team Lead @ Orbit One </p>            <p><a href="http://be.linkedin.com/pub/wim-de-coninck/16/289/156"><strong>LinkedIn</strong></a></p>         </td>       </tr>        <tr>         <td valign="top" width="112"><strong><img alt="" src="http://m3.licdn.com/mpr/mpr/shrink_100_100/p/1/000/07d/376/1d0bbda.jpg" width="100" height="100"></strong></td>          <td valign="top" width="288">           <p><strong>Olivier Mangelschots,                <br></strong>Managing Director @ Orbit One </p>            <p><a href="http://be.linkedin.com/in/omangels"><strong>LinkedIn</strong></a></p>         </td>       </tr>     </tbody></table> </p>  <h2>Schedule</h2>  <p>9:00 – 9:30 Welcome &amp; coffee</p>  <p>9:30-11:00 What's new in Azure  (<strong>Bart Vande Ghinste)</strong></p>  <p>11:00-11:30 Coffee break</p>  <p>11:30-12:30 Umbraco 5 CMS and Azure (<strong>Wim De Coninck</strong>)</p>  <p>12:30-13:30 lunch break</p>  <p>13:30-13:45 Azure Development Program - how can it help you (<strong>Tom Crombez)</strong></p>  <p>13:45-16:30 hands-on workshop, setup your Umbraco 5 website in Azure <strong>(Wim De Coninck)</strong></p>  <h2><strong>Registration</strong></h2>  <p>Seats for this event are limited, you can <a href="http://umbraco5azure.eventbrite.com/" target="_blank"><strong>register here</strong></a> (also contains more details about the event)</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Tue, 24 Jan 2012 11:53:25 GMT</pubDate></item><item><title>Dynamics CRM Dashboard for Microsoft Lync</title><link>http://www.orbitone.com/en/blog/archive/2012/01/24/dynamics-crm-dashboard-for-microsoft-lync-1.aspx</link><guid>/en/blog/archive/2012/01/24/dynamics-crm-dashboard-for-microsoft-lync-1.aspx</guid><description><![CDATA[<div class="ExternalClass23A1E365698641899EADD3E7CD66FF4E"><h2>Interview with <a href="http://be.linkedin.com/in/vmatei" target="_blank">Voicu Matei</a>.</h2>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/clip_image001_2_5025A321.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/clip_image001_thumb_5025A321.png" width="147" height="147"></a></p>  <p><b><i></i></b></p>  <h2>An: What is Dynamics CRM Dashboard for MS Lync?</h2>  <p><b>Voicu: </b>In short, where Dynamics CRM focuses on managing the contacts and sales leads of your organization and Lync is used for communicating with those contacts,  Dynamics CRM Dashboard for Lync is an add-on that makes both applications seamlessly communicate between one another.</p>  <p>Both products are already integrated to a certain extent.  Dynamics CRM allows you  to see if the contacts that are also in your Outlook agenda are online or not and and then gives you the possibility to call or email them (=integration of Lync client side functionality in CRM). However, the other way around (= integration of CRM functionality in Lync) is a different matter. That's where our add-on makes a difference!</p>  <h2>An: So this solution you've developed is unique?</h2>  <p><b>Voicu:</b> Yes, there are a few add-ons on the market but this is the first solution that seamlessly integrates MS CRM and MS Lync in both directions.</p>  <h2>An: Can you give me an example of a situation in which this solution is really practical? </h2>  <p><b>Voicu:</b> The add-on is really useful because it can show contextual information about the person that is calling, right inside the conversation window. </p>  <p>For instance let's take the case of a citizen that calls  the comune regarding the status of a dossiers that he opened for renovations in his house. When the city hall employee picks up the phone, she already knows not only who the person is but also why that person is calling. This is achieved by displaying all kinds of custom information fields from CRM about the caller directly in the CRM dashboard. This saves a lot of time.  The citizen will also be happy that his request is served more effectively and he did not have to listen to a &quot;happy song&quot; until his questions are answered.</p>  <p>Another scenario where the  add-on is useful: let’s take the example of a large company. The number of contacts of the company including clients and suppliers is somewhere around 20.000. And this number is growing fast.</p>  <p>The company uses Dynamics CRM for contact management, Outlook for email and calendar management and Lync as a telephony and conferencing system. The client service desk is contacted by a great number of people every day. They must answer telephone calls and try to solve the problems of the people who call. They use Microsoft Lync to do so.</p>  <p>The most frequent contacts of the company are in the central Outlook agenda. The number of contacts in Outlook is around 1.000. There is always the possibility to synchronize all the contacts from CRM to the Outlook agenda, but this would produce a huge agenda of 20.000 records affecting the performance of Outlook. It is normally not good practice to do that. Moreover, the autocomplete feature used by the Outlook search is limited to much less than 20.000 entries!</p>  <p><b><i></i></b></p>  <h2>An: Hmm- that makes sense. So what are some of the features ofDynamics CRM Dashboard for MS Lync? </h2>  <p><b>Voicu:</b> When an operator picks up a call, the system will search in Dynamics CRM for a contact, lead or account having the phone number of the incoming caller. If there is <b>one match</b>, the system will show the contact card of that matching entity in the extension window:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_2_6B47964C.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_thumb_6B47964C.png" width="658" height="570"></a></p>  <p>The fields that are shown on the contact card of the person are manageable in a CRM 2011 solution. </p>  <p>The person taking the call has several possibilities:</p>  <ul>   <li>Log the conversation in CRM as a phone call activity. </li>    <li>Add a note to the contact in CRM </li>    <li>Add a task to the contact in CRM </li>    <li>Edit the contact in CRM: this will open a full blown CRM popup-window in an external browser. </li> </ul>  <p>If the incoming caller’s phone number matches <b>multiple entities</b> in CRM, a list of matching entities will be displayed. There might be multiple matches in the following cases:</p>  <ul>   <li>The main contact of an account has the same business phone as the account itself </li>    <li>Double entries in CRM </li> </ul>  <p>This is the overview that the operator gets in case of multiple matches. The fields shown for each match in the multiple match preview screen are manageable in a CRM 2011 solution.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_4_6B47964C.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_thumb_1_6B47964C.png" width="662" height="431"></a></p>  <p>If the person who calls is not in CRM, the operator will have the possibility of creating a new account, contact or lead by pressing one of the buttons in the toolbar:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_6_6B47964C.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/image_thumb_2_6B47964C.png" width="665" height="129"></a></p>  <p>Pressing any of the buttons will pop-up an actual CRM browser window. The phone number of the caller will be pre-populated and the operator will be able to fill in any extra fields for the entity and save it in CRM.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/93/image_12_734E731A.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/94/clip_image001_cec3bcc1-a91f-4352-97ef-9a8ea1013369_6B47964C.gif" width="665" height="318"></a></p>  <p><b><i></i></b></p>  <h2>An: How have you packaged Dynamics CRM Dashboard for MS Lync?</h2>  <p><b>Voicu: </b>The solution we developed comes as a CRM 2011 solution and a small installer package. </p>  <p>The CRM Dashboard for Lync is deployed server side (on the CRM server) and client side on each machine running the Lync client. The cliend side installation is a one-time installation that can also be pushed through Windows group policies in your organization.</p>  <p>Possible updates and changes in the dashboard solution package only need to be published on the Dynamics CRM server and they become immediately effective without being necessary for the Lync client application to be restarted.</p>  <p><b><i></i></b></p>  <h2>An: What if a client wants extra options?</h2>  <p><b>Voicu: </b>As a client you can customize the fields that appear as well as the columns yourself. If you really want to support custom CRM entities as well, you'll need extra development. Here the team at OrbitOne can help you out. </p>  <h2>An: And the 64 dollar question: how much does it cost and where can I buy it?</h2>  <p><b>Voicu: </b>In the following weeks you will be able to download the CRM Dashboard for MS Lync in  <a href="http://dynamics.pinpoint.microsoft.com/en-US/home">CRM Marketplace</a> . Pricing will be announced soon.</p>  <p><i></i></p>  <p><i></i></p>  <h3><i>Posted by An De Jonghe</i></h3>  <h3><i>Solution Sales@OrbitOne</i></h3>  <h3><i>T +32 (9) 330.15.26 - M +32 (496) 436.693</i></h3>  <h3><i><a href="mailto:an@orbitone.com">an@orbitone.com</a> </i></h3>  <p><em></em></p>  <p>(*) Microsoft Dynamics <b>CRM</b> is a multi-lingual Customer Relationship Management software package developed by Microsoft. Out of the box, the product focuses mainly on Sales, Marketing, and Service (help desk) sectors, but Microsoft has been marketing Dynamics CRM as an XRM platform and has been encouraging partners to use its proprietary (.NET based) framework to customize it to meet many different demands.</p>  <p>Microsoft <b>Lync</b> (formerly Microsoft Office Communicator) and Microsoft Lync for Mac are instant messaging clients used with Microsoft Lync Server or Lync Online available with Microsoft Office 365 and Live@Edu. They are replacements for Windows Messenger which was used with Microsoft Exchange Server.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Voicu Matei</dc:creator><pubDate>Tue, 24 Jan 2012 09:46:13 GMT</pubDate></item><item><title>Interview: ITUC medewerkers communiceren flexibel en efficiënt via de pc dankzij Microsoft Lync.</title><link>http://www.orbitone.com/en/blog/archive/2011/11/14/interview-ituc-medewerkers-communiceren-flexibel-en-efficiënt-via-de-pc-dankzij-microsoft-lync-.aspx</link><guid>/en/blog/archive/2011/11/14/interview-ituc-medewerkers-communiceren-flexibel-en-efficiënt-via-de-pc-dankzij-microsoft-lync-.aspx</guid><description><![CDATA[<div class="ExternalClass17FF724AD66F4D9B82906C1A8AC00DE2"><p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/92/ituc_2_7C03939D.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="ituc" border="0" alt="ituc" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/92/ituc_thumb_29F0E656.jpg" width="244" height="112"></a><b></b></p>  <p><b>ITUC besliste om haar kantoren te verbouwen naar meer open ruimtes, zodat de medewerkers gemakkelijker en spontaner met elkaar kunnen communiceren. De locatie waar ITUC tijdens de verbouwingen tijdelijk onderdak krijgt, had echter geen telefooninfrastructuur. </b></p> <b>   <p>     <br>In overleg met partner Orbit One werd gekozen voor Microsoft Lync Server, met softphones en hoofdtelefoons voor alle 70 medewerkers. ITUC hoefde dus geen vaste telefooninfrastructuur te installeren op de tijdelijke locatie en kan na de verbouwingen gewoon doorwerken zonder onderbrekingen of aanpassingen. </p>    <p>     <br>Aangezien de gebruikers niet meer gebonden zijn aan een vast telefoontoestel, kunnen ze gemakkelijker op verplaatsing werken. Bovendien beschikken ze nu over heel wat geïntegreerde communicatiemogelijkheden, waardoor ze heel eenvoudig en ad hoc zelf een conference call kunnen starten of via Instant Messaging informatie uitwisselen. Daardoor kunnen ze efficiënter communiceren met elkaar of met de leden en partners van ITUC. </p> </b>  <p><a href="http://www.orbitone.com/SiteCollectionDocuments/ITUC-NL.pdf" target="_blank">Lees hier het volledige interview</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Saskia Acke</dc:creator><pubDate>Mon, 14 Nov 2011 14:02:41 GMT</pubDate></item><item><title>Membership management–solution pack</title><link>http://www.orbitone.com/en/blog/archive/2011/10/05/membership-management–solution-pack.aspx</link><guid>/en/blog/archive/2011/10/05/membership-management–solution-pack.aspx</guid><description><![CDATA[<div class="ExternalClassB951B4343139408D964DBAAB68012033"><p>Today, institutions and organizations are faced with new technological challenges to endorse the new communication methods their members are often already familiar with (email, social media, online payments and internet portals…). To help your organization to cope with this evolution, Orbit One wants to share its expertise in this branch:</p>  <ul>   <li><strong>Centralized data</strong> management for members, events, correspondence such as emails and letters </li>    <li>Allow your members to <strong>manage their own profile</strong> and data </li>    <li>Facilitate <strong>collaboration </strong>and document exchange </li>    <li>Automate <strong>membership fees</strong> and payments </li> </ul>  <p>Orbit One has developed a “quick-start” solution pack for membership organisations</p>  <ul>   <li>Quick and very effective solution </li>    <li>For a affordable price </li> </ul>  <p>Based on flexible and expandable Microsoft technologies</p>  <ul>   <li>The pack is developed based on </li>    <li>12+ years of experience </li>    <li>15 projects (Belgian, European and global membership organisations) </li> </ul>  <p> </p>  <h2>The pack contains following building blocks</h2>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/91/image_2_3A5632F1.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/91/image_thumb_3A5632F1.png" width="369" height="220"></a></p>  <h2>Advantages of the pack:</h2>  <h3>For internal staff</h3>  <ul>   <li>Full e-mail, shared calendars, synchronization with mobile phones </li>    <li>25GB space per user </li>    <li>Office 2010 license </li>    <li>Collaboration and communication tool (Lync) </li>    <li>CRM system for member management </li>    <li>E-mail marketing solution (bulk and personlized e-mail) </li>    <li>Request tracking and follow-up system (e-mails, forms, letters) </li>    <li>Online forms and survey solution </li>    <li>Document management and collaboration solution </li>    <li>All systems are available from anywhere (cloud based) </li> </ul>  <h3>For members</h3>  <ul>   <li>Secure online webplatform for documents and information </li>    <li>Easy access to information </li>    <li>Powerful search possibilities </li>    <li>Permission based </li>    <li>Easy management for user name and password </li> </ul>  <h3>For workgroup and committees</h3>  <ul>   <li>Secure online portal for meeting documents and agendas </li>    <li>Contact details for workgroup members </li>    <li>Interactive collaboration platform (discussion and sharing) </li>    <li>Bulk e-mail tool to all workgroup members </li> </ul>  <h3>For the general public</h3>  <ul>   <li>Clear and structured information </li>    <li>No gap between inside information and other media </li>    <li>Interactivity through social media </li>    <li>Link with internet groups (linkedin,…) </li> </ul>  <p>Additional services offered by Orbit One</p>  <ul>   <li>Public website creation </li>    <li>Data migration </li>    <li>Additional training &amp; workshops </li>    <li>Helpdesk and support </li>    <li>Custom development      <ul>       <li>E.g. online payment </li>        <li>Self-service portals </li>     </ul>   </li>    <li>Advice and consultancy on process optimalisation </li> </ul>   More information: <a>http://membershiporganizationsfacilitatedbymicrosoft-autohome.eventbrite.com</a></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Damien Braeckman</dc:creator><pubDate>Wed, 05 Oct 2011 15:42:50 GMT</pubDate></item><item><title>OneCafé: The future of membership organizations facilitated by Microsoft Dynamics CRM and SharePoint</title><link>http://www.orbitone.com/en/blog/archive/2011/08/30/onecafe-the-future-of-membership-organizations-facilitated-by-microsoft-dynamics-crm-and-sharepoint.aspx</link><guid>/en/blog/archive/2011/08/30/onecafe-the-future-of-membership-organizations-facilitated-by-microsoft-dynamics-crm-and-sharepoint.aspx</guid><description><![CDATA[<div class="ExternalClassB0AA225CAFBC4C8F92BCE5A159A665B7"><h2><a href="http://membershiporganizationsfacilitatedbymicrosoft.eventbrite.com/" target="_blank">Register for this event</a></h2>  <p>Today, institutions and organizations are faced with new technological challenges to endorse the new communication methods their members are often already familiar with (email, social media, online payments and internet portals…). To help your organization to cope with this evolution, Orbit One wants to share its expertise in this branch:</p>  <ul>   <li><strong>Centralized data</strong> management for members, events, correspondance such as emails and letters </li>    <li>    Allow your members to <strong>manage their own profile</strong> and data </li>    <li>    Facilitate <strong>collaboration </strong>and document exchange </li>    <li>    Automate <strong>membership fees</strong> and payments </li> </ul>  <h2>Audience</h2>  <p>This session is for<strong> industry associations</strong>, federations, institutes and other membership organizations and is intended to strategic decision makers such as :     <br>Board members, General Secretary, IT managers, Communication department, Finance.</p>  <h2>Agenda</h2>  <ul>   <li>13:30 Welcome, drink </li>    <li>From 14:00 onwards:      <ul>       <li>Today's challenges and needs of membership organizations (By Damien Braeckman) </li>        <li>The future of membership organizations: Facilitate communication and collaboration with members using modern technologies (By Bart Van Coile) </li>        <li>Real-world examples using Microsoft technologies (By Damien Braeckman) </li>     </ul>   </li>    <li>18:00 End of session + drinks and fingerfood </li> </ul>  <h2>Speakers</h2>  <p><strong><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/bartvc.png" width="100" height="143">       <br></strong></p>  <p><strong>Bart Van Coile</strong>     <br>Member of Instituut van IAB (instituut voor Accountants en Belastingsconsulenten) executive comitty and president of the VABF (Eastern Flamish  federation for accountancy)     <br>Linkedin:  <a href="http://be.linkedin.com/pub/bart-van-coile/10/828/a47">http://be.linkedin.com/pub/bart-van-coile/10/828/a47</a></p>  <p><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/damienb.png" width="100" height="111"></p>  <p><strong>Damien Braeckman </strong>    <br>Team Lead and Sr Project Manager at Orbit One     <br>Twitter: <a href="https://twitter.com/#!/DamienBraeckman">@damienbraeckman</a>     <br>Linkedin: <a href="https://twitter.com/#!/DamienBraeckman">http://be.linkedin.com/in/damienbraeckman</a></p>  <h2><strong>More info</strong>:</h2>  <p>Some topics we will cover and discuss:</p>  <ul>   <li>The future of membership organizations </li>    <li>Centralizing all your members data </li>    <li>Public website, intranet, extranet portals - when to use what? </li>    <li>Document sharing and management systems </li>    <li>Bulk and personalized email sending </li>    <li>Keeping track of all correspondance with members </li>    <li>Statistics and 360° view on members </li>    <li>From paper to digital      <ul>       <li>What about signatures, registered mail? </li>     </ul>   </li> </ul>  <ul>   <li>Business cases:      <ul>       <li>IAB: digital member-file and membership portal using Dynamics CRM and ClickDimensions </li>        <li>Recytyre: self-service portal and automatic declaration and invoicing </li>        <li>Education International: Membership fee &amp; invoice automation using Dynamics CRM and SharePoint </li>        <li>IBR: Single sign-on for transparent access to webapplications </li>     </ul>   </li> </ul>  <p>If you want to be part of this interactive session, please register. Seats are limited and interest is high.</p>  <h2><a href="http://membershiporganizationsfacilitatedbymicrosoft.eventbrite.com/" target="_blank">Register for this event</a></h2></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Tue, 30 Aug 2011 14:25:00 GMT</pubDate></item><item><title>OneCafé: The New World of Work / Het Nieuwe Werken</title><link>http://www.orbitone.com/en/blog/archive/2011/08/16/onecafe-the-new-world-of-work-het-nieuwe-werken.aspx</link><guid>/en/blog/archive/2011/08/16/onecafe-the-new-world-of-work-het-nieuwe-werken.aspx</guid><description><![CDATA[<div class="ExternalClassD791CB1AE03F4D4197F73AA0E282EC64"><div class="ExternalClass65BF6451389E4A06B951ACB8F99D874C">   <p>In this interactive session you will learn the benefits of, and how to implement the &quot;New World of Work&quot; in your organisation. We'll give <strong>concrete examples </strong>on how to get you started. </p>    <h5><a href="http://newworldofwork.eventbrite.com/" target="_blank"><font size="5">Register for this event</font></a></h5>    <p><strong>We will talk about:</strong></p>    <ul>     <li><strong>People: </strong>give your team the freedom to organize their work and time </li>      <li><strong>Work Environment: </strong>reorganize your offices to stimulate collaboration and create meeting spaces. </li>      <li><strong>Technology: </strong>work and stay connected to your people and information: anywhere, anytime </li>   </ul>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/89/nwow_2_21CD12B6.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="nwow" border="0" alt="nwow" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/89/nwow_thumb_21CD12B6.jpg" width="543" height="115"></a></p>    <p><strong>About the &quot;New world of work&quot;:        <br></strong></p>    <ul>     <li>The &quot;new world of work&quot; is not a goal on itself, it's an aid that supports your company goals. </li>      <li>Changes of your organisation,and cultural shock this might induce </li>      <li>Giving people indepent functions </li>      <li>Vision of the employer: what do you want to achive, what are your goals </li>      <li>What are the quick-wins, what takes years? </li>      <li>What are the pittfalls  </li>      <li>It all starts in your head </li>      <li>Largest challenge is letting go </li>      <li>Making work fun </li>      <li>Everything becomes more transparent, so there's less need to verify/check </li>      <li>What are the rules, balance between freedom and control </li>   </ul>    <p><strong>Agenda</strong></p>    <ul>     <li>13:30 - Welcome drink </li>      <li>14:00 - What is &quot;The new world of work&quot;, what are the benefits for my company (Pieter Wierckx - <a href="http://www.innoverendwerken.nl/">InnoverendWerken.nl</a>) </li>      <li>16:00 - How do we handle things practically at Orbit One? (Olivier Mangelschots - Orbit One)        <ul>         <li>Office equipment: practical tips, how we do things at Orbit One? </li>          <li>Flexible hours, working from home </li>          <li>ICT tools demonstration: Working from anywhere using Lync, SharePoint and Exchange. </li>          <li>Experiences: Do's and dont's.</li>       </ul>     </li>      <li>17:15 - Roadmap: Where do I begin? - Q&amp;A, group discussion </li>      <li>18:00 - End of session: drink and a snack <strong>         <br></strong></li>   </ul>    <ul></ul>    <p><strong>Audience</strong></p>    <p>CEOs, HR managers, IT managers, facility managers, ...</p>    <p><strong>Speakers</strong></p>    <p><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/315e71d.jpg" width="100" height="100"></p>    <p><strong>Pieter wierckx</strong><strong> -  </strong>is an expert in modern collaboration, social innovation and the new world of work</p>    <p><strong>Twitter: <a title="https://twitter.com/#!/pieterwierckx" href="https://twitter.com/#!/pieterwierckx">https://twitter.com/#!/pieterwierckx</a></strong><strong>        <br>Website: <a href="http://www.innoverendwerken.nl/">http://www.innoverendwerken.nl/</a></strong></p>    <p><strong><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/meeting.jpg" width="100" height="100"></strong></p>    <p><strong>Olivier Mangelschots - </strong>Mangelschots is Managing Director at Orbit One, he applies principles of &quot;the new world of work&quot; in his company for several years.</p>    <p><strong></strong><strong>Email: <a href="mailto:Olivier@orbitone.com">Olivier@orbitone.com</a>         <br>Twitter: <a href="https://twitter.com/#!/orbitonetweet">https://twitter.com/#!/orbitonetweet </a></strong></p>    <p><a href="http://newworldofwork.eventbrite.com/" target="_blank"><font size="5">Register for this event</font></a></p> </div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Tue, 16 Aug 2011 15:00:00 GMT</pubDate></item><item><title>Lync Presence &amp; Chat Widgets</title><link>http://www.orbitone.com/en/blog/archive/2011/07/20/lync-presence-amp-chat-widgets.aspx</link><guid>/en/blog/archive/2011/07/20/lync-presence-amp-chat-widgets.aspx</guid><description><![CDATA[<div class="ExternalClassB03DA520E0D84E04BAF36E69F3FC231B">
<p>At Orbit One we help customers implement Microsoft Lync Unified Communications solutions - including Enterprise Voice - as a total replacement for the classic switchboard.</p>
<p>As a side project we built these Lync Presence and Chat Widgets.</p>
<p><font color="#000000">The Lync Presence widget shows Lync presence information on your website. Website visitors can start chat conversations using the Lync Chat widget. The widgets are<strong> jQuery plugins</strong> communicating with a WCF Service. Place them on <strong>any kind of website</strong> (PHP, .NET) and style with CSS.</font> </p>
<p>We released this <a href="http://lyncwidget.codeplex.com/" target="_blank">on codeplex</a>, free to use for anyone! Check it out for some more background and installation instructions.</p>
<p>Our development team builds and integrates custom modules for Dynamics CRM and SharePoint, so let us know if you have problems integrating these widgets on your website. We'd love to help you out!</p>
<h2>Features</h2>
<ul>
<li><b>Fully customizable styling</b>: <font color="#000000">The client is simply HTML/JS/CSS so very easy to skin. </font></li>
<li><b>Deployable on any website using any technology</b>: <font color="#000000">No ASP.NET required at the client side. <br></font></li></ul>
<h2>Demo</h2>
<p><a class="externalLink" href="http://lyncpresence.orbitone.com/">http://lyncpresence.orbitone.com/<span class="externalLinkIcon"></span></a> <br><br>Feel free to start a chat conversation. You might be interested in chatting with Thomas Stock (the main developer of the Lync Widgets) or Olivier Mangelschots (the managing director of Orbit One). <br></p>
<h2>Screenshots </h2>
<h3>Lync Presence Widget</h3>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/lyncPresence_2_39127815.png"><img style="display:inline" title="lyncPresence" alt="lyncPresence" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/lyncPresence_thumb_66FFCACD.png" width="450" height="420"></a> <br></p>
<h3>Lync Chat Widget</h3><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/lyncChatShort_2_66FFCACD.png"><img style="display:inline" title="lyncChatShort" alt="lyncChatShort" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/lyncChatShort_thumb_66FFCACD.png" width="1018" height="612"></a> <br>
<h2>Minimal code example</h2>
<p><b>Displays user name and status; no image; default timer</b>  <br><br><br><br><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/minimalPresence_2_66FFCACD.png"><img style="display:inline" title="minimalPresence" alt="minimalPresence" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/88/minimalPresence_thumb_66FFCACD.png" width="887" height="781"></a> <br><b></b></p>
<p><b>This project makes use of the following open source projects:</b> </p>
<ul>
<li><a class="externalLink" href="http://htmlpresencecontrols.codeplex.com/">http://htmlpresencecontrols.codeplex.com<span class="externalLinkIcon"></span></a> <font color="#000000">was used as a starting point for the presence part of the WCF service. </font></li>
<li><a class="externalLink" href="http://www.jquery.com/">jQuery<span class="externalLinkIcon"></span></a> <font color="#000000">and the</font> <a class="externalLink" href="http://plugins.jquery.com/project/timers">jQuery.timers<span class="externalLinkIcon"></span></a> <font color="#000000">plugin. </font></li>
<li><a class="externalLink" href="http://logging.apache.org/log4net/index.html">log4net<span class="externalLinkIcon"></span></a> </li>
<li><a class="externalLink" href="http://lesscss.org/">LESS<span class="externalLinkIcon"></span></a> </li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thomas Stock</dc:creator><pubDate>Thu, 21 Jul 2011 10:45:00 GMT</pubDate></item><item><title>Automatic localization for ASP.NET websites</title><link>http://www.orbitone.com/en/blog/archive/2011/07/15/automatic-localization-for-asp-net-websites.aspx</link><guid>/en/blog/archive/2011/07/15/automatic-localization-for-asp-net-websites.aspx</guid><description><![CDATA[<div class="ExternalClass89CAD99CF20940B48CC9122252FE927B">
<p>The solution consists in PowerShell scripts to automatically create resource files for your website's static content and translate the resource files in different languages (Google Translate API).</p>
<p><strong>Direct download link:</strong> <a href="http://www.rahulsingla.com/sites/default/files/content/blog/asp.net-localization.zip">http://www.rahulsingla.com/sites/default/files/content/blog/asp.net-localization.zip</a></p>
<p>The scripts do the following: </p>
<ol>
<li>Go through your .aspx/.ascx files and add <strong>meta:resourcekey</strong> attributes to eligible tags. </li>
<li>Create primary resource (.resx) files by extracting translatable attributes to these files from .aspx/.ascx files. </li>
<li>Create secondary resource files for the desired locales you want to support in your ASP.NET application. </li>
<li>Use Google Translate to automatically provide string translations in the secondary resource files. </li>
<li>Extract translatable strings from javascript files. </li>
<li>Create resource files again and provide automatic translation for these javascript strings through resource files. </li>
<li>Create new javascript files (e.g. myfile.fr.js) which you can include on the page and your javascript strings wrapped in <strong>Rahul.t</strong> method call become translatable automatically. </li></ol>
<p>To get started:</p>
<ol>
<li>Download the attached sample application, extract it and configure it in IIS. you can use it with Visual Studio's built-in Cassini web-server also. </li>
<li>Open &quot;<em>resources\localize\Controller.ps1</em>&quot; file from the attached code. On 5th line, update the application's path. </li>
<li>Open &quot;<em>resources\localize\GTranslate.ps1</em>&quot; file and on third line, update your Google Translate's API key. You can generate the same from here: <a href="https://code.google.com/apis/console/">https://code.google.com/apis/console/</a> </li></ol>
<p>Steps you need to perform to use this framework for yourself:</p>
<ol>
<li>Ensure you have Powershell 2.0 installed. </li>
<li>Extract the scripts to a folder on your disk. </li>
<li>Open Controller.ps1 in any text editor, and change line 5 to provide the path to root of your ASP.NET application. </li>
<li>Next open ResourceFileGenerator.ps1 and change line 3 to include all locales you need to support. </li>
<li>Then open GTranslate.ps1, and substitute your Google Translate API key in line 3. You can get the same at: <a href="https://code.google.com/apis/console/">https://code.google.com/apis/console/</a> </li>
<li>That's it, execute Controller.ps1 from Powershell console and see the messages that provide you the progress of the activity and what the scripts are doing.<strong> <br></strong></li>
<li>Open AddMetaTag.ps1 and change lines 8-10 to include all tags which should be definitely localized no matter they have an ID attribute or not. Please specify the tags in lowercase only together with the tag prefix if any. </li>
<li>Open MetaTagExtractor.ps1 and change $localizableAttributes, $translatableAttributes, and $conditionallyTranslatable arrays/hashes on lines 9, 11 and 15 respectively. <br>The comments in the file would help you understand what each of these array/hash is for. </li>
<li>Open Controller.ps1 and change the paths at the bottom of the file if you need automatic localization/translation for a specific folder in your application only and not the whole application. You can also choose whether to process the directories recursively or not. Again comments there will help you. </li></ol>
<p>They can also do javascript localisation.</p>
<p>Recently we used these scripts for a client project. We needed to do some customizations, but due to the clear documentation it was straightforward.</p>
<p>These scripts were developed by <a href="http://www.rahulsingla.com/blogs/rahul" target="_blank">Rahul Singla</a>. Thanks Rahul for the great work!</p>
<p>For more details, check the original blog posts:</p>
<p><a href="http://www.rahulsingla.com/blog/2011/02/asp-net-using-powershell-and-google-translate-to-provide-automatic-localization">http://www.rahulsingla.com/blog/2011/02/asp-net-using-powershell-and-google-translate-to-provide-automatic-localization</a></p>
<p><a href="http://www.rahulsingla.com/blog/2011/06/asp-net-a-complete-translation-framework-through-powershell-and-google-translate">http://www.rahulsingla.com/blog/2011/06/asp-net-a-complete-translation-framework-through-powershell-and-google-translate</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Voicu Matei</dc:creator><pubDate>Fri, 15 Jul 2011 16:43:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Office 365 Launched, Orbit One is here to guide you</title><link>http://www.orbitone.com/en/blog/archive/2011/07/08/office-365-launched.aspx</link><guid>/en/blog/archive/2011/07/08/office-365-launched.aspx</guid><description><![CDATA[<div class="ExternalClass262A2D594CEF4ED0B0D58A50BE9D2FB9">
<p>Microsoft launched recently launched <a href="http://www.microsoft.com/en-gb/office365/online-software.aspx">Office 365</a>. Office 365 is a cloud based suite of business productivity and collaboration applications that cover:</p>
<ul>
<li>Instant messaging and video-chat (Microsoft Lync) </li>
<li>Document management and collaboration (Microsoft SharePoint 2010) </li>
<li>Email (Exchange Online) </li>
<li>Office Professional </li>
<li>Office Web Apps (Microsoft Office in your browser)</li></ul>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/86/image_2_751DC306.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/86/image_thumb_751DC306.png" width="335" height="111"></a></p>
<p>Orbit One has been working with BPOS and the beta of Office 365 for a while and even has several clients using the beta version at the moment.</p>
<p>If you want to know what Orbit One has to say about Office 365, have a look at our slideshare presentation obout Office 365: <a title="http://www.slideshare.net/orbitone/office-365-is-the-cloud-right-for-your-company" href="http://www.slideshare.net/orbitone/office-365-is-the-cloud-right-for-your-company">http://www.slideshare.net/orbitone/office-365-is-the-cloud-right-for-your-company</a></p>
<p>In The Netherlands they celebrated the launch in a special way: </p>
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:cbcf6aa6-cc3f-4689-804a-958eba705537" class="wlWriterEditableSmartContent">
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px" id="2566187a-7fed-45cd-9c52-1c982ce73c96">
<div><a href="http://www.youtube.com/watch?v=hDqBVJz5bB8&amp;feature=related"><img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" alt="" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/86/videoeafcd582be5c_751DC306.jpg"></a></div></div>
<div style="width:448px;clear:both;font-size:0.8em">Microsoft Office 365 Launch (The Netherlands)</div></div>
<p>An overview of what Office 365 has to offer: </p>
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2b41dfd4-0dca-47f6-b9be-43f0fcdda72d" class="wlWriterEditableSmartContent">
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px" id="110478bd-7670-45d5-8989-c49d78695cc6">
<div><a href="http://www.youtube.com/watch?v=7SGp9pA9cAY"><img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" alt="" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/86/video858c13b2dc2f_751DC306.jpg"></a></div></div></div>
<p> </p>
<p>If you want to know if Office 365 is a good fit for your company and/or want to know to implement Office 365, feel free to <a href="mailto:info@orbitone.com">contact us</a> for personal advise.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Fri, 08 Jul 2011 08:35:00 GMT</pubDate></item><item><title>Lync and Doorphones – Configuration with Cisco</title><link>http://www.orbitone.com/en/blog/archive/2011/07/06/lync-and-doorphones-–-configuration-with-cisco.aspx</link><guid>/en/blog/archive/2011/07/06/lync-and-doorphones-–-configuration-with-cisco.aspx</guid><description><![CDATA[<div class="ExternalClassB07D1D5AC7E64885B5E3106A578A5CA3">
<div class="ExternalClassA2BB09DBDA70438883D3AAE820B028D8">
<p>VoIP is slowly becoming the new standard for replacing your old PBX infrastructure, but one of the common issues is <em>“What to do with your old analog phones?”</em>. An example of this can be the doorphone, which has some buttons, programmed to called certain internal or external numbers.</p>
<p>At OrbitOne, we fully replaces our Cisco telephone system with Lync Server 2010 – and all outgoing calls are handled through Lync. But, we do have some doorphones (which are just analog phones), connected to our Cisco CallManager (CME / CCME) through an ATA, which should be able to dial internal as well as external numbers. There are some solutions available on the market today to do so, AudioCodes for example has some hardware and software to integrate your classic analog phones into Lync, but if you already have a Cisco infrastructure, you can just as well use your existing hardware and configure your Lync to support these devices.</p>
<h1>Topology</h1>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/85/image_4_013360C7.png"><img style="display:inline" title="image" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/85/image_thumb_013360C7.png" width="499" height="346"></a></p>
<p>The figure above illustrates our current Topology. Our doorphones (which, in our case, are Fasttel doorphones) are connected to Cisco ATA-188 and ATA-186 Analog Telephone Adapters. These ATAs are connected through our network to the Cisco Call Manager, which holds the configuration for these ATA devices. The Cisco CallManager has no telephone lines connected, and no SIP trunk configured, it is just connected to our Lync Mediation Server through our network.</p>
<p>The Lync Mediation server communicates with our Lync Front-End server, and is connected to our SIP trunk, which is deliverd by Telenet.</p>
<p>The goal is easy: configure Lync and our CCME so that:</p>
<ul>
<li>The doorphones are reachable from Lync with a short internal number </li>
<li>The doorphones can dial to Lync clients </li>
<li>The doorphones can dial externally through the Telenet SIP trunk </li></ul>
<h1>CCME configuration</h1>
<p>In order to achieve our goal, we needed to configure our CallManager to be able to route calls to Lync (both for internal and external calls). In fact, our CallManager isn’t aware if the dialed number is internal or external, he just sends the call through Lync, and it is Lync who decides if the number is a Lync client of an external number. This is also because we don’t use internal numbers for Lync clients, every user has a full E.164 telephone number.</p>
<p>First of all, we have chosen to define internal short numbers for our doorphones. This can be done through an ephone and ephone-dn configuration. An example, let’ say we wan to use 91-99 for doorphones:</p>
<table border="0" cellspacing="0" cellpadding="2" width="531">
<tbody>
<tr>
<td valign="top" width="223"><font color="#000000">ephone 91 <br>  description doorphone example <br>  mac-address 0011.2121.29F3        <br>  max-calls-per-button 2 <br>  type ata <br>  button 1:91                                  <br>!</font></td>
<td valign="top" width="306"><br><br><font color="#666666">(MAC address of ATA) <br><br><br>(Connect port 1 to ephone-dn 91)</font></td></tr>
<tr>
<td valign="top" width="223"><font color="#333333">ephone-dn 91 <br>  number 91                                    <br>  description doorphone example <br>  name doorphone example <br>!</font></td>
<td valign="top" width="306"><br><font color="#666666">(Internal number of the phone) <br></font></td></tr></tbody></table>
<p> </p>
<p>Next, we configured a dial-peer to dial-out through Lync:</p>
<table border="0" cellspacing="0" cellpadding="2" width="534">
<tbody>
<tr>
<td valign="top" width="298">
<p>dial-peer voice 1 voip <br>  tone ringback alert-no-PI <br>  description Lync Server <br>  translation-profile incoming LyncToCisco <br>  translation-profile outgoing CiscoToLync <br>  destination-pattern T  <br>  session protocol sipv2 <br>  session target ipv4:192.168.0.189:5060 <br>  session transport tcp  <br>  incoming called-number .  <br>  dtmf-relay rtp-nte <br>  codec g711alaw <br>  ip qos dscp cs3 signaling <br>  no vad <br>!</p></td>
<td valign="top" width="234"><br><br><br><em>(described below) <br>(described below) <br>Apply for all destinations <br>We are talking SIP <br>Lync Mediation listening port <br>Lync SIP = TCP traffic, not UDP <br>Apply for all called numbers</em></td></tr>
<tr>
<td valign="top" width="298">
<p>voice translation-profile OCStoCisco <br>  translate called 1 <br>! <br>voice translation-profile CiscoInternaltoOCS <br>  translate calling 2 <br>!</p></td>
<td valign="top" width="234">
<p><br><em><font color="#666666">called = destination <br><br><br>calling = source number</font></em></p></td></tr>
<tr>
<td valign="top" width="298">
<p>voice translation-rule 1 <br>  rule 1 /^003293301591$/ /91/ <br>! <br>voice translation-rule 2 <br>  rule 1 /91/ /+3293301591/ <br>!</p></td>
<td valign="top" width="234"><br><em>Optional, only needed if you want to dial from outside to your device <br><br>Needed for dialing outside!</em></td></tr></tbody></table>
<p> </p>
<p>Voice translation-rule 1 is optional, and only required if you want to dial from the outside world to your doorphone or analog telephone. Because it’s a doorphone, we don’t want this option, we only want the doorphone to dial outside, so we configured only the 2nd translation rule.</p>
<p>So far, so good, no we only need some Lync configuration and we’re all done!</p>
<h1>Lync configuration</h1>
<p>First, we need to route calls to the internal numbers to our CCME. (And if needed, also for the external numbers of our doorphones). To do so, configure your telephone routing for these numbers (2digit numbers, starting with a 9, and numbers with format +329330159.) to route to your Cisco CCME instead of the SIP trunk you are using. To do so, you need to add your Cisco CCME as Voice Gateway in your lync topology and add it to your Mediation server as Voice Gateway!</p>
<p>After doing so, you are able to dial to your doorphones using internal (and optionally external numbers), but your doorphones can’t dial to the outside world yet. To allow this, you need to configure <strong>CsAnalogDevices</strong> through Lync PowerShell.</p>
<p>Create a CSAnalogDevice through Lync PowerShell with the <strong>New-CsAnalogDevice </strong>command:</p>
<blockquote>
<p><strong>New-CsAnalogDevice</strong> -LineUri <strong>tel:+3293301591</strong> -DisplayName <strong>&quot;Doorphone Example&quot; -</strong>RegistrarPool<strong> pool.company.com -AnalogFax $False -Gateway 192.168.123.123 -OU &quot;ou=Doorphones,dc=contoso,dc=com&quot;</strong></p></blockquote>
<p>The LineUri is the doorphone’s external number in E.164 format. RegistrarPool is the name of your Lync pool. AnalogFax is set to false because we are not configuring a fax device. Gateway points to your CCME (which, in this example, has IP 182.168.123.123). OU is the place in AD where you want to store the AnalogDevice object.</p>
<p>After doing so, you need to grant a Voice Policy that allows your device to dial outside. Create a Voice Policy that has Enterprise Voice enabled, and grant the policy through PowerShell. In our example, we created a VoicePolicy DoorphonePolicy:</p>
<blockquote>
<p><strong>Grant-CsVoicePolicy</strong> –Identity &quot;<strong>DoorPhone Example</strong>&quot; –PolicyName &quot;<strong>DoorphonePolicy</strong>&quot;</p></blockquote>
<p>As Identity, select the Identity of the CSAnalogDevice your just created. PolicyName refers to your VoicePolicy.</p>
<p>After doing so, and if your Policy is configured correctly, your doorphones or analog devices should be able to dial to both Lync clients and external numbers. </p>
<p>Good luck migrating to Lync!</p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Pieter-Jan Maenhaut</dc:creator><pubDate>Wed, 06 Jul 2011 21:35:00 GMT</pubDate></item><item><title>OneCafé: Social Computing in your organisation - Tuesday July 26</title><link>http://www.orbitone.com/en/blog/archive/2011/07/06/onecafe-social-computing-in-your-organisation.aspx</link><guid>/en/blog/archive/2011/07/06/onecafe-social-computing-in-your-organisation.aspx</guid><description><![CDATA[<div class="ExternalClass0733F0F4885F43979F580718AEE86D85">
<p>This is an interactive session where you will learn what benefits are of social computing for your organisation, and how it can move knowledge management to the next level.</p>
<p><a href="http://socialcomputinginyourorganisation.eventbrite.com/" target="_blank"><strong><font size="4">Register for this event</font></strong></a></p>
<p>Orbit One hosts this session, offering an insight on how to use Microsoft SharePoint to improve collaboration and knowledge management.</p>
<p>Social software like Facebook, LinkedIn, YouTube, Skype,  Flickr, etc. has been adopted by millions of people around the globe as a new way of staying in touch with the people. During this session we will show you that<strong> the idea behind these applications can also work in a business context</strong>.</p>
<p><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/capture.jpg" width="407" height="146"></p>
<p>During this session we will demonstrate how you can reap the benefits of social software in your organisation, stuff you'll learn:</p>
<ul>
<li><strong>Find experts</strong> in your organisation</li>
<li><strong>Nurture ideas</strong> within your organisation</li>
<li>Prevent reinventing the wheel, <strong>reuse knowledge</strong></li>
<li><strong>Working from home</strong> and staying up-to-date</li>
<li>Increase visibility of people contributing and sharing knowledge, <strong>promote leaders</strong></li>
<li><strong>Decrease </strong>work interruptions</li></ul>
<h2>Audience</h2>
<p>Everyone interested in improving the collaboration &amp; knowledge management within their organisation. Information managers, Business analysts, SharePoint key users, community managers, ...</p>
<h2>When</h2>
<p>Tuesday July 26 2011, 15:30 - 18:00</p>
<h2>Agenda</h2>
<ul>
<li>15h30 Welcome &amp; coffee</li>
<li>16h00 Workshop</li>
<li>18h00 Drinks &amp; Socializing (Bite &amp; table football)<br></li></ul><strong></strong>
<h2>Speaker</h2>
<p><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/17144901/thijs.jpg" width="157" height="216"></p>
<p>Thijs ter Beek <br>Project manager at Orbit One <br>Email: <a href="mailto:thijs@orbitone.com">thijs@orbitone.com</a> <br>Twitter: <a href="http://twitter.com/#!/thijsterbeek">@thijsterbeek </a><strong></strong></p>
<h2>Language</h2>
<p>English and Dutch</p>
<p><a href="http://socialcomputinginyourorganisation.eventbrite.com/" target="_blank"><strong><font size="4">Register for this event</font></strong></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Wed, 06 Jul 2011 16:15:00 GMT</pubDate></item><item><title>OneCafé: Marketing Automation slide deck online</title><link>http://www.orbitone.com/en/blog/archive/2011/06/23/onecafe-marketing-automation-slide-deck-online.aspx</link><guid>/en/blog/archive/2011/06/23/onecafe-marketing-automation-slide-deck-online.aspx</guid><description><![CDATA[<div class="ExternalClass1DAD43E5D647434287BEE7DB52DF5210">
<p>Dynamics CRM + ClickDimensions</p>
<p>First of all I would like to thank all the attendees for the great cooperation during this session. We’ll all learn more when we hear about the problems and solutions of other companies.</p>
<p>We promised to have the slide deck available, now all the people that couldn’t make it can also have a look at what we discussed.</p>
<p>We look forward to welcome you again at one of our upcoming OneCafés.</p>
<div style="width:425px" id="__ss_8405215"><strong style="margin:12px 0px 4px;display:block"><a title="One café marketing automation in dynamics crm with clickdimensions" href="http://www.slideshare.net/orbitone/one-caf-marketing-automation-in-dynamics-crm-with-clickdimensions">One café marketing automation in dynamics crm with clickdimensions</a></strong> 
<div style="padding-bottom:12px;padding-left:0px;padding-right:0px;padding-top:5px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/orbitone">Orbit One Internet Solutions</a> </div></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Fri, 24 Jun 2011 15:34:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 2011/default.aspx">CRM 2011</category></item><item><title>Olivier interviewed by Robert Duffner: “Thought Leaders in the Cloud”</title><link>http://www.orbitone.com/en/blog/archive/2011/06/16/olivier-interviewed-by-robert-duffner-“thought-leaders-in-the-cloud”.aspx</link><guid>/en/blog/archive/2011/06/16/olivier-interviewed-by-robert-duffner-“thought-leaders-in-the-cloud”.aspx</guid><description><![CDATA[<div class="ExternalClassAA360F4080DA4C6BA28813F7AF027B93"><p>Olivier was interviewed by Robert Duffner (Microsoft Azure Product Director) earlier this month. You can read the full interview on <a target="_blank">MSDN</a>.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/82/image_2_2B17F248.png"><img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/82/image_thumb_2B17F248.png" width="272" height="58"></a></p>  <p>In the interview they cover following subjects:</p>  <ul>   <li><b>Identity management in hybrid environments</b> </li>    <li><b>The role of partners in providing customized cloud solutions</b> </li>    <li><b>SLAs and cloud outages</b> </li>    <li><b>Migrating to the cloud vs. building for the cloud</b> </li>    <li><b>Things in clouds work better together</b><b> </b></li> </ul>  <p>Full article:</p>  <ul>   <li><a href="http://blogs.msdn.com/b/windowsazure/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">http://blogs.msdn.com/b/windowsazure/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx</a> </li>    <li><a href="http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx</a> </li> </ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Thu, 16 Jun 2011 10:58:05 GMT</pubDate></item><item><title>SharePoint 2010 Batch Edit</title><link>http://www.orbitone.com/en/blog/archive/2011/06/06/sharepoint-2010-batch-edit.aspx</link><guid>/en/blog/archive/2011/06/06/sharepoint-2010-batch-edit.aspx</guid><description><![CDATA[<div class="ExternalClass0471E32F468943FCA3C41876C7F7E31A">
<p><strong></strong> </p>
<h2><strong>Project Description</strong></h2>
<p><strong></strong>A Bulk &amp; Batch updating list &amp; document properties Ribbon Button in SharePoint 2010. This ribbon button makes it possible to update multiple items with a single click, supporting the common used column types like Managed Metadata, Enterprise Keyword, People Picker and many more … Wonder why this wasn’t in-the-box.</p>
<h2><strong>Features</strong></h2>
<ul>
<li>Edit properties in a Custom List or Document Library </li>
<li>Edit enterprise and metadata keyword fields </li>
<li>Append keywords to enterprise or metadata keyword fields </li>
<li>Support for People picker, Date fields, Choice fields, and many more... </li></ul>
<p><b>Edit properties in a Custom List or Document Library</b></p>
<p>Right from the ribbon you can open Batch Edit when selected multiple list items. Batch Edit gives the possibility to edit every field value. When a field is left blank the existing value value will be retained, otherwise values will be overridden.</p>
<p><b>Edit enterprise and metadata keyword fields</b></p><strong></strong>
<p>Enterprise and metadata keyword fields are bound to a term store. Batch Edit will allow you to create new keywords or choose existing keywords from the term store.</p>
<p><b>Append keywords to enterprise or metadata keyword fields</b></p><strong></strong>
<p>Keyword fields can be single or multi-value. When multi-value, keywords can be appended.</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto" src="http://img51.imageshack.us/img51/6108/appendingenterprise.png"></p>
<p><b>Support for People picker, Date fields, Choice fields, and many more...</b></p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto" src="http://img28.imageshack.us/img28/5623/persondate.png"></p>
<h2>Example</h2>
<p>We have a Document List, and we want to change the author for some of the documents</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_7_47E4B229.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_thumb_2_47E4B229.png" width="644" height="90"></a></p>
<p>By selecting multiple items in the list, the Batch Edit button becomes active.  Here we select only the first three items.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_9_47E4B229.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_thumb_3_47E4B229.png" width="244" height="69"></a></p>
<p>Batch Edit pops ups for editing all custom fields.  Here we get a people picker for the author field</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_13_47E4B229.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_thumb_5_47E4B229.png" width="457" height="113"></a></p>
<p>Results,</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_11_47E4B229.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/80/image_thumb_4_47E4B229.png" width="644" height="87"></a></p>
<p> </p>
<h2>Installation</h2>
<p>Batch Edit is created for SharePoint 2010. It will work on both SharePoint Server 2010 and SharePoint Foundation 2010</p>
<ul>
<li>Download Batch Edit from the <a href="http://sp2010batchedit.codeplex.com/releases/view/66629">Download</a> section on the <a href="http://sp2010batchedit.codeplex.com/">Codeplex project site</a> </li>
<li>Open Powershell prompt on SharePoint Server 2010 as Administrator </li>
<li>Add-SPSolution c:\temp\SP2010.BatchEdit.wsp </li>
<li>Open SharePoint Central Administration &gt; Solution Management </li>
<li>Deploy to all Web Applications </li></ul>
<h2>Future</h2>
<ul>
<li>Extended Lists support </li>
<li>Batch send email with attachments for document libraries </li>
<li>Start workflows for selected items </li>
<li>Changing Content Types of list items </li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hans De Smedt</dc:creator><pubDate>Tue, 07 Jun 2011 08:31:00 GMT</pubDate></item><item><title>OneCafé: Marketing Automation with Dynamics CRM 2011 and ClickDimensions</title><link>http://www.orbitone.com/en/blog/archive/2011/06/06/onecafé-marketing-automation-with-dynamics-crm-2011-and-clickdimensions.aspx</link><guid>/en/blog/archive/2011/06/06/onecafé-marketing-automation-with-dynamics-crm-2011-and-clickdimensions.aspx</guid><description><![CDATA[<div class="ExternalClassD22CC2B14E87403A89C1B7D95CC27384">
<p>Interactive session where you will learn how to send out email campaigns using Microsoft CRM 2011, track results, follow leads on your website and more. Revolutionary!</p>
<p><a href="https://www.eventbrite.com/register?orderid=39897637909&amp;ebtv=D&amp;eid=1776963947&amp;client_token=noqueue"><font size="3"><strong>Register for this event</strong></font></a><font size="3"></font></p>
<p><a href="http://crm.dynamics.com/nl-nl/"><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/10118245/crm.jpg" width="400" height="93"></a></p>
<p><a href="http://www.clickdimensions.com/"><img alt="" src="https://evbdn.eventbrite.com/s3-s3/eventlogos/10118245/click.jpg" width="400" height="67"></a></p>
<p>Orbit One offers insight into using Marketing Automation and Dynamics CRM to <strong>generate and qualify leads</strong> for your business.</p>
<p>Using a Customer Relationship Management platform has many advantages. One of the possibilities of Dynamics CRM is to start marketing campaigns that can be sent out to marketing lists by email. The standard functionalities of Dynamics CRM to create and manage these marketing lists are good, but the automation of the marketing process still leaves some room for improvement.</p>
<p><a href="http://www.clickdimensions.com/">ClickDimensions</a> is a Dynamics CRM solution that fills the gap, providing a marketing automation solution that streamlines your sales efforts by providing you with the best feedback from your campaigns.</p>
<p><strong>During this session you’ll learn:</strong></p>
<ul>
<li>What Marketing Automation is about and what the advantages are</li>
<li>What aspects ClickDimensions covers</li>
<li>How ClickDimensions and Dynamics CRM work as one solution</li>
<li>How to send out your marketing emails</li>
<li>How to track further interactions with your website, online advertising, web forms,...</li>
<li>How to generate and pinpoint quality leads automatically</li>
<li>And more…</li></ul>
<p>This free event will be hosted on Tuesday June 21st, from 15:30 to 18:00 with drinks afterwards.</p>
<p><a href="https://www.eventbrite.com/register?orderid=39897637909&amp;ebtv=D&amp;eid=1776963947&amp;client_token=noqueue"><font size="3"><strong>Register for this event</strong></font></a><font size="3"></font></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Mon, 06 Jun 2011 17:18:00 GMT</pubDate></item><item><title>Thought Leaders in the Cloud</title><link>http://www.orbitone.com/en/blog/archive/2011/06/03/thought-leaders-in-the-cloud.aspx</link><guid>/en/blog/archive/2011/06/03/thought-leaders-in-the-cloud.aspx</guid><description><![CDATA[<div class="ExternalClass2AE88FAE1B8A44008D26C3CC337E09FC">
<p>The <a href="http://blogs.msdn.com/b/windowsazure/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">Windows Azure Team Blog</a> and <a href="http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">Technet</a> feature an interview with Olivier Mangelschots (Managing director) and <a href="http://www.linkedin.com/in/robertduffner">Robert Duffner</a>: “<a href="http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">Thought Leaders in the Cloud</a>”</p>
<p>Topics:</p>
<ul>
<li><font color="#000000">Identity management in hybrid environments</font></li>
<li><font color="#000000">The role of partners in providing customized cloud solutions</font></li>
<li><font color="#000000">SLAs and cloud outages</font></li>
<li><font color="#000000">Migrating to the cloud vs. building for the cloud</font></li>
<li><font color="#000000">Things in clouds work better together</font></li></ul>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/79/image_2_65CA82DF.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" align="left" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/79/image_thumb_65CA82DF.png" width="240" height="51"></a></p>
<h2>Robert Duffner</h2>
<p>Robert Duffner is Director of Product Management for Windows Azure in which he is focused on the voice of the customer with the customer advocacy programs he directs to help shape the future product direction of the Windows Azure Platform. These include the Windows Azure Platform Customer Advisory Board as well as driving the Windows Azure Technology Adoption Program (TAP). Robert also stays engaged with top Windows Azure experts as the Community Leader for the Windows Azure Most Valued Professionals (MVP) program. Robert is one of Microsoft's top experts in Open Source software (OSS) where he joined the company in 2007 as the Director of Open Source Strategy.</p>
<p><a href="http://blogs.msdn.com/b/windowsazure/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">http://blogs.msdn.com/b/windowsazure/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx</a><a href="http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx">http://blogs.technet.com/b/itinsights/archive/2011/06/02/thought-leaders-in-the-cloud-talking-with-olivier-mangelschots-managing-director-at-orbit-one-internet-solutions.aspx</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Fri, 03 Jun 2011 14:14:00 GMT</pubDate></item><item><title>Marketing Automation webinar hosted by ClickDimensions</title><link>http://www.orbitone.com/en/blog/archive/2011/05/25/marketing-automation-webinar-hosted-by-clickdimensions.aspx</link><guid>/en/blog/archive/2011/05/25/marketing-automation-webinar-hosted-by-clickdimensions.aspx</guid><description><![CDATA[<div class="ExternalClass90501BA406014B1890169325D5691961">
<p>ClickDimensions, an Orbit One partner specialized in Marketing Automation for Dynamics CRM, offers a free online workshop on Wednesday July 1st called “True Stories of Marketing with Microsoft CRM”. This online workshop is built around real world examples of campaigns that where handled with Microsoft Dynamics CRM.</p>
<p><img src="http://clickdimensions.com/images/WebinarTemplate/SmallWebinarHeader.png"></p>
<p>The workshop will cover the following subjects:</p>
<ul>
<li>Double a newsletter list in two weeks using a unique approach toward email marketing and lead scoring </li>
<li>Develop an easy way to improve web traffic by understanding the quality of visitors by traffic sources </li>
<li>Implement a strategy for creating great content that positions your firm as a leader </li>
<li>Apply simple tips for search engine marketing and search engine optimization </li>
<li>Provide sales with easy to use automated prospecting and marketing tools to make them more effective and efficient </li>
<li>Identify how to best use the right social channels to drive business value </li></ul>
<p>Feel free to register through the <a href="http://www.clickdimensions.com/lp/TrueStories.html">registration page</a>.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Fri, 27 May 2011 12:19:00 GMT</pubDate></item><item><title>Second Umbraco &amp; Azure workshop</title><link>http://www.orbitone.com/en/blog/archive/2011/05/18/second-umbraco-amp-azure-workshop.aspx</link><guid>/en/blog/archive/2011/05/18/second-umbraco-amp-azure-workshop.aspx</guid><description><![CDATA[<div class="ExternalClass1DE2D74705B9433481C576E81998DE5E"><p>Second edition of this popular interactive workshop, this time we will focus on the new &quot;<a href="http://waacceleratorumbraco.codeplex.com/">Windows Azure Accelerator for Umbraco</a>&quot; CodePlex project.</p>  <p><a href="http://www.eventbrite.com/event/1700976667">Register for this event</a> – <a href="http://www.buug.be">www.buug.be</a> </p>  <h2>Speakers</h2>  <h5></h5>  <ul>   <li>Wim De Coninck - <a href="http://www.buug.be/en/events/umbraco-and-azure-workshop-follow-up-session">Orbit One</a></li>    <li>Olivier Mangelschots - <a href="http://www.orbitone.com">Orbit One</a></li>    <li>Kurt Claeys - <a href="http://www.buug.be/en/events/umbraco-and-azure-workshop-follow-up-session">Microsoft</a></li> </ul>  <h2>Schedule</h2>  <p>9:00  Welcome &amp; coffee   <br>9:30-11:00  Kurt Claeys - Technical dive into Azure    <br>11:00-11:30  Coffee break    <br>11:30-12:30  Umbraco CMS and Azure    <br>12:30-13:30  lunch break    <br>13:30-13:45  Azure Development Program (how can it help you)    <br>13:45-16:30  hands-on workshop, setup your Umbraco website in Azure</p>  <h2>Topics</h2>  <h4><img alt="cloud" src="http://www.buug.be/media/2800/4657.cp_5f00_lockup_5f00_vb_5f00_00db5b47.png" width="355" height="157"></h4>  <h3><font color="#000000">Azure</font></h3>  <li><font color="#000000">Web &amp; Worker Role </font></li>  <li><font color="#000000">Virtual Machine sizes &amp; performance </font></li>  <li><font color="#000000">Storage Types: Blobs, Tables, Azure SQL, queues </font></li>  <li><font color="#000000">No local persistant storage </font></li>  <li><font color="#000000">Network Load Balancing (round robin) </font></li>  <li><font color="#000000">Scale out to multiple instances </font></li>  <li><font color="#000000">Multiples websites in one Azure account </font></li>  <li><font color="#000000">Azure Content Delivery Network </font></li>  <li><font color="#000000">Swap between development &amp; production environments </font></li>  <li><font color="#000000">Typical monthly costs to host Umbraco site </font></li>  <li><font color="#000000">Q&amp;A </font></li>  <h3><font color="#000000">Umbraco and Azure</font></h3>  <li><font color="#000000">Where does Umbraco store it's information? </font></li>  <li><font color="#000000">Challenges in the Azure cloud </font></li>  <li><a href="http://waacceleratorumbraco.codeplex.com/"><font color="#000000">CodePlex Accelerator</font></a><font color="#000000"> - How does it work, how to roll out </font></li>  <li><font color="#000000">Future: Umbraco 5 will have native Azure support </font></li>  <li><font color="#000000">Q&amp;A </font></li>  <h3><font color="#000000">Bring your laptop!</font></h3>  <p><font color="#000000">It's a workshop where everyone will work on</font> his/her own laptop. Don't forget to pre-install:</p>  <ul>   <li><a href="http://www.microsoft.com/visualstudio/en-us/download">Visual Studio 2010</a></li>    <li><a href="http://msdn.microsoft.com/en-us/windowsazure/cc974146">Windows Azure SDK 1.3</a></li>    <li><a href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx">SQL Server 2008 Express R2</a></li>    <li><a href="http://sqlazuremw.codeplex.com">SQL Azure migration wizard</a></li>    <li><a href="http://www.microsoft.com/windowsazure/offers">Registered Azure Account</a></li> </ul>  <p>If you cannot bring a preconfigured laptop, please contact <a href="mailto:info@orbitone.com">info@orbitone.com</a>; we have some spares.</p>  <p><a href="http://umbraco.com/azure">http://umbraco.com/azure</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Wed, 18 May 2011 10:40:26 GMT</pubDate></item><item><title>European Best Practices SharePoint Conference 2011: A retrospective</title><link>http://www.orbitone.com/en/blog/archive/2011/04/14/european-best-practices-sharepoint-conference-2011-a-retrospective.aspx</link><guid>/en/blog/archive/2011/04/14/european-best-practices-sharepoint-conference-2011-a-retrospective.aspx</guid><description><![CDATA[<div class="ExternalClass45D03073263449919771FEE6904A593E"><p>A video overview of the atmosphere at the European Best Practices SharePoint Conference 2011 appeared on the internet. You can spot a few of the Orbit One employees that attended the conference.</p>  <p>  <p>Source: <a title="http://videobam.com/AYpfA" href="http://videobam.com/AYpfA">http://videobam.com/AYpfA</a></p>  <p>You can see what people tweeted about the conference if you <a href="http://twitter.com/#!/search/%23bpcuk">search twitter for the #bpcuk tag</a>. </p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Thu, 14 Apr 2011 10:18:07 GMT</pubDate></item><item><title>Automatic provisioning sites with SharePoint Designer workflow and Powershell</title><link>http://www.orbitone.com/en/blog/archive/2011/03/25/automatic-provisioning-sites-with-sharepoint-designer-workflow-and-powershell.aspx</link><guid>/en/blog/archive/2011/03/25/automatic-provisioning-sites-with-sharepoint-designer-workflow-and-powershell.aspx</guid><description><![CDATA[<div class="ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E">
<div class="ExternalClass5E5C000B9CA741EBBABDB8D8397DCD51">
<p class="ExternalClass0622627DFF844C92823A6102637782EB">At Orbit One we use SharePoint to store all our documents and related information. Each time we start a new project for a client we create a site on SharePoint to store all this project and client information. We used to create these site manually but as we keep growing this has become too cumbersome and the number of steps involved has increased over the years.</p>
<h2 class="ExternalClass0622627DFF844C92823A6102637782EB">Example of Client site</h2>
<p class="ExternalClass0622627DFF844C92823A6102637782EB"><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/75/image_6_19C0A656.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/75/image_thumb_2_19C0A656.png" width="671" height="401"></a></p>
<p class="ExternalClass0622627DFF844C92823A6102637782EB">Our project/client site contains the following configuration:</p>
<div class="ExternalClass0622627DFF844C92823A6102637782EB">
<ul>
<li>Client logo/ Project logo </li>
<li>Managed Metadata Terms for Clients and Projects </li>
<li>Default values for Client and Project for the document libraries in the site </li>
<li>Some navigation settings </li></ul></div>
<h2>Solution</h2>
<ol>
<li>We created a list form that gathers all necessary information 
<ol>
<ul>
<li><font color="#000000">Title</font> </li>
<li><font color="#000000">Url</font> </li>
<li><font color="#000000">Description</font> </li>
<li><font color="#000000">Client term</font> </li>
<li><font color="#000000">Logo as attachment</font> </li></ul></ol></li>
<li>Installed the <a href="http://ilovesharepoint.codeplex.com/">ilovesharepoint codeplex</a> solution with workflow actions addons (Thanks for delivering this great solution to the community) </li>
<li>Created a SharePoint Designer List Workflow with the following steps </li></ol>
<ul>
<ul>
<ul>
<li>Create a site and set description (standard action from ilovesharepoint) </li>
<li>Set navigation (Powershell action) </li>
<li>Copy the logo (as attachment to the list form) to the pictures library in the site </li>
<li>Add term to the term store for Client or Project </li>
<li>Set default values (Client &amp; Project) for document libraries in the site </li></ul></ul></ul>
<h2>Workflow in SharePoint Designer</h2>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/75/image_8_19C0A656.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/75/image_thumb_3_19C0A656.png" width="964" height="448"></a></p>
<p>The cool thing is to do this stuff we don’t need any extra licenses fees on top of SharePoint, we are only using the following tools and software:</p>
<ul>
<li>Plain SharePoint 2010 (Foundation will do) </li>
<li>SharePoint Designer 2010 </li>
<li>IloveSharePoint Workflow actions addon, this is an <a href="http://ilovesharepoint.codeplex.com/">open source project on Codeplex</a> <a href="http://ilovesharepoint.codeplex.com/"><img align="absMiddle" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ilovesharepoint&amp;DownloadId=210205&amp;Build=17672" width="19" height="18"></a> </li>
<li>Some powershell scripts </li></ul>
<h2> </h2>
<h1>Powershell Snippets</h1>
<h2>Navigation settings</h2><pre class="csharpcode">$newsite = <span class="kwrd">new</span>-Object Microsoft.SharePoint.SPSite($var1) 
$newweb = $newsite.OpenWeb()

<span class="rem">//First create PublishingWeb object from SPWeb object </span>
$pubweb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($newWeb); 
<span class="rem">//We want to show subsites in the navigation </span>
$pubweb.IncludeSubSitesInNavigation = $True; 
<span class="rem">//dont't forget to update... </span>
$pubweb.Update();

$newweb.Dispose() 
$newsite.Dispose()</pre>
<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<h2>Copy logo from attachment to Picture library in site</h2><pre class="csharpcode">$picturelibrary = $var2 
$logofilename = $var3

$newsite = <span class="kwrd">new</span>-Object Microsoft.SharePoint.SPSite($var1) 
$newweb = $newsite.OpenWeb()

<span class="rem">//Every SPItem in a SPList has a collection of attachments, we pick the first one</span>
$filename = $item.Attachments[0] 
<span class="rem">//To copy this attachment, we need the file binary available via the parent SPWeb object of this list</span>
$file = $item.ParentList.ParentWeb.GetFile($item.Attachments.UrlPrefix + $fileName);

<span class="rem">//We need no file path, but a folder destination path to paste attachment in</span>
<span class="rem">//$newweb and ParentWeb (above) are in fact references to the same SPWeb</span>
$doclib = $newweb.GetFolder($picturelibrary) 
<span class="rem">//Constructing the destinationURL</span>
$destUrl = $docLib.Url + <span class="str">'/'</span> + $logofilename 
<span class="rem">//Here we add the attachment binary with specific destinationURL path to the destination path</span>
$file = $docLib.Files.Add($destUrl, $file.OpenBinary())

$newweb.Dispose() 
$newsite.Dispose() </pre>
<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<h2>Add term to termstore</h2><pre class="csharpcode">$title = $var2

$termstorename = <span class="str">&quot;Managed Metadata Service&quot;</span> 
$termstoregroupname = <span class="str">&quot;Group&quot;</span> 
$termsetname = <span class="str">&quot;Termset&quot;</span>

$newsite = <span class="kwrd">new</span>-Object Microsoft.SharePoint.SPSite($var1)

<span class="rem">//We first need a TaxonomySession object to start with</span>
<span class="rem">//The logic of the taxonomy object is as follows:</span>
<span class="rem">//TaxonomySession -&gt; TermStore -&gt; Groups -&gt; TermSets -&gt; Term</span>
<span class="rem">//If our specific term doesn't exist we create it</span>
$taxonomySession = New-Object Microsoft.SharePoint.Taxonomy.TaxonomySession($newsite) 
$termstore = $taxonomySession.TermStores[$termstorename]; 
<span class="kwrd">if</span>($termstore.groups[$termstoregroupname] -eq $<span class="kwrd">null</span>){
         <span class="rem">//do nothing</span>
    }<span class="kwrd">else</span>{ 
        $group = $termstore.groups[$termstoregroupname] 
    <span class="kwrd">if</span>($group.termsets[$termsetname] -eq $<span class="kwrd">null</span>){ 
        <span class="rem">//do nothing</span>
    } <span class="kwrd">else</span> { 
        $termset = $group.termsets[$termsetname] 
        <span class="kwrd">if</span>($termset.Terms[$title] -eq $<span class="kwrd">null</span>){ 
            $term = $termset.CreateTerm($title, 1033) 
            $term.SetDescription($title, 1033) 
            #Update the Term Store 
            $termstore.CommitAll() 
        } 
    } 
}

$newsite.dispose()</pre>
<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<h2>Set default values for libraries</h2><pre class="csharpcode">$defaultvaluedoclib = $var3 
$defaultmanagedmetadatafield = $var4 
$term = $var2

$newsite = <span class="kwrd">new</span>-Object Microsoft.SharePoint.SPSite($var1) 
$newweb = $newsite.OpenWeb()

$doclib = $newweb.Lists[$defaultvaluedoclib] 
<span class="rem">//We nees specific MetadataDefaults object to set a default value of a field in a list</span>
$metadata = New-Object Microsoft.Office.DocumentManagement.MetadataDefaults($docLib) 
<span class="rem">//Setting default values also regards fetching a folder from a SPList</span>
$docf = $docLib.RootFolder

<span class="kwrd">if</span>($metadata.setfielddefault($docf, $defaultmanagedmetadatafield, <span class="str">&quot;-1;#&quot;</span> + $term)){ 
    $metadata.Update(); 
}

$newweb.Dispose() 
$newsite.dispose()</pre>
<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>

<style>
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode, .ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;courier new&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode pre
{margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .rem
{color:#008000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .kwrd
{color:#0000ff;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .str
{color:#006080;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .op
{color:#0000c0;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .preproc
{color:#cc6633;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .asp
{background-color:#ffff00;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .html
{color:#800000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .attr
{color:#ff0000;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClass5C6779F1C8E443F5AD1D0A5C48B7989E .externalclass5e5c000b9ca741ebbabdb8d8397dcd51 .csharpcode .lnum
{color:#606060;}
</style>
</div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Fri, 25 Mar 2011 14:25:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Powershell/default.aspx">Powershell</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Workflow/default.aspx">Workflow</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint Designer/default.aspx">SharePoint Designer</category></item><item><title>Orbit One @ SharePoint Best Practices in London</title><link>http://www.orbitone.com/en/blog/archive/2011/03/18/sharepoint-best-practices-in-london.aspx</link><guid>/en/blog/archive/2011/03/18/sharepoint-best-practices-in-london.aspx</guid><description><![CDATA[<div class="ExternalClass5FAAEA0570274A7BA609B97771C6C2DC">
<p>From 11 till 13 April 2011 Orbit One will be present at the <strong>European SharePoint Best Practices conference</strong>. This <strong>independent</strong> conference about SharePoint and all it’s related technologies is the place to be to get to know all the ins and outs of this powerful technology.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/74/image_2_0F4B831E.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/74/image_thumb_0F4B831E.png" width="358" height="106"></a></p>
<p><em>“Best Practices is about doing things the right way: the most efficient, effective ways to achieve goals, distilled into adaptable, repeatable procedures you can use. <br>The Best Practices Conference is where you'll find the smartest ideas, activities and techniques in practice today -- the Core Methods that achieve the best outcomes”</em></p>
<h2>Who will be there</h2>
<p> <img src="http://media03.linkedin.com/media/p/1/000/081/136/0eb7e70.jpg" width="120" height="120"><img src="http://media02.linkedin.com/media/p/2/000/081/0e2/17cc60e.jpg" width="120" height="120"><img src="http://media01.linkedin.com/media/p/1/000/07d/376/1d0bbda.jpg" width="118" height="118"><img src="http://media03.linkedin.com/media/p/2/000/082/181/10d29a2.jpg" width="118" height="118"><img src="http://media02.linkedin.com/media/p/2/000/080/388/02ad218.jpg" width="118" height="118"></p>
<p>By the way, it’s in London so why don’t we meet afterwards for some nice pints? Woohooow!</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Fri, 18 Mar 2011 11:02:00 GMT</pubDate></item><item><title>Orbit One attends “extreme 2011 Prague”</title><link>http://www.orbitone.com/en/blog/archive/2011/03/09/orbit-one-attends-“extreme-2011-prague”.aspx</link><guid>/en/blog/archive/2011/03/09/orbit-one-attends-“extreme-2011-prague”.aspx</guid><description><![CDATA[<div class="ExternalClass6320F0316C4F4486B522DCDD5398C5F8"><div class="ExternalClass9F4F2A9C5FA94BB9BEDEFC844D7652BF">   <p>Orbit One has been a certified Microsoft Dynamics Partner since 2008, currently helping several clients migrate from CRM 4.0 to CRM 2011. In order to boost the knowledge and experiences of the still fresh Microsoft Dynamics CRM 2011 platform, Orbit One will be attending “extreme 2011 Prague”.</p>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/73/image_2_7BA34E66.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/73/image_thumb_7BA34E66.png" width="644" height="80"></a> </p>    <p>“Extreme 2011 Prague” is one of the first events about the 2011 iteration of the Microsoft Dynamics CRM platform that launched earlier this year. The conference focuses on the new features, best practices and strategies to implement a CRM solution. During the conference professionals who are subject matter experts will provide deep dive sessions on important facets of the Dynamics CRM platform and how to implement it.</p>    <p>The “extreme 2011” conference is Orbit One’s ideal place to share and discuss our insights on a CRM project and our way of working with best practices, resulting in an even better service to our customers.</p>    <p><a href="http://extremecrm.com/extreme2011EMEA.aspx">More information on “extreme 2011 can be found here</a>. See you in Prague!</p> </div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dries Vandenhoeck</dc:creator><pubDate>Wed, 09 Mar 2011 16:32:13 GMT</pubDate></item><item><title>Umbraco Azure workshop &amp; Umbraco BE Festival</title><link>http://www.orbitone.com/en/blog/archive/2011/02/25/umbraco-azure-workshop-amp-umbraco-be-festival.aspx</link><guid>/en/blog/archive/2011/02/25/umbraco-azure-workshop-amp-umbraco-be-festival.aspx</guid><description><![CDATA[<div class="ExternalClassA7ED4C6B867B46A2B3F893ADF4813FD0"><p>Being an Umbraco certified solution provider, we are quite proud to support the  Belgian Umbraco User Group in their efforts to organize events &amp; trainings. So far there are 2 upcoming events:</p>  <h2>Umbraco and Azure workshop</h2>  <p>10/03/2011 – Orbit One Offices – Ghent</p>  <p><strong>Speakers:</strong> </p>  <ul>   <li><strong>Kurt Claeys</strong>, Technology Solution Professional Windows Azure </li>    <li><strong>Olivier Mangelschots</strong>, Managing Director Orbit One </li>    <li><strong>Mel Gerats</strong>, Lead Developer Orbit One </li> </ul>  <p><font color="#827979">Details and Topics: <a title="http://www.buug.be/en/events/umbraco-and-azure-workshop" href="http://www.buug.be/en/events/umbraco-and-azure-workshop">http://www.buug.be/en/events/umbraco-and-azure-workshop</a> </font></p>  <h2>Umbraco BE Festival</h2>  <p>18/03/2011 – deSingel – Antwerpen</p>  <p>The Belgian umbraco user group (BUUG) is organizing the first Umbraco BE Festival in Antwerp. Come and join people from the Umbraco HQ on March 18th for a full day of umbraco fun.</p>  <p>Did we mention this festival is FREE? And there's even more...</p>  <p>Do you want to go to CodeGarden'11 in Copenhagen on June 15-17th 2011? This is your chance to win a FREE entrance ticket worth 500 EUR. Find more info on the <a href="http://www.buug.be/en/events/umbraco-festival/design-contest">T-shirt design contest</a>.</p>  <p>Oh, did you really think this would be our only prize? Nope, we're also giving away a brand new WP7 phone.</p>  <p>Details, registration: <a title="http://www.buug.be/en/events/umbraco-festival" href="http://www.buug.be/en/events/umbraco-festival">http://www.buug.be/en/events/umbraco-festival</a></p>  <p><a href="http://www.buug.be/en"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/72/image_thumb_71AE0CFF.png" width="525" height="85"></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Fri, 25 Feb 2011 11:28:02 GMT</pubDate></item><item><title>Bare-Metal boot Windows 7 from VHD</title><link>http://www.orbitone.com/en/blog/archive/2011/02/16/bare-metal-boot-windows-7-from-vhd.aspx</link><guid>/en/blog/archive/2011/02/16/bare-metal-boot-windows-7-from-vhd.aspx</guid><description><![CDATA[<div class="ExternalClassEBB525E331CE4C74B345B1F6D365CCDA">
<p>Everyone knows that you can install Windows 7 or Windows Server 2008 R2 on a VHD instead of a real disk partition, Hyper-V is the biggest example of this, but thanks to <a href="http://blogs.infosupport.com/blogs/ericd/">Eric Denekamp</a>, I recently learned that you can even Bare-Metal a new computer from a VHD file. So if you just got a new computer or server, you can even install your Windows 7 on a VHD on a clean hard drive without having to install Windows 7 first.</p>
<p>This Blog consist of 2 parts: the first part describes how you can do this, the 2nd part will tell you why you want to do this.</p>
<p>Just for the information, Eric also has a nice blogpost about this that can be found <a href="http://blogs.infosupport.com/blogs/ericd/archive/2009/02/05/My-New-Windows-7-Setup-booting-from-VHD-_2800_part-1_2900_.aspx">here</a>.</p>
<h2>Installing Windows 7 on a VHD</h2>
<blockquote>
<p align="left">When you have a clean machine, boot from the Windows 7 or Windows 2008 R2 DVD. As soon as you are at the setup screen, press <em>Shift+F10 </em>to open a Command Prompt: <br><br><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_1_6D376CF7.png" width="500"></p>
<p align="left">Enter Diskpart to open Microsoft DiskPart. I didn’t have a C: partition on my clean hard disk, so I first created this partition with the following commands: </p>
<p align="left"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_2_6D376CF7.png" width="500"></p></blockquote>
<p>The last command performs a quick format of my new partition. Now that I have my C: drive, I can create and mount a Virtual Disk:</p>
<p><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_3_5845EA84.png" width="500"></p>
<p>The first command creates a vhd on the c: drive, the second command selects the vdisk, the last comments is used to attach the vdisk.</p>
<p>Last part I prefer to do is to format and assign a drive letter to my VHD:</p>
<p><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_5_5845EA84.png" width="500"></p>
<p>Guess who shows up in the <em>“Where do you want to install Windows?” </em>window: <br><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_6_5845EA84.png" width="500"></p>
<p>During installation, I can see files getting installed on my VHD disk: <br><br><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_7_5845EA84.png" width="500"></p>
<p>After installing Windows, I have my VHD as c: drive and the parent disk as D: drive: <br><br><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/71/image_thumb_8_5845EA84.png" width="500"></p>
<h2> </h2>
<h2>Why do I want to install Windows on a VHD?</h2>
<p>There can be many reasons why installing Windows on a VHD can be a good idea. Let me just explain some of them:</p>
<ul>
<li><font color="#000000"><strong>Drive full and you need to expand it? <br></strong>In the past, you needed to expand your drive (only possible in latest Windows editions), but this is not needed anymore. You now just create an expandable drive – you can even create one with a big maximum if needed. <br>There’s even more, if your physical disk is getting full, replace the physical disk, move the vhd on it and with some diskpart magic you’ll be able to just continue working! <br></font></li>
<li><font color="#000000"><strong>Need to patch or install updates? <br></strong>Take a copy of your VHD and do whatever you want to do with it – install updates in an isolated environment (be carefull to use the same Hardware specs). When finished, just replace the old vhd with the new one. If the update fails, just delete your copy. Can be very handy for your servers, no? <br></font></li>
<li><font color="#000000"><strong>Install as many Windows versions as you want on 1 machine! <br></strong>That’s right! Thanks to VHD files, you can just create as many VHD files as you want – and have them all on 1 machine. No bootloader needed, just boot the VHD you want to use today</font> <br></li>
<li><strong>Backup needed? Just create a copy of your VHD file!</strong> </li></ul>
<p>And off course, there are more reasons to just use a VHD as your installation disk. Just another reason that Eric mentioned:</p>
<ul>
<li><font color="#000000">Many new servers have a bootable internal usb drive today. Imagine the possibilities when you would install the vhd file on this internal usb drive.</font> </li></ul>
<p>Just to be complete, there are also 2 reasons why you shouldn’t install your Windows on a VHD file:</p>
<ul>
<li><font color="#000000">You can’t hibernate your computer (or put it to sleep). Hmm, a laptop that can’t Hibernate is like… <br></font></li>
<li><font color="#000000">You can’t use some Windows Enterprise features like Bitlocker</font> </li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Pieter-Jan Maenhaut</dc:creator><pubDate>Tue, 22 Feb 2011 23:32:00 GMT</pubDate></item><item><title>Orbit One is now a Umbraco Certified Solution provider!</title><link>http://www.orbitone.com/en/blog/archive/2010/12/15/orbit-one-is-now-a-umbraco-certified-solution-provider.aspx</link><guid>/en/blog/archive/2010/12/15/orbit-one-is-now-a-umbraco-certified-solution-provider.aspx</guid><description><![CDATA[<div class="ExternalClass262F7C36751F452CBCE0526F0F1340C7">
<p>Since the beginning of December we are proud to be a <a href="http://umbraco.org/certified-partners/browse-solution-providers/orbit-one" target="_blank">Certified Solution Provider</a> for <a href="http://umbraco.org/">Umbraco</a>. Our delivery team now has Level 1 &amp; Level 2 certifications.</p>
<p><img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/70/image_thumb_1_7A101F41.png" width="291" height="119"></p>
<p>Congratulations Thomas, Saskia and Bart for completing the exams with near-perfect scores!   </p>
<h2>What is Umbraco?</h2>
<p>Umbraco is an ASP.NET based Content Management System (CMS).</p>
<p>It’s the choice of many organizations because of its no-cost, open-source licensing, its simplicity, and its unlimited potential.  Umbraco provides a full-featured web content management system that is easy to use, simple to customize, and robust enough to run the sites such as <a href="http://www.aviapartner.aero/">www.aviapartner.aero</a>  and <a href="http://www.oneoffice.be/">www.oneoffice.be</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Wed, 15 Dec 2010 10:36:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Certifications/default.aspx">Certifications</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Umbraco/default.aspx">Umbraco</category></item><item><title>Orbit One Announces Partnership With Nintex</title><link>http://www.orbitone.com/en/blog/archive/2010/10/25/orbit-one-announces-partnership-with-nintex.aspx</link><guid>/en/blog/archive/2010/10/25/orbit-one-announces-partnership-with-nintex.aspx</guid><description><![CDATA[<div class="ExternalClass2E090C6860A847D3A2B0AD50C838FFC8">
<p align="left">We have been working with SharePoint for several years already, and now, we are proud to announce to you our reseller partnership with Nintex.  Nintex is an innovator of software products that extend Microsoft SharePoint technology.  As a Nintex partner we are now able to use Nintex products to develop our SharePoint business. </p>
<p>One of the Nintex products that we use in our projects is <strong>Nintex Workflow 2010</strong>. This product enables us to build complex workflow processes quickly and easily using a web browser interface. Nintex Workflow 2010 empowers us to automate business processes, review workflow activities and automate common SharePoint administrative tasks. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/68/image_6_75C26D40.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/68/image_thumb_2_75C26D40.png" width="145" height="99"></a><strong></strong></p>
<p><strong>Lucerna Project</strong></p>
<p><a href="http://www.lucerna.be/">Lucerna</a> is a group of primary and secondary schools operating over 12 locations in Flanders and Brussels. They use their SharePoint primarily to assist teachers in their everyday work of<strong> subject management and administrative tasks</strong>.</p>
<p>Orbit One helped to improve the <b>transport expenses</b> and <b>school event organization</b> process. These were p<b>aper based  processes</b> which were very difficult to manage over the <b>multiple</b> <b>locations</b>. Orbit One created InfoPath forms that gather all relevant information and uses Nintex Workflow 2010 for a multiple step approval process. The benefit for Lucerna is that power users can change these approval processes themselves according to ever changing business needs.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/68/image_2_75C26D40.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/68/image_thumb_75C26D40.png" width="244" height="43"></a><strong></strong></p>
<p><strong>About Nintex</strong></p>
<p><a href="http://www.nintex.com/">Nintex</a> is a leading global innovator of software products that extend Microsoft SharePoint technology. The company focuses on building software that bridges the gap between that which can be bought from Microsoft today and common functionality requested by customers – with a passionate commitment to innovation and user experience. As a Microsoft Gold Partner, Nintex aligns with Microsoft’s strategic and architectural direction to ensure that Nintex and Microsoft products work in harmony, both today and into the future.</p>
<p>For more information visit <a href="http://www.nintex.com/en-US/Partners/Pages/default.aspx?country=Belgium">www.nintex.com</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hans De Smedt</dc:creator><pubDate>Tue, 02 Nov 2010 16:49:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Calendar Colour Coding in SharePoint</title><link>http://www.orbitone.com/en/blog/archive/2010/10/25/calendar-colour-coding-in-sharepoint.aspx</link><guid>/en/blog/archive/2010/10/25/calendar-colour-coding-in-sharepoint.aspx</guid><description><![CDATA[<div class="ExternalClassF1C363FC06094E2FBABCA3729CFCD3A8">
<div class="ExternalClass7574A154F40E4BB69059FA3336D1C789">
<p>It’s nice to have SharePoint calendar entries colour-coded depending on their category, location, or other metadata. In this post you will find an overview of different approaches for colour coding, applicable to SharePoint 2010 and 2007, with their advantages, difficulties and limitations.</p>
<h2>Calendar overlay</h2>
<p>Calendar overlay is a new feature of SharePoint 2010. Basically it is used to display several calendars in one view. As indicated by <a href="http://www.sharepoint911.com/blogs/jennifer/Lists/Posts/Post.aspx?ID=42">Jennifer Mason</a>, it’s possible to overlay different views of the same calendar – this helps to display colour-coded events in one calendar. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_overlay_2_25682659.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_overlay" border="0" alt="colour_coded_overlay" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_overlay_thumb_25682659.jpg" width="668" height="458"></a></p>
<p>First, you have to prepare views, one per colour. Each view has to filter events which will get the same colour. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_9_25682659.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_4_53557911.png" width="283" height="164"></a></p>
<p>Make one more view in which you will overlay all others. It can be one of the colour-coded views, or a view which filters all events out (so it will only show overlaid views). In the left navigation it will be shown with the title of the calendar list. </p>
<p>Open this view and start overlaying. Click on <em>Calendars Overlay</em> button on the Ribbon – <em>Calendar</em>.</p>
<p>Add each of colour-coded views by clicking <em>New Calendar</em> link.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_7_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_3_53557911.png" width="482" height="215"></a></p>
<p>Configure each overlaid view, select the colour, the calendar and the view: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_5_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_2_53557911.png" width="688" height="378"></a></p>
<h2>Using HTML in calculated columns</h2>
<p>Using more than ten colours is not advised by usability -  too much information is just a noise. But if you have a good reason for such solution, you can use the approach proposed by <a href="http://techtrainingnotes.blogspot.com/2008/11/sharepoint-color-coded-calendars.html">Mike Smith</a>, <a href="http://blog.pathtosharepoint.com/2010/04/06/tutorial-add-color-coding-to-your-sharepoint-2007-calendar-in-15-minutes/">Christophe@pathtosharepoint</a>, and <a href="http://planetwilson.blogspot.com/2007/09/sharepoint-2007-colour-color-calendar.html">Mark Wilson</a> still for SharePoint 2007. You can build HTML code in calculated columns, show these columns in calendar views, and apply a small script to process HTML. </p>
<h3>SharePoint 2007</h3>
<h4>Step 1. Build HTML code in calculated column</h4>
<p>In a simple example I add a choice column <em>Colour</em> with values <em>red</em>, <em>green</em>, and <em>blue</em>, and a calculated column <em>ColourCode</em> with HTML code. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_11_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_5_53557911.png" width="499" height="245"></a></p>
<p>Text formula in ColourCode column builds DIV, SPAN or just FONT tags. For example, to paint the background, use this formula: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_14_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_6_53557911.png" width="339" height="160"></a></p>
<p>More complicated formulas can select colours based on values of other columns, such as <em>Category</em> or <em>Location</em>. </p>
<h4>Step 2. Show calculated columns in calendar view. </h4>
<p>Create a new view in the calendar list based on calendar view. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_16_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_7_53557911.png" width="179" height="143"></a><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_18_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_8_53557911.png" width="407" height="143"></a></p>
<p>In <em>Calendar Columns</em> section choose <em>ColourCode</em> as view title. (you can prepare and choose another colour-coded column for the location)</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_20_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_9_53557911.png" width="472" height="217"></a></p>
<p>Then you get events with HTML codes in the calendar grid: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_22_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_10_53557911.png" width="258" height="167"></a></p>
<p>You only need to add a code which will properly show HTML.</p>
<h4>Step 3. Add JavaScript</h4>
<ul>
<li>Edit the page where you want to show the view with colour coding. </li>
<li>Add the calendar list view web part and choose the view with colour coding. </li>
<li>Then add a content editor web part to the end of the page. </li>
<li>Copy the following JavaScript code to the Source Editor of the web part and save it (this script is proposed by <a href="http://techtrainingnotes.blogspot.com/2008/11/sharepoint-color-coded-calendars.html">Mike Smith</a>).</li></ul>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_24_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_11_53557911.png" width="523" height="232"></a> </p>
<ul>
<li>Configure the web part so that it doesn’t show the title.</li></ul>
<p>Here is the result: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_html_2007_2_53557911.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_html_2007" border="0" alt="colour_coded_html_2007" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_html_2007_thumb_53557911.jpg" width="184" height="164"></a></p>
<h3>SharePoint 2010</h3>
<p>In SharePoint 2010 putting a content editor web part is not enough, but the evangelists of the approach propose the solution (I follow the method of <a href="http://techtrainingnotes.blogspot.com/2010/06/sharepoint-2010-color-coded-calendars.html">Mike Smith</a>, whose article also explains the nature of differences between the versions; Mike’s published codes are used here). </p>
<p>Steps 1 and 2 are the same (I just used two colours for the font and the background in the example). </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_26_53557911.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_12_53557911.png" width="397" height="166"></a></p>
<p>The preparation of JavaScript splits to three other steps.</p>
<h4>Step 3. Add JavaScript to master page</h4>
<ul>
<li>In SharePoint Designer create the master page you will use on sites displaying the calendar. You can edit the default master page <em>v4.master</em>, but beware of side effects!  </li>
<li>Add the following code to the very end of the master page, before the &lt;/BODY&gt; closing tag.</li></ul>
<h6><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_28_0142CBCA.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_13_0142CBCA.png" width="505" height="267"></a></h6>
<p> </p>
<h4>Step 4. Add JavaScript to the site</h4>
<ul>
<li>Prepare a text file with the following script.</li></ul><pre>&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot;&gt; 

  function CalColor() 
  { 
    var x = document.getElementsByTagName(&quot;div&quot;) 
    var i=0; 
    for (i=0;i&lt;x.length;i++) 
    { 
      if (x[i].className==&quot;ms-acal-item&quot;) 
      { 
        x[i].innerHTML= x[i].innerHTML.replace(/&amp;lt;/g,'&lt;').replace(/&amp;gt;/g,'&gt;') 
      } 
    } 
  } 

  // hook into the SharePoint JS library to call our code 
  // whenever the calendar is updated 
  function CalHookIntoSPUI() 
  { 
    var originalCalendarNotify = SP.UI.ApplicationPages.CalendarNotify.$4a; 
    //var originalresetSelection = SP.UI.ApplicationPages.CalendarViewBase.prototype.resetSelection; 

    SP.UI.ApplicationPages.CalendarNotify.$4a = function() 
    { 
      originalCalendarNotify(); 
      CalColor(); 
    } 
  } 

  // add to the array of functions to run from the master page code 
  if (!window.colourCode) 
  { 
    colourCode=new Array(); 
  } 
  colourCode[colourCode.length] = &quot;CalColor&quot;; 
  colourCode[colourCode.length] = &quot;CalHookIntoSPUI&quot;; 

&lt;/script&gt;</pre>
<ul>
<li>Save the file to a document library on the site. </li>
<li>Copy the link to the file.</li></ul>
<h4>Step 5. Make reference to JavaScript on the calendar page. </h4>
<ul>
<li>Add a content editor web part to the end of the page. </li>
<li>Edit the web part. </li>
<li>Paste the link to the script saved on step 4 to <em>Content Link</em>.</li></ul>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_30_0142CBCA.png"><img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_14_0142CBCA.png" width="228" height="231"></a></p>
<ul>
<li>Save the web part. </li></ul>
<p>Voila: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_html_2010_2_0142CBCA.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_html_2010" border="0" alt="colour_coded_html_2010" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_html_2010_thumb_0142CBCA.jpg" width="422" height="215"></a></p>
<p> </p>
<h3><font color="#ff0000">Attention – limits and side effects! </font></h3>
<p>1. This way we may colour-code the titles and the locations of the events. But we can do nothing about popup hints. They will show HTML codes. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_32_0142CBCA.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_15_0142CBCA.png" width="302" height="148"></a></p>
<p>It works cleaner in third party web parts. There you can make custom popup hints.</p>
<p>2. If there are more than three events some day, they are shown collapsed in the month view. When expanded, they show HTML codes instead of colours.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_38_0142CBCA.png"><img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_18_0142CBCA.png" width="163" height="142"></a></p>
<p>3. This way you can update the default page of the calendar <em>listurl</em>/calendar.aspx. In SharePoint 2007 it works without problems, but in SharePoint 2010 it breaks the Ribbon, and the calendar properties cannot be edited anymore!   </p>
<h2>XSLT formatting</h2>
<p>Use of content query web parts or data view web parts with XSLT formatting is natural and pretty straightforward for list views: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_xslt_2_0142CBCA.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_xslt" border="0" alt="colour_coded_xslt" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_xslt_thumb_0142CBCA.jpg" width="429" height="259"></a></p>
<p>Making a calendar grid in XSLT would be a good puzzle for enthusiasts.</p>
<h2>Third party solutions</h2>
<p>SharePoint solution suppliers, such as <a href="http://www.kwizcom.com/sharepoint-add-ons/sharepoint-calendar-plus-web-part/overview/">KWizCom</a> and <a href="http://store.bamboosolutions.com/sharepoint-calendar-plus-web-part.aspx">Bamboo Solutions</a>, have enhanced calendar web parts. They can roll up calendar data from various lists and represent them colour-coded. Look at KWizCom web part which shows meetings per location. It has customized popup hint with event summary for logistics people who get information about requested equipment and services. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_kwizcom_4_0142CBCA.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_kwizcom" border="0" alt="colour_coded_kwizcom" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_kwizcom_thumb_1_0142CBCA.jpg" width="659" height="528"></a></p>
<p>The web part renders over views with the same names in each calendar list and shows them together in one colour. The configuration is done without any single row of code. Attention - it may get quite slow if rendering through too many views! (in the above example we have 60 lists and 360 views)</p>
<h2>Connect to Outlook</h2>
<p>A powerful feature of integration between SharePoint and Office is the possibility to work with SharePoint calendars in Outlook. Can we see colours in Outlook? Yes, if we use Outlook categories. </p>
<p>In the scenario implemented by my colleague Mel Gerats and me, we have a SharePoint calendar with consolidated data from group calendars. It is being regularly synchronised with group calendar by scheduled task. The synchronising code assigns Outlook categories according to SharePoint metadata. See a sample method which assigns categories per organisation (institute) and meeting room:   </p>
<p>private string TransformCategories() <br>{ <br>    if (RawData != null) <br>    { <br>        string categories = &quot;&quot;; <br>        if (!string.IsNullOrEmpty(Organisation)) <br>        { <br>            string organisationCategory = &quot;Institute: &quot;; <br>            organisationCategory += Organisation; <br>            categories += organisationCategory; <br>        }</p>
<p>        if (!string.IsNullOrEmpty(MtgRoom)) <br>        { <br>            if (!string.IsNullOrEmpty(categories)) <br>            { <br>                categories += &quot;;&quot;; <br>            } <br>            categories += &quot;Room: &quot; + MtgRoom;</p>
<p>        } <br>        return categories; <br>    } <br>    return &quot;&quot;; <br>} <br>public string Categories <br>{ <br>    get { return TryGetValue(RawData.Attribute(&quot;ows_Categories&quot;)); } <br>    set { if (RawData != null) RawData.SetAttributeValue(&quot;ows_Categories&quot;, value); }</p>
<p>}</p>
<p>Using prefixes, like <em>Institute:</em> or <em>Room:</em> allows to group categories by their type.</p>
<p>It’s not even possible to see the categories in SharePoint, nothing to say about changing them. And, to see them in Outlook, the user needs <a href="http://office.microsoft.com/en-us/outlook-help/create-a-new-color-category-HA010356463.aspx">to configure all used categories</a> on his PC, having a choice from just 16 colours in Outlook 2007, or 25 colours in Outlook 2010 (customer-specific data are hidden): </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_36_0142CBCA.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/image_thumb_17_0142CBCA.png" width="476" height="364"></a></p>
<p>But the result is worthy of effort: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_outlook_2_0142CBCA.jpg"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="colour_coded_outlook" border="0" alt="colour_coded_outlook" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/69/colour_coded_outlook_thumb_0142CBCA.jpg" width="513" height="641"></a></p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Mon, 25 Oct 2010 17:33:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Enriching the Windows Phone 7 experience with Composite Application development (Part 1)</title><link>http://www.orbitone.com/en/blog/archive/2010/10/21/enriching-the-windows-phone-7-windroid-experience-with-composite-application-development-part-1.aspx</link><guid>/en/blog/archive/2010/10/21/enriching-the-windows-phone-7-windroid-experience-with-composite-application-development-part-1.aspx</guid><description><![CDATA[<div class="ExternalClassE0C1230F98EF4FB890B6B12F5AB1C46A">
<blockquote>
<table border="0" cellspacing="0" cellpadding="2" width="620">
<tbody>
<tr>
<td valign="top" width="157"><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/67/image_2_04795693.png"><img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/67/image_thumb_04795693.png" width="122" height="168"></a></td>
<td width="461">
<p>Windows Phone 7  (WP7) is a mobile operating system developed by Microsoft, and is the successor to their Windows Mobile platform. With WP7, Microsoft offers a new user interface and integrates the operating system with other services. Windows Phone 7 was released to manufacturing on September 1st, 2010 and the final SDK was made available on September 16, 2010.</p></td></tr></tbody></table>
<p> </p>
<p>At Orbit One we’ve been exploring the possibilities offered by the new Windows Phone 7 platform related to <font color="#000000">enriching the user experience by developing custom applications. </font>The <a href="http://create.msdn.com/en-US/" target="_blank">Windows Phone Development</a> portal is a good place to start. There you can grab the development tools for free.</p>
<p>Some very useful resource that we used in the in the journey were:</p>
<ul>
<li><a href="http://channel9.msdn.com/blogs/egibson/windows-phone-7-jump-start-session-1-of-12-introduction" target="_blank">Windows Phone 7 Jump Start</a> <font color="#333333">set of screencasts (12 episodes) from</font> <a href="http://channel9.msdn.com/" target="_blank">Channel 9</a>. </li>
<li><a target="_blank">The best resources for Windows Phone 7 Development</a> </li>
<li><a href="http://create.msdn.com/en-US/education/catalog/article/wp7_training_kit" target="_blank">Windows Phone 7 Developer Training Kit</a> </li></ul>
<p>The training kit has 1 introductory part and 2 main parts:</p>
<ul>
<li><font color="#000000">Getting started with Windows Phone 7</font> </li>
<li><font color="#000000">Silverlight for Windows Phone</font> </li>
<li><font color="#000000">XNA Framework 4.0 for Windows Phone</font> </li></ul>
<p>At Orbit One we are focused mainly on the Silverlight part. </p>
<h2>Silverlight for Windows Phone 7</h2>
<p>Having Silverlight at your disposal is already something, but what if we could make the experience <strong>even nicer</strong>?</p>
<p>A while we used the <a href="http://msdn.microsoft.com/en-us/library/ff647752.aspx" target="_blank">Composite Application Library</a> (also known as <a href="http://compositewpf.codeplex.com/" target="_blank">Prism</a>) from <a href="http://msdn.microsoft.com/en-us/practices/default.aspx" target="_blank">Microsoft Patterns &amp; Practices</a> for developing and internal <a href="http://windowsclient.net/wpf/" target="_blank">WPF</a> application.</p>
<p>The library has a lot of functionality built in:</p>
<ul>
<li><font color="#000000">MVVM</font> </li>
<li><font color="#000000">MVP</font> </li>
<li><font color="#000000">MVC</font> </li>
<li><font color="#000000">Dependency Injection</font> </li>
<li><font color="#000000">Commanding Engine</font> </li>
<li><font color="#000000">Events Engine</font> </li></ul>
<h2>Composite application frameworks</h2>
<p>After some research I found two open source libraries that could offer similar development experience for Windows phone 7:</p>
<ul>
<li><font color="#000000"><a href="http://caliburnmicro.codeplex.com/" target="_blank">Caliburn Micro</a> – thanks to my colleague <a href="http://www.facebook.com/thomasstock" target="_blank">Thomas</a> for pointing it put. There is a very nice <a href="http://live.visitmix.com/MIX10/Sessions/EX15" target="_blank">presentation from MIX 2010</a> about this.</font> </li>
<li><font color="#000000"><a href="http://phone7.codeplex.com/" target="_blank">Prism for WP7</a></font> </li></ul>
<p>In what follows I’m going to concentrate on the second one. I think a good way of evaluating the library is to go through the <a href="http://create.msdn.com/en-US/education/catalog/article/wp7_training_kit" target="_blank">Windows Phone 7 Developer Training Kit</a> and try to solve each lab using <strong>Prism for WP7.</strong> </p>
<p>So, in the next part I will start with the <a href="http://channel9.msdn.com/Learn/Courses/WP7TrainingKit/WP7GettingStarted/HelloPhoneWP7Lab/Exercise-1-Creating-Windows-Phone-Applications-with-Microsoft-Visual-Studio-2010-Express-for-Windows" target="_blank">first exercise from Lab 1</a> of the <a href="http://channel9.msdn.com/learn/courses/WP7TrainingKit" target="_blank">training kit</a>.</p>
<p>Stay tuned! </p></blockquote></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Voicu Matei</dc:creator><pubDate>Thu, 21 Oct 2010 16:35:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Windows Phone 7/default.aspx">Windows Phone 7</category></item><item><title>SharePoint 2010: displaying related documents in a detail view</title><link>http://www.orbitone.com/en/blog/archive/2010/10/07/sharepoint-2010-displaying-related-documents-in-a-detail-view.aspx</link><guid>/en/blog/archive/2010/10/07/sharepoint-2010-displaying-related-documents-in-a-detail-view.aspx</guid><description><![CDATA[<div class="ExternalClassAAACA1B7EC624DFDA3422F20D345751D"><p>We recently migrated a lot of documents from a file share to SharePoint 2010 using the <a href="http://spbulkdocumentimport.codeplex.com/" target="_blank">SharePoint 2010 Bulk Document Importer</a>. Many of the documents are related to certain events (meeting notes, pictures, requests, …). The events are managed in a central event calendar. Each document has a lookup field to this calendar where we can select an event?.</p>  <p>In order to quickly see which documents are connected to an event, we were asked to make all related documents available from the event detail view.</p>  <p>With SharePoint 2010 this turned out to be very easy.</p>  <p>We added a lookup field to the document library. The lookup field shows the Title column and also includes the ID column</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_6_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_2_5C7248EE.png" width="522" height="121"></a></p>  <p>In SharePoint Designer we edit the Display Form the our Event Calendar.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_8_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_3_5C7248EE.png" width="702" height="461"></a></p>  <p>In the Display Form, we insert a Data View Web Part for the document library. This document library has the lookup field to the Event calendar</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_10_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_4_5C7248EE.png" width="426" height="363"></a></p>  <p>Next, with the data view Web Part selected, we add a Filter</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_16_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_7_5C7248EE.png" width="306" height="129"></a></p>  <p>We filter on the Field Event:ID, which is the ID column of the Lookup Field. For the filter we create a new Parameter.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_12_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_5_5C7248EE.png" width="364" height="221"></a></p>  <p>For the Parameter Source we choose Query String. For the Query String Variable we enter ID. This will create a Filter Parameter that looks at the query string and takes the value from the ID parameter.</p>  <p>The url of the Detail View Form always contains the ID of the selected list item. The URL has the form of <a href="http://localhost/Lists/Calendar/DispForm.aspx?ID=2&amp;IsDlg=1">http://localhost/Lists/Calendar/DispForm.aspx?ID=2&amp;IsDlg=1</a></p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_14_5C7248EE.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_6_5C7248EE.png" width="514" height="348"></a></p>  <p>We now have created a filter that will filter the data view web part based on the ID of the Event that we are looking at. Because we the field we filter on is the lookup field to this item, we only get the documents that are linked to this Event.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_2_0A5F9BA7.png"><img style="background-image:none;border-right-width:0px;margin:;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/66/image_thumb_0A5F9BA7.png" width="506" height="595"></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Thu, 07 Oct 2010 11:12:10 GMT</pubDate></item><item><title>SharePoint Connections: Here we come!</title><link>http://www.orbitone.com/en/blog/archive/2010/08/02/sharepoint-connections-here-we-come.aspx</link><guid>/en/blog/archive/2010/08/02/sharepoint-connections-here-we-come.aspx</guid><description><![CDATA[<div class="ExternalClass24ECD5588BA240ACAC8939DC4E8E9E86">
<p>The Orbit One team from Ghent, Belgium will be present at this year’s SharePoint Connections which will be held in The Hague 28 &amp; 29 September. More info at: <a title="http://www.devconnections.com/speurope/" href="http://www.devconnections.com/speurope/">http://www.devconnections.com/speurope/</a>.</p>
<p>We will be soaking up all that vital SharePoint 2010 knowledge i.e. BCS, Identity providers and Search and hopefully meeting some friends along the way :-) </p>
<h2>Who will be present?</h2>
<ul>
<li><a title="Lieven Meys - Belgium  LinkedIn" href="http://be.linkedin.com/in/lievenmeys">Lieven Meys - Belgium  LinkedIn</a></li>
<li><a title="Olivier Mangelschots  LinkedIn" href="http://www.linkedin.com/profile?viewProfile=&amp;key=5709207&amp;authToken=OuIu&amp;authType=name">Olivier Mangelschots  LinkedIn</a></li>
<li><a title="Hans De Smedt - Belgium  LinkedIn" href="http://be.linkedin.com/pub/hans-de-smedt/15/a3/26a">Hans De Smedt - Belgium  LinkedIn</a>!</li>
<li><a title="Thijs ter Beek  LinkedIn" href="http://www.linkedin.com/profile?viewProfile=&amp;key=6691256&amp;locale=en_US&amp;trk=tab_pro">Thijs ter Beek  LinkedIn</a></li></ul>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/63/photo2_06A29C46.jpg"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="Happy: Hans de Smedt" border="0" alt="Happy: Hans de Smedt" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/63/photo2_thumb_06A29C46.jpg" width="436" height="328"></a> </p>
<p>Will we see you there?</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Tue, 03 Aug 2010 12:49:00 GMT</pubDate></item><item><title>Moving to the cloud with BPOS – Public Folders</title><link>http://www.orbitone.com/en/blog/archive/2010/06/28/moving-to-the-cloud-with-bpos-–-public-folders.aspx</link><guid>/en/blog/archive/2010/06/28/moving-to-the-cloud-with-bpos-–-public-folders.aspx</guid><description><![CDATA[<div class="ExternalClassE1E102E54D6F47419DADE25FAFA9E4DD">
<p>Microsoft Business Productivity Online Standard Suite (BPOS) is a set of messaging and collaboration solutions hosted by Microsoft, and consists of Exchange Online, SharePoint Online, Office Live Meeting, and Office Communications Online. </p>
<p>Unfortunately, public folders are not supported by BPOS. To migrate your old public folders to BPOS, you’ll need to find a workaround.</p>
<p>One of the ways to migrate your old Shared Folders, is by creating a shared mailbox that everybody can access. </p>
<p>The easiest way to set up a Shared Mailbox, is to create a new BPOS account (for example <a href="mailto:shared@example.com">shared@example.com</a>). On a client machine, you can install the Microsoft Online Services Sign In tool, which you can download from <a title="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=5c2ca866-4107-4ae5-98d5-76bf1b18ff87" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=5c2ca866-4107-4ae5-98d5-76bf1b18ff87">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=5c2ca866-4107-4ae5-98d5-76bf1b18ff87</a> .</p>
<p>The Sign In Tool will configure your outlook to access the new mailbox. Once your outlook is restored, you can import a PST file containing your public folders to your new mailbox and Outlook will start synchronizing with BPOS. Off course, this will take some time depending on the size of your Public Folders.</p>
<p>Now, we need to give all people access to this new shared mailbox. One way to do this is by right-clicking on the folders and edit the Permissions of the folders as shown in the figures below.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/62/image_2_13964200.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/62/image_thumb_13964200.png" width="408" height="545"></a> </p>
<p>This looks like the easiest way, but there’s one problem with this method: setting Permissions on a folder is not recursive, so you will need to set these permissions on all subfolders. If you have a complex folder structure with lots of subfolders, and you need to give some people access to all folders using this method, good luck!</p>
<p>But there is an alternative way: in BPOS, you can give other people Full Access to a mailbox. So by giving all the members of your team Full Access to the shared mailbox, they will automatically have Full Access to all subfolders of your shared mailbox. To do this, you’ll need to have the Migration Tools installed on the client machine, and use some PowerShell.</p>
<p>To grant somebody full-access to the shared mailbox, you can use the <strong>Add-MSOnlineMailPermission</strong> as described in <a title="http://technet.microsoft.com/en-us/library/ee662271.aspx" href="http://technet.microsoft.com/en-us/library/ee662271.aspx">http://technet.microsoft.com/en-us/library/ee662271.aspx</a></p>
<p>An example is shown below:</p>
<p>Add-MSOnlineMailPermission -Identity <a href="mailto:shared@example.com">shared@example.com</a> -Credential $cred -TrustedUser admin@example.com –GrantFullAccess True –GrantSendAs True </p>
<p>This will give the user <a href="mailto:admin@example.com">admin@example.com</a> Full Access and SendAs permissions to the <a href="mailto:shared@example.com">shared@example.com</a> mailbox. This is only a basic example, with some coding skills you’ll easily manage to write a PowerShell script to give all users the needed permissions.</p>
<p>To finish the story, the users still need to open the Shared Mailbox. When using Outlook, they can easily open an additional mailbox. To do this, just follow the steps explained on <a title="http://office.microsoft.com/en-us/outlook-help/add-another-person-s-mailbox-to-your-account-HP005242139.aspx" href="http://office.microsoft.com/en-us/outlook-help/add-another-person-s-mailbox-to-your-account-HP005242139.aspx">http://office.microsoft.com/en-us/outlook-help/add-another-person-s-mailbox-to-your-account-HP005242139.aspx</a>.</p>
<p>Good luck migrating to BPOS!</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Pieter-Jan Maenhaut</dc:creator><pubDate>Mon, 28 Jun 2010 19:15:00 GMT</pubDate></item><item><title>SharePoint 2010: transparent login with mixed authentication</title><link>http://www.orbitone.com/en/blog/archive/2010/06/23/sharepoint-2010-mixed-authentication-automatic-login.aspx</link><guid>/en/blog/archive/2010/06/23/sharepoint-2010-mixed-authentication-automatic-login.aspx</guid><description><![CDATA[<div class="ExternalClass64100EA28AEF46808799CC462DD65D38"><div class="ExternalClass40A8CBFD2CD94BEFA075F1CF464FC0AB">   <h2>Authentication in SharePoint 2007</h2>    <p>In SharePoint 2007 it was possible to enable forms based authentication next to windows authentication only by extending a web application and basically running two separate applications on the same content database.</p>    <p>side from the problems with forms based authentication in SharePoint 2007, there were also some usability issues. </p>    <ul>     <li>The two sites are <strong>accessed by a different url.</strong> For internal users the url could be https://intranet, for external users https://intranet.company.com.         <br>This is especially a problem when sending links to document or pages. The links point to a different site depending on if an internal or external user copied the link. This lead to a lot of confusion and unexpected errors </li>      <li>Email alerts sent by SharePoint itself can contain the wrong urls </li>      <li>Smartparts and some other customisations need to be deployed twice </li>      <li>Changes to the web.config need to be duplicated        <br></li>   </ul>    <h2>Authentication in SharePoint 2010</h2>    <p>SharePoint 2010 comes with a nice new feature that aims to solve this problem: Mixed Authentication. It allows for the configuration of multiple authentication providers (Windows authentication, forms authentication, trusted Identity providers) together using <strong>the same url</strong>, without having to extend the web application. Both external and internal users would access the web site on https://intranet.company.com for example.</p>    <p>By default the user has to choose the authentication method when upon logging in.</p>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_2_2BFB2463.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_thumb_2BFB2463.png" width="538" height="204"></a> </p>    <p>While this is very nice, and a great improvement over the previous version, the downside is that there is <strong>no more transparent authentication in an intranet environment.</strong></p>    <p>With the correct browser settings is it possible to log on automatically when using windows authentication.</p>    <p>In Internet Explorer it can be configured in the security settings of the Local Intranet zone. These settings can also be pushed through group policies.</p>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_6_1A720650.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_thumb_2_1A720650.png" width="437" height="401"></a> </p>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_8_1A720650.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_thumb_3_1A720650.png" width="370" height="210"></a> </p>    <p>If the intranet is configured correctly, or “detected automatically”, all login attempts will transparently use the windows identity.</p>    <p>Each time a user tries to access the intranet, he is greeted by the “user friendly” choice above. Each time he tries to open a document stored on the intranet, he gets the same login popup.</p>    <p>In an intranet environment, this is simply unacceptable.</p>    <h2>The solution for SharePoint 2010</h2>    <p>Looking to improve on this situation we found a great <a href="http://blogs.msdn.com/b/brporter/archive/2010/05/10/temp.aspx" target="_blank">blog post</a> by Bryan Porter. By using a custom login page and custom PowerShell snap-in he was able to automatically choose the authentication provider based on the IP address of the user logging in.</p>    <p>The solution consists of two parts</p>    <ul>     <li>A custom PowerShell snap-in that is used to manage the mappings between IP addresses and authentication providers. The mapping is stored in the Hierarchical Object Store, on the level of the Web Application. </li>      <li>A custom sign-in page. When the custom sign-in page is loaded it will first check the IP address of the user. Then it will check if the address is mapped to an authentication provider. If it is mapped, the user will be redirected to the sign-in page of that provider. In other words, if the mapping is found the “Select the credentials you want to use to logon to the SharePoint site” step of the sign in process is automated. </li>   </ul>    <p>In order to use Bryan’s solution we added some features:</p>    <ul>     <li>Wild card mapping. Authentication providers can now be mapped to wildcard IP range, for example 192.168.0.* </li>      <li>IPv6 support. </li>      <li>Fix the redirection to make “Sign in as a different user” work correctly </li>   </ul>    <p>After installing the web application can be configured to automatically use Windows Authentication for a certain range of IP’s, and forms authentication for the others.</p>    <p><strong>Update</strong>: The project is now available on codeplex: <a href="http://spautomaticsignin.codeplex.com/">http://spautomaticsignin.codeplex.com/</a></p>    <p>We are currently using this solution for several customers.</p>    <p> </p>    <h2>Deployment</h2>    <p>All commands are executed in the SharePoint 2010 Management Shell</p>    <p>The custom login page is deployed to the SharePoint Root: “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IDENTITYMODEL\LOGIN”</p>    <p>The assembly containing the code-behind of the login page and the powershell cmdlet code are deployed to the GAC</p>    <ol>     <li>       <h5>Add the solution to the solution store          <br></h5>        <p>stsadm -o addsolution -filename OrbitOne.SharePoint.Claims.SignIn.wsp</p>     </li>      <li>       <h5>Deploy the solution to all web applications          <br></h5>        <p>stsadm -o deploysolution -name OrbitOne.SharePoint.Claims.SignIn.wsp -immediate -allowgacdeployment </p>        <p>stsadm -o execadmsvcjobs</p>     </li>      <li>       <h5>Register the assembly          <br></h5>        <p>C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\installutil /assemblyname &quot;OrbitOne.SharePoint.Claims.SignIn, Culture=neutral, Version=1.0.0.0, PublicKeyToken=3c7a593397c60142&quot;</p>     </li>   </ol>    <h2>Deployment of an updated version</h2>    <ol>     <li>       <h5>Retract and delete the existing solution          <br></h5>        <p>stsadm -o retractsolution -name OrbitOne.SharePoint.Claims.SignIn.wsp -immediate </p>        <p>stsadm -o execadmsvcjobs </p>        <p>stsadm -o deletesolution -name OrbitOne.SharePoint.Claims.SignIn.wsp</p>     </li>      <li>       <h5>Deploy the new solution          <br></h5>        <p>stsadm -o addsolution -filename OrbitOne.SharePoint.Claims.SignIn.wsp </p>        <p>stsadm -o deploysolution -name OrbitOne.SharePoint.Claims.SignIn.wsp -immediate -allowgacdeployment </p>        <p>stsadm -o execadmsvcjobs</p>     </li>      <li>       <p> </p>     </li>   </ol>    <h2>Configuration</h2>    <p>In the SharePoint 2010 Management Console:</p>    <p>load the snap-in</p>    <p>Add-PSSnapin ClaimsSignInAdmin</p>    <p>Create a configuration object. Note: the url is the url of your web application</p>    <p>$config = Get-SPSignInConfiguration –webapplication “http://www.website.com”</p>    <p>Mappings can be managed with the following commands</p>    <ul>     <li>       <h5>View all configured mappings          <br></h5>        <p>$config.ProviderMappings</p>     </li>   </ul>    <ul>     <li>       <h5>Add a mapping          <br></h5>        <p>$config.ProviderMappings.Add(&quot;192.168.20.*&quot;,&quot;Windows Authentication&quot;)</p>        <p>$config.Update()</p>     </li>   </ul>    <ul>     <li>       <h5>Remove a mapping          <br></h5>        <p>$config.ProviderMappings.Remove(&quot;192.168.20.*&quot;)</p>        <p>$config.Update()</p>     </li>   </ul>    <ul>     <li>       <h5>Clear all mappings          <br></h5>        <p>$config.ProviderMappings.Clear()</p>        <p>$config.Update()</p>     </li>   </ul>    <h2> </h2>    <h2>Configure the custom sign-in page</h2>    <p>Configuration of a custom sign-in page is now a fully supported feature. In SharePoint 2007 it was possible to do this in the web.config, in Sharepoint 2010 it is a settings in the Central Administration.</p>    <p>Application Management -&gt; Manage Web Applications</p>    <p>Select one - &gt; Authentication providers –&gt; select the Zone (usually Default)</p>    <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_4_2BFB2463.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/61/image_thumb_1_2BFB2463.png" width="431" height="166"></a> </p>    <p>Is there a way to do this from Powershell? It would make the deployment a lot faster.</p>    <h2>Code</h2>    <p>The IP address to Authentication provider mappings are stored in the Hierarchal Object Store associated with a web application. To create a custom Persisted Object for SharePoint all that is needed is to inherit from SPPersistedObject and mark the fields to persist with the “Persisted” attribute.</p>    <p>    <div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:97f2713f-59d0-4f41-832e-525b48a47c72" class="wlWriterEditableSmartContent"><pre style="background-color:White;overflow:auto"><span style="color:#0000FF">public</span><span style="color:#000000"> </span><span style="color:#0000FF">class</span><span style="color:#000000"> SignInConfiguration : SPPersistedObject
{
    [Persisted()]
    </span><span style="color:#0000FF">private</span><span style="color:#000000"> Dictionary</span><span style="color:#000000">&lt;</span><span style="color:#0000FF">string</span><span style="color:#000000">, </span><span style="color:#0000FF">string</span><span style="color:#000000">&gt;</span><span style="color:#000000"> m_providerMappings </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#0000FF">new</span><span style="color:#000000"> Dictionary</span><span style="color:#000000">&lt;</span><span style="color:#0000FF">string</span><span style="color:#000000">, </span><span style="color:#0000FF">string</span><span style="color:#000000">&gt;</span><span style="color:#000000">();
    
    </span><span style="color:#0000FF">public</span><span style="color:#000000"> SignInConfiguration(): </span><span style="color:#0000FF">base</span><span style="color:#000000">()
    { }

    </span><span style="color:#0000FF">public</span><span style="color:#000000"> SignInConfiguration(</span><span style="color:#0000FF">string</span><span style="color:#000000"> name, SPPersistedObject parent): </span><span style="color:#0000FF">base</span><span style="color:#000000">(name, parent)
    { }

    </span><span style="color:#0000FF">public</span><span style="color:#000000"> SignInConfiguration(</span><span style="color:#0000FF">string</span><span style="color:#000000"> name, SPPersistedObject parent, Guid id): </span><span style="color:#0000FF">base</span><span style="color:#000000">(name, parent, id)
    { }
    
    </span><span style="color:#0000FF">public</span><span style="color:#000000"> Dictionary</span><span style="color:#000000">&lt;</span><span style="color:#0000FF">string</span><span style="color:#000000">, </span><span style="color:#0000FF">string</span><span style="color:#000000">&gt;</span><span style="color:#000000"> ProviderMappings
    {
        </span><span style="color:#0000FF">get</span><span style="color:#000000"> { </span><span style="color:#0000FF">return</span><span style="color:#000000"> m_providerMappings; }
    }
}</span></pre></div>

  <p>

  <p>To add this object to a web application or to get an existing one from a web application a custom PowerShell cmdlet is used</p>

  <div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:f048f2d2-8c75-4845-a053-6fc0686e933a" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;overflow:auto"><span style="color:#000000">[Cmdlet(</span><span style="color:#800000">&quot;</span><span style="color:#800000">Get</span><span style="color:#800000">&quot;</span><span style="color:#000000">, </span><span style="color:#800000">&quot;</span><span style="color:#800000">SPSignInConfiguration</span><span style="color:#800000">&quot;</span><span style="color:#000000">, DefaultParameterSetName </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800000">&quot;</span><span style="color:#800000">DefaultSet</span><span style="color:#800000">&quot;</span><span style="color:#000000">)]
</span><span style="color:#0000FF">public</span><span style="color:#000000"> </span><span style="color:#0000FF">class</span><span style="color:#000000"> SPCmdletGetSignInConfigObject : SPCmdlet
{
   </span><span style="color:#0000FF">private</span><span style="color:#000000"> SPWebApplicationPipeBind m_webAppPipeBind;

   </span><span style="color:#0000FF">protected</span><span style="color:#000000"> </span><span style="color:#0000FF">override</span><span style="color:#000000"> </span><span style="color:#0000FF">void</span><span style="color:#000000"> InternalProcessRecord()
   {
       SPWebApplication webApp </span><span style="color:#000000">=</span><span style="color:#000000"> m_webAppPipeBind.Read();
       SignInConfiguration sc </span><span style="color:#000000">=</span><span style="color:#000000"> webApp.GetChild</span><span style="color:#000000">&lt;</span><span style="color:#000000">SignInConfiguration</span><span style="color:#000000">&gt;</span><span style="color:#000000">(</span><span style="color:#800000">&quot;</span><span style="color:#800000">SignInConfig</span><span style="color:#800000">&quot;</span><span style="color:#000000">);
        
       </span><span style="color:#0000FF">if</span><span style="color:#000000"> (sc </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#0000FF">null</span><span style="color:#000000">)
       {
           sc </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#0000FF">new</span><span style="color:#000000"> SignInConfiguration(</span><span style="color:#800000">&quot;</span><span style="color:#800000">SignInConfig</span><span style="color:#800000">&quot;</span><span style="color:#000000">, webApp);
       }

       sc.Update();
       </span><span style="color:#0000FF">base</span><span style="color:#000000">.WriteObject(sc);
   }

   [ValidateNotNull]
   [Parameter(Mandatory</span><span style="color:#000000">=</span><span style="color:#0000FF">true</span><span style="color:#000000">, ValueFromPipeline</span><span style="color:#000000">=</span><span style="color:#0000FF">true</span><span style="color:#000000">, Position</span><span style="color:#000000">=</span><span style="color:#800080">0</span><span style="color:#000000">)]
   [Alias(</span><span style="color:#0000FF">new</span><span style="color:#000000"> </span><span style="color:#0000FF">string</span><span style="color:#000000">[] { </span><span style="color:#800000">&quot;</span><span style="color:#800000">WebApplication</span><span style="color:#800000">&quot;</span><span style="color:#000000">, </span><span style="color:#800000">&quot;</span><span style="color:#800000">WebApp</span><span style="color:#800000">&quot;</span><span style="color:#000000">})]
   </span><span style="color:#0000FF">public</span><span style="color:#000000"> SPWebApplicationPipeBind Identity
   {
       </span><span style="color:#0000FF">get</span><span style="color:#000000"> { </span><span style="color:#0000FF">return</span><span style="color:#000000"> m_webAppPipeBind; }
       </span><span style="color:#0000FF">set</span><span style="color:#000000"> { m_webAppPipeBind </span><span style="color:#000000">=</span><span style="color:#000000"> value; }
   }
}</span></pre></div>

  <p>A SignInConfiguration object is returned for the specified web application. If the configuration does not exist yet a new one will be created. This gives us a reference to the SingInConfig object in the Powershell environment. Any changes are persisted after calling the Update() method on the object.</p>

  <p>Finally, in the code behind of the login page the mappings are retrieved, the IP address of the request is checked against the mappings, and if an authentication provider is found the user is redirected to the provider’s sign-in page.</p>

  <div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:f06517ad-a840-4a18-9ba1-ec9c577bf2bc" class="wlWriterEditableSmartContent"><pre style="background-color:#FFFFFF;overflow:auto"><span style="color:#0000FF">protected</span><span style="color:#000000"> </span><span style="color:#0000FF">override</span><span style="color:#000000"> </span><span style="color:#0000FF">void</span><span style="color:#000000"> OnLoad(EventArgs e)
{
  </span><span style="color:#0000FF">if</span><span style="color:#000000"> (SPContext.Current </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#0000FF">null</span><span style="color:#000000">) </span><span style="color:#0000FF">return</span><span style="color:#000000">;
  </span><span style="color:#0000FF">if</span><span style="color:#000000"> (SPContext.Current.Site </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#0000FF">null</span><span style="color:#000000">) </span><span style="color:#0000FF">return</span><span style="color:#000000">;
  </span><span style="color:#0000FF">if</span><span style="color:#000000"> (SPContext.Current.Site.WebApplication </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#0000FF">null</span><span style="color:#000000">) </span><span style="color:#0000FF">return</span><span style="color:#000000">;

  SPWebApplication app </span><span style="color:#000000">=</span><span style="color:#000000"> SPContext.Current.Site.WebApplication;
  SignInConfiguration config </span><span style="color:#000000">=</span><span style="color:#000000"> app.GetChild</span><span style="color:#000000">&lt;</span><span style="color:#000000">SignInConfiguration</span><span style="color:#000000">&gt;</span><span style="color:#000000">(</span><span style="color:#800000">&quot;</span><span style="color:#800000">SignInConfig</span><span style="color:#800000">&quot;</span><span style="color:#000000">);

  SPAlternateUrl u </span><span style="color:#000000">=</span><span style="color:#000000"> app.AlternateUrls[Request.Url];
  SPUrlZone zone </span><span style="color:#000000">=</span><span style="color:#000000"> u.UrlZone;

  </span><span style="color:#0000FF">string</span><span style="color:#000000"> components </span><span style="color:#000000">=</span><span style="color:#000000"> Request.Url.GetComponents(UriComponents.Query, UriFormat.SafeUnescaped);
  SPIisSettings settings </span><span style="color:#000000">=</span><span style="color:#000000"> app.IisSettings[zone];

  </span><span style="color:#0000FF">string</span><span style="color:#000000"> ip </span><span style="color:#000000">=</span><span style="color:#000000"> IpNetworking.GetIP4Address();
  ip </span><span style="color:#000000">=</span><span style="color:#000000"> Regex.Replace(ip, </span><span style="color:#800000">@&quot;</span><span style="color:#800000">^(?&lt;Prefix&gt;(\d{1,3}\.){3})\d{1,3}$</span><span style="color:#800000">&quot;</span><span style="color:#000000">, </span><span style="color:#800000">&quot;</span><span style="color:#800000">${Prefix}*</span><span style="color:#800000">&quot;</span><span style="color:#000000">);
  </span><span style="color:#0000FF">if</span><span style="color:#000000"> (config </span><span style="color:#000000">!=</span><span style="color:#000000"> </span><span style="color:#0000FF">null</span><span style="color:#000000"> </span><span style="color:#000000">&amp;&amp;</span><span style="color:#000000"> config.ProviderMappings.ContainsKey(ip))
  {
      </span><span style="color:#0000FF">string</span><span style="color:#000000"> targetProvider </span><span style="color:#000000">=</span><span style="color:#000000"> config.ProviderMappings[ip];
      </span><span style="color:#0000FF">foreach</span><span style="color:#000000"> (SPAuthenticationProvider provider </span><span style="color:#0000FF">in</span><span style="color:#000000"> settings.ClaimsAuthenticationProviders)
      {
          </span><span style="color:#0000FF">if</span><span style="color:#000000"> (</span><span style="color:#0000FF">string</span><span style="color:#000000">.Compare(provider.DisplayName, targetProvider, </span><span style="color:#0000FF">true</span><span style="color:#000000">, System.Globalization.CultureInfo.CurrentUICulture) </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#800080">0</span><span style="color:#000000">
              </span><span style="color:#000000">||</span><span style="color:#000000"> </span><span style="color:#0000FF">string</span><span style="color:#000000">.Compare(provider.ClaimProviderName, targetProvider, </span><span style="color:#0000FF">true</span><span style="color:#000000">, System.Globalization.CultureInfo.CurrentUICulture) </span><span style="color:#000000">==</span><span style="color:#000000"> </span><span style="color:#800080">0</span><span style="color:#000000">)
          {
              </span><span style="color:#0000FF">string</span><span style="color:#000000"> url </span><span style="color:#000000">=</span><span style="color:#000000"> provider.AuthenticationRedirectionUrl.ToString();
              </span><span style="color:#0000FF">if</span><span style="color:#000000"> (provider </span><span style="color:#0000FF">is</span><span style="color:#000000"> SPWindowsAuthenticationProvider)
              {
                  components </span><span style="color:#000000">=</span><span style="color:#000000"> EnsureReturnUrl(components);
              }
              SPUtility.Redirect(url, SPRedirectFlags.Default, </span><span style="color:#0000FF">this</span><span style="color:#000000">.Context, components);
          }
      }
  }
  </span><span style="color:#0000FF">else</span><span style="color:#000000">
  {
      SPUtility.Redirect(</span><span style="color:#800000">&quot;</span><span style="color:#800000">/_forms/default.aspx</span><span style="color:#800000">&quot;</span><span style="color:#000000">, SPRedirectFlags.Default, </span><span style="color:#0000FF">this</span><span style="color:#000000">.Context, components);   
  }
  </span><span style="color:#0000FF">base</span><span style="color:#000000">.OnLoad(e);
}</span></pre></div>
</div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Wed, 23 Jun 2010 17:12:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>OData and WCF Data Services</title><link>http://www.orbitone.com/en/blog/archive/2010/06/09/odata-and-wcf-data-services.aspx</link><guid>/en/blog/archive/2010/06/09/odata-and-wcf-data-services.aspx</guid><description><![CDATA[<div class="ExternalClassC8C29EC76BB54C879CAD64F46A3E083F"><p class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">This week we started investigating OData and WCF data services as a way to easily expose and query a remote database.</p>
<p class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">OData, the <a href="http://www.odata.org/" target="_blank">Open Data Protocol</a> is a protocol for querying and updating data over using Http and AtomPub</p>
<p class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">Visual studio 2010 and .NET 4.0 come with rich support to both produce and consume data using the Open Data Protocol.</p>
<p class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">This post is a tutorial on how to set up a web service that exposes OData, and how to query it from a client application.</p>
<h2 class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">Prerequisites</h2>
<div class="ExternalClass77FC5E03CAFF4C7DA5F08BD09D764ACC">
<ul>
<li>Download and install the Northwind database<br><a href="http://www.codeproject.com/KB/database/InstallingNorthwindAndPub.aspx">http://www.codeproject.com/KB/database/InstallingNorthwindAndPub.aspx</a></li></ul></div>
<div class="ExternalClass87112F66381A4C70A49D8D5A51D5AED2">
<ul>
<li>Visual Studio 2010</li>
<li>.NET 4.0  Framework or the Data Services update for Microsoft .NET Framework 3.5 Service Pack 1</li></ul></div>
<h2>Exposing data as Odata</h2>
<p> </p>
<h5>Create a new ASP.NET Web application</h5>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_6_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_2_54ED993C.png" width="562" height="320"></a> </p>
<p> </p>
<h5>Create the Entity Data Model for the Northwind database</h5>
<p>The Entity Data Model will be the base for the WCF Data Service that will expose the Northwind data in the OData format</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_8_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_3_54ED993C.png" width="564" height="368"></a> </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_10_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_4_54ED993C.png" width="566" height="505"></a> </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_12_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_5_54ED993C.png" width="570" height="499"></a> </p>
<p>Here we can choose which Tables, Views and Stored Procedures will be exposed</p>
<p>Finish creates the Entity Data Model for the Northwind database</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_14_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_6_54ED993C.png" width="550" height="466"></a> </p>
<p> </p>
<h5>Create a new WCF Data Service</h5>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_16_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_7_54ED993C.png" width="557" height="331"></a> </p>
<p> </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_18_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_8_54ED993C.png" width="566" height="259"></a> </p>
<p> </p>
<p>The NorthwindService inherits from the DataService with as generic parameter the EntityDataModel we want to expose, in this case the NorthwindEntities we just created.</p>
<p>By default noone can do anything, we first need to set access rules for our entities.</p>
<p>The easyest way to do this is to expose all entities with read-all rights:</p>
<p>
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:b84fb22e-97dd-466e-8d10-4d754dabd941" class="wlWriterEditableSmartContent"><pre style="background-color:#ffffff;overflow:auto"><span style="color:#000000">config.SetEntitySetAccessRule(</span><span style="color:#800000">&quot;</span><span style="color:#800000">*</span><span style="color:#800000">&quot;</span><span style="color:#000000">, EntitySetRights.AllRead);</span></pre></div>
<p>
<p>If the Entity Data Model is in a different assembly you’ll need to add a reference, and make sure the connectionstring is in the web.config of the referencing project</p>
<p> </p>
<p>Visiting the service now shows the exposed data:</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_20_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_9_54ED993C.png" width="292" height="430"></a> </p>
<p> </p>
<p> </p>
<h2>Consuming the data</h2>
<p>To use the data exposed by the web service we create a client application.</p>
<p>Add a Service Reference to the web service. </p>
<p>For testing, there is always a public Northwind web service available on <a href="http://services.odata.org/Northwind/Northwind.svc/">http://services.odata.org/Northwind/Northwind.svc/</a></p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_24_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_11_54ED993C.png" width="535" height="433"></a> </p>
<p>This generates a web service proxy.</p>
<p>New is that this also generates a DataServiceContext. </p>
<p>Using the DataServiceContext we can query the data service through a linq provider.</p>
<p>The following extremely simple example print a list with the Name and Unit Price of all available products.</p>
<p> </p>
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:3b558ca2-050d-42a4-ae5f-cb77eb504486" class="wlWriterEditableSmartContent"><pre style="background-color:#ffffff;overflow:auto"><span style="color:#0000ff">class</span><span style="color:#000000"> Program
{
   </span><span style="color:#0000ff">static</span><span style="color:#000000"> </span><span style="color:#0000ff">void</span><span style="color:#000000"> Main(</span><span style="color:#0000ff">string</span><span style="color:#000000">[] args)
   {
       </span><span style="color:#0000ff">string</span><span style="color:#000000"> url </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800000">&quot;</span><span style="color:#800000">http://localhost:40171/NorthwindService.svc/</span><span style="color:#800000">&quot;</span><span style="color:#000000">;
       var context </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#0000ff">new</span><span style="color:#000000"> NorthwindEntities(</span><span style="color:#0000ff">new</span><span style="color:#000000"> Uri(url));

       var someProducts </span><span style="color:#000000">=</span><span style="color:#000000"> from p </span><span style="color:#0000ff">in</span><span style="color:#000000"> context.Products
                          </span><span style="color:#0000ff">where</span><span style="color:#000000"> </span><span style="color:#000000">!</span><span style="color:#000000">p.Discontinued
                          select p;

       </span><span style="color:#0000ff">foreach</span><span style="color:#000000"> (var product </span><span style="color:#0000ff">in</span><span style="color:#000000"> someProducts)
       {
           Console.Out.WriteLine(</span><span style="color:#800000">&quot;</span><span style="color:#800000">{0} - {1}</span><span style="color:#800000">&quot;</span><span style="color:#000000">,product.ProductName,product.UnitPrice);
       }
       Console.Read();
   }
}</span></pre></div>
<p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_26_54ED993C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/60/image_thumb_12_54ED993C.png" width="614" height="312"></a> </p>
<p>
<p>Download the sample code: </p>
<p><a title="http://www.orbitone.com/SiteCollectionDocuments/Northwind%20OData%20Service%20Sample.zip" href="http://www.orbitone.com/SiteCollectionDocuments/Northwind%20OData%20Service%20Sample.zip">http://www.orbitone.com/SiteCollectionDocuments/Northwind%20OData%20Service%20Sample.zip</a></p>
<p> </p>
<p>More information, samples, articles and tutorials can be found on <a href="http://www.odata.org/">http://www.odata.org/</a></p>
<p><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Some more links to get you started: </span></p>
<ul>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Open Data Protocol Visualizer <br><a href="http://visualstudiogallery.msdn.microsoft.com/en-us/f4ac856a-796e-4d78-9a3d-0120d8137722"><font color="#0000ff">http://visualstudiogallery.msdn.microsoft.com/en-us/f4ac856a-796e-4d78-9a3d-0120d8137722</font></a> <br></span></li>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Open Data Protocol (OData) with Pablo Castro<br><a href="http://www.hanselminutes.com/default.aspx?ShowID=223"><font color="#0000ff">http://www.hanselminutes.com/default.aspx?ShowID=223</font></a> <br></span></li>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Episode 43: Talking OData and SQL Modeling with Douglas Purdy <br><a href="http://deepfriedbytes.com/podcast/episode-43-talking-odata-and-sql-modeling-services-with-douglas-purdy/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+deepfriedbytes+(Deep+Fried+Bytes)&amp;utm_content=Google+Reader"><font color="#0000ff">http://deepfriedbytes.com/podcast/episode-43-talking-odata-and-sql-modeling-services-with-douglas-purdy/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+deepfriedbytes+%28Deep+Fried+Bytes%29&amp;utm_content=Google+Reader</font></a> <br></span></li>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Carl and Richard get the word on oData from Brad Abrams, Bob Dimpsey and Lance Olson. <br><a href="http://www.dotnetrocks.com/default.aspx?ShowNum=519"><font color="#0000ff">http://www.dotnetrocks.com/default.aspx?ShowNum=519</font></a> <br></span></li>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Using Data Services over SharePoint 2010 – Part 1 – Getting Started <br><a href="http://blogs.msdn.com/b/astoriateam/archive/2009/10/21/using-data-services-over-sharepoint-2010-part-1-getting-started.aspx"><font color="#0000ff">http://blogs.msdn.com/b/astoriateam/archive/2009/10/21/using-data-services-over-sharepoint-2010-part-1-getting-started.aspx</font></a><br></span></li>
<li><span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">The Open Data Protocol (OData) <br><a href="http://www.stephenforte.net/PermaLink,guid,28df55a8-8811-4c4b-b319-75c5c58d1444.aspx"><font color="#0000ff">http://www.stephenforte.net/PermaLink,guid,28df55a8-8811-4c4b-b319-75c5c58d1444.aspx</font></a> </span></li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Wed, 09 Jun 2010 12:10:00 GMT</pubDate></item><item><title>How to motivate knowledge workers, developers, creative people?</title><link>http://www.orbitone.com/en/blog/archive/2010/06/02/how-to-motivate-knowledge-workers-developers-creative-people.aspx</link><guid>/en/blog/archive/2010/06/02/how-to-motivate-knowledge-workers-developers-creative-people.aspx</guid><description><![CDATA[<div class="ExternalClassFEAC45B8A3894D5C8DD3997F44189578"><p>Thanks to a colleague of mine <a href="http://www.facebook.com/people/Voicu-Matei/100000752477710#!/profile.php?id=100000752477710">Voicu Matei</a> I came across this very interesting presentation about what actually motivates people:</p>  <p>Giving <b>money rewards</b> works very well to motivate people doing simple, straightforward tasks.</p>  <p>But surprisingly, it has the <b>opposite effect for more complicated tasks</b> that require some conceptual, creative thinking! For these kind of tasks, such as software development, <b>3 factors</b> lead to better performance &amp; personal satisfaction:</p>  <p>1. <b>Autonomy</b>: the desire to direct our own lives. Self-direction leads to engagement.</p>  <p>2. <b>Challenge and Mastery</b>: the urge to get better at stuff and making a contribution.</p>  <p>3. <b>Purpose</b>: more and more organisations feel that having a transcendent purpose/ motive helps people set higher goals and achieve better results. </p>  <div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3f160cf6-67d2-4859-a13b-914c5880affa" class="wlWriterEditableSmartContent"><div id="cc765fd8-b05a-4934-a09a-147306ea58bd" style="margin:0px;padding:0px;display:inline"><div><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc&amp;hl=en_GB&amp;fs=1&amp;"><img src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/59/video045f1d55377a_5ED8D937.jpg" style="border-style:none" alt=""></a></div></div></div>  <p>This research is completely in-line with the concepts of <b>The New World of Work</b>. We at Orbit One strongly believe in a <b>flexible working environment</b> resulting in <b>people feeling better</b>, and organization being more productive.</p>  <p>See blog post about The New World of Work: <a href="http://www.orbitone.com/en/blog/archive/2010/05/03/the-new-world-of-work-het-nieuwe-werken-orbit-one.aspx">http://www.orbitone.com/en/blog/archive/2010/05/03/the-new-world-of-work-het-nieuwe-werken-orbit-one.aspx</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Wed, 02 Jun 2010 09:18:40 GMT</pubDate></item><item><title>Mail Merge in Microsoft Dynamics CRM 4.0 doesn’t sort contacts</title><link>http://www.orbitone.com/en/blog/archive/2010/05/28/mail-merge-in-microsoft-dynamics-crm-4-0-doesn’t-sort-contacts.aspx</link><guid>/en/blog/archive/2010/05/28/mail-merge-in-microsoft-dynamics-crm-4-0-doesn’t-sort-contacts.aspx</guid><description><![CDATA[<div class="ExternalClassDD4D444B63BF4E5A8561831133224790">
<p>Noticed when tested the next CRM rollup.</p>
<p>Consider this scenario:</p>
<p>1. Open Active Contacts view in CRM.</p>
<p>2. Select several contacts (ctrl + click, or shift + click).</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_2_78D254EB.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_thumb_78D254EB.png" width="463" height="258"></a> </p>
<p>3. Start mail merge with merging selected records on current page. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_4_78D254EB.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_thumb_1_78D254EB.png" width="205" height="94"></a> </p>
<p>When we get a list of recipients, it is sorted randomly, as well as resulting letters: </p>
<p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_6_78D254EB.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/58/image_thumb_2_78D254EB.png" width="368" height="300"></a> </p>
<p>Then we are at risk to put wrong letters to envelopes. </p>
<p>Work around? Don’t forget to sort the list of recipients in mail merge dialog box before creating letters. No others’ experience found by now. </p>
<p>Luckily this didn’t happen with merging all contacts from saved Advanced Find views or from marketing lists. This is an advised way of working.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Fri, 28 May 2010 16:02:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Search Server Express 2010 available</title><link>http://www.orbitone.com/en/blog/archive/2010/05/28/search-server-express-2010-available.aspx</link><guid>/en/blog/archive/2010/05/28/search-server-express-2010-available.aspx</guid><description><![CDATA[<div class="ExternalClassBDBB581EFFC64C938E1DCD2194085C7D"><p>Microsoft unveiled Search Server Express 2010. This is a <strong><a href="http://www.microsoft.com/enterprisesearch/searchserverexpress/en/us/download.aspx" target="_blank">free download</a></strong> from Microsoft and is supposed to be a Google Mini Appliance killer. It’s main drawback compared to the full SharePoint Server 2010 Search is that it can only be used in a one server farm. But still with proper hardware it should be able to index and search about 3 million items with a sub-second response time.</p>  <p>See the <a href="http://www.microsoft.com/enterprisesearch/searchserverexpress/en/us/compare.aspx">compare chart</a>:</p>  <p><a href="http://www.microsoft.com/enterprisesearch/searchserverexpress/en/us/compare.aspx"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/57/image_3_3CB71622.png" width="919" height="431"></a> </p>  <p>As the Search Server is based on SharePoint technology (so effectively comes on top of SharePoint Foundation) it appears the ideal solution for small deployments on premise compared to Foundation itself as that offers only very limited search capabilities: <strong>No cross site search, no refinements, no external source indexing.</strong> </p>  <p><a href="http://www.microsoft.com/enterprisesearch/searchserverexpress/en/us/default.aspx">http://www.microsoft.com/enterprisesearch/searchserverexpress/en/us/default.aspx</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Fri, 28 May 2010 11:48:31 GMT</pubDate></item><item><title>Opening .msg files in Outlook from SharePoint 2010</title><link>http://www.orbitone.com/en/blog/archive/2010/05/26/opening-msg-files-in-outlook-from-sharepoint-2010.aspx</link><guid>/en/blog/archive/2010/05/26/opening-msg-files-in-outlook-from-sharepoint-2010.aspx</guid><description><![CDATA[<div class="ExternalClass44ECEC9836144D6B87723EBC45F1F11F"><p>Since we started using SharePoint 2010 we had trouble using it to store .msg (Outlook message format) in document libraries.</p>  <p>You can easily save your email from Outlook to a SharePoint location but opening it always gave a prompt dialog to save or cancel, not to open. So you were forced to store the email locally and then open it. Needless to say that this behavior is really annoying. I tried changing MIME types in IIS but it didn’t help and searching the internet I didn’t find a solution either.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_6_458A4724.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_thumb_2_458A4724.png" width="613" height="205"></a> </p>  <p>But then a colleague pointed me to a setting that changes the way SharePoint treats files opened from a browser. Its located in <strong>Central Administration &gt; Manage Web Applications &gt; Your WebApp &gt; General Settings</strong></p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_4_458A4724.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_thumb_1_458A4724.png" width="343" height="405"></a> </p>  <p>Changing this setting to <strong>permissive </strong>makes it possible to open .msg files in Outlook from SharePoint straight away. See screenshot below:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_2_458A4724.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/56/image_thumb_458A4724.png" width="441" height="255"></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Wed, 26 May 2010 14:32:39 GMT</pubDate></item><item><title>LifeSize videoconference: side-by-side comparison</title><link>http://www.orbitone.com/en/blog/archive/2010/05/11/lifesize-videoconference-side-by-side-comparison.aspx</link><guid>/en/blog/archive/2010/05/11/lifesize-videoconference-side-by-side-comparison.aspx</guid><description><![CDATA[<div class="ExternalClass6559B767123743A7B75936E54C809F39">
<p>LifeSize is a HD videoconference equipment market leader. They have a wide range of devices, and it can be confusing to understand the differences between them.</p>
<p>We made a comparison matrix that helps you select the right device for your scenario:</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/55/image_8_5199622C.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/55/image_thumb_3_5199622C.png" width="640" height="359"></a> </p>
<p>Download the <a href="http://www.orbitone.com/SiteCollectionDocuments/LifeSize%20compare%20sheet%20May%202010.pdf">PDF compare sheet</a>.</p>
<p><strong><font size="4">Selecting the right model for your needs</font></strong></p>
<p>Here is how we help our customers selecting the right model for their needs:</p>
<ul>
<li>We start by looking at an Express 220 </li>
<li>If the customer plan to have meetings with 3 or more parties, we advise a Team 220 Phone or Room 220. These are multipoint devices: 
<ul>
<li>The Team 220 allows for calls up to 4 parties: yourself + 3 other locations </li>
<li>The Room 220 allows for calls up to 8 parties: yourself + 7 other locations </li></ul></li>
<li>If the customer is looking for a low-cost, portable solution, we offer the LifeSize Passport. </li>
<ul>
<li>It’s important to understand the limitations of the Passport. The most important are: 
<ul>
<li>You cannot send PC images from the Passport. From our experience, 50% of the videoconferences benefit from PC screen sharing. This issue can be solved by using a 3rd party software such as WebEx or LiveMeeting. </li>
<li>You cannot view video and PC content simultaneously on the LifeSize Passport. Imagine that you are in a videoconference with another party that has an Express, Team or Room. The moment they start sending PC content, you cannot see their faces anymore. It’s one or the other. This is very annoying. </li></ul></li>
<li>Conclusion: the LifeSize Passport is a low cost alternative for people who do not need to share PC content often. </li></ul></ul>
<p><strong><font size="3">Notes</font></strong></p>
<ul>
<li>We do advise against buying the earlier 200 models. They are outdated and not will offer less compatibility with future products, such as the LifeSize Video Center </li>
<li>Once a customer selects the Team 220, we always advise to take the “Phone” version instead of the Dual Mic pod. The price difference is not that much anymore (700€ excl VAT), and having the phone comes in handy: 
<ul>
<li>When you are not videoconferencing, you can use it as a high quality conference phone. </li>
<li>When you are in a videoconference, you can add audio-only participants by calling them up, or having them dial-in. </li></ul></li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Tue, 11 May 2010 21:14:00 GMT</pubDate></item><item><title>SharePoint 2010: Social Features</title><link>http://www.orbitone.com/en/blog/archive/2010/05/04/sharepoint-2010-social-features.aspx</link><guid>/en/blog/archive/2010/05/04/sharepoint-2010-social-features.aspx</guid><description><![CDATA[<div class="ExternalClass5D23788486A841BFBDA673BBD50FF30F">
<p>Although Microsoft would claim that during the design process of SharePoint 2007 it invented social networking before Facebook and LinkedIn did, the times have changed somewhat since then and SharePoint 2007 wasnt really as social capable as we are now accustomed to.</p>
<p>In this post I would like to give an overview of all the cool new social features which I think will make SharePoint that much more interesting from a knowledge management perspective.</p>
<h1>Tagging &amp; Noteboard</h1>
<p>In my previous post on <a title="SharePoint 2010 Term store and other metadata enhancements - Orbit One Blog" href="http://www.orbitone.com/en/blog/archive/2010/04/21/sharepoint-2010-term-store-and-other-metadata-enhancements.aspx">SharePoint 2010 Term store and other metadata enhancements - Orbit One Blog</a> I talked about the new tagging possibilities in SharePoint. The cool thing is that this functionality is present on all pages within SharePoint at the top right of the page.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_21_757E5A62.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_9_757E5A62.png" width="122" height="72"></a> </p>
<p>So by clicking on these buttons you can quickly tag en note pages that you see within SharePoint but even nicer is to  put a button on your favorites bar to tag and note stuff on the internet as well </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_23_757E5A62.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_10_757E5A62.png" width="535" height="329"></a> </p>
<p>– Well for that just press the button once on a SharePoint page make the link on the screen a favorite.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_10_757E5A62.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_4_757E5A62.png" width="682" height="233"></a></p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_12_757E5A62.png"></a>
<p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_5_757E5A62.png" width="576" height="469"></p>
<p>
<p>
<p>The tagging function works with autocomplete which is nice and on the same screen you see recent activity on the item.</p>
<h1>SharePoint profiles</h1>
<p>Already since SharePoint 2003, users of SharePoint have had a profile with information about themselves. Normally these profiles get stale from the moment it got first updated on the first working day of a new employee :-)</p>
<p>The new version of SharePoint offers some new features that might be interesting in this respect:</p>
<h2>Integration of the Microsoft Knowledge Network</h2>
<p>The <a title="Microsoft Knowledge Network" href="http://blogs.msdn.com/kn/">Microsoft Knowledge Network</a> was introduced by Microsoft as an add-on for SharePoint 2007. It automates the discovery and sharing of undocumented knowledge and relationships, mining your communications for keywords and relationships within Outlook and updating your SharePoint profile accordingly. This way enabling you to quickly locate who knows whom and who knows what within your constantly changing organization. </p>
<p><a href="http://channel9.msdn.com/posts/Charles/Office-SharePoint-Server-2007-Knowledge-Network/" target="_blank"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_15_757E5A62.png" width="425" height="327"></a> </p>
<p>Now the combination of Outlook 2010 and SharePoint 2010 gives you the opportunity to do just that out-of-the-box. It’s called Colleague and Outlook Social Connector</p>
<h2>Sync SharePoint profile with other systems (social networks, Active Directory)</h2>
<p>It is now possible to sync your SharePoint profile back to Active Directory including your profile picture. This way it will be easier to maintain data in your Active Directory. Another cool <strong><em>opportunity</em></strong> would be a <a href="http://msdn.microsoft.com/en-us/library/ee534979(office.14).aspx" target="_blank">Business Connectivity Services (BCS)</a> connection that would sync your SharePoint profile with your profile on a social network, for instance LinkedIn? </p>
<ul>
<li><a title="What's New Business Connectivity Services" href="http://msdn.microsoft.com/en-us/library/ee534979(office.14).aspx">What's New Business Connectivity Services</a> </li>
<li><a title="LinkedIn Developer Network Community APIs" href="http://developer.linkedin.com/community/apis?view=overview">LinkedIn Developer Network Community APIs</a> </li></ul>
<h2> </h2>
<p>So now that you are tagging, noting inside and outside of the firewall and your SharePoint profile is always up to date how will you other people within your organisation benefit from all this data?</p>
<h1>Newsfeed</h1>
<p>Well with a newsfeed just like you have on common social network sites:</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_19_757E5A62.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_8_757E5A62.png" width="339" height="396"></a> </p>
<p>Within your profile you can set the types of updates you want to get in your newsfeed. See the following screenshot for the out-of-the-box settings. Developers can customize the activities that can be followed so you can track custom actions happening in SharePoint as well.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_2_757E5A62.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_thumb_757E5A62.png" width="594" height="466"></a> </p>
<p>That is it for the new and interesting social networking features in SharePoint.<a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/52/image_6_757E5A62.png"></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Wed, 05 May 2010 20:18:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>SharePoint 2010 mixed Authentication</title><link>http://www.orbitone.com/en/blog/archive/2010/05/04/sharepoint-2010-mixed-authentication.aspx</link><guid>/en/blog/archive/2010/05/04/sharepoint-2010-mixed-authentication.aspx</guid><description><![CDATA[<div class="ExternalClass47904F5DD300429795D0528FCD304B0D"><p>We have deployed several intranet/extranet applications on SharePoint 2007 that required a mixed authentication scheme. Windows Integrated authentication for domain user and forms based authentication for extranet users.</p>  <p>In SharePoint 2007 this was possible by extending a web application and using different authentication schemes for the different sites. This worked somewhat nice, but there were several problems with it.</p>  <ul>   <li>There are really separate websites running on the same content database. Some customisations need to be deployed twice, for example Smart Parts. </li>    <li>There are two url’s, for example extranet.example.com and intranet.example.com. </li>    <li>Rich Client Integration has lots and lots of problems when using forms based authentication </li>    <li>The possibilities of the People Picker are somewhat limited. </li> </ul>  <p> </p>  <p>SharePoint 2010 was announced to have Mixed Authentication, which would solve all problems!</p>  <h3>Setting up Mixed authentication in SharePoint 2010</h3>  <ol>   <li>     <h5>Create a new Web Application with Claims Based Authentication</h5>     <img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_34_5F0DCABD.png" width="467" height="114">       <br></li>    <li>     <h5>Select Authentication providers </h5>      <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_8_5EB08363.png"></a> </p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_3_01744BD2.png" width="467" height="371"> </p>      <p>Note: As you can see the last option is “Trusted Identity Provider” </p>      <p>This option is only available if you have configured Trusted Identity Providers. To do this the certificate of the trusted party needs to be installed first.</p>   </li>    <li>     <h5>Select Sign In page. </h5>      <h6>       <br></h6>      <p><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_33_5F0DCABD.png" width="480" height="167"> </p>      <p>here you can specify a custom login page. The default Sign In pages offers a drop down list with the configured authentication types.</p>   </li>    <li>     <h5>Create a site collection for the new web application </h5>      <h6>       <br></h6>      <p>The web application needs a root site collection </p>   </li>    <li>     <h5>Select a site collection administrator </h5>      <h6>       <br>        <br></h6>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_01744BD2.png" width="453" height="200"> </p>      <p>The people picker is much improved. Search results are linked to the membership provider and it is possible to search only for a single provider.</p>   </li>    <li>     <h5>Configure the providers </h5>      <h6>       <br></h6>      <p>Add the Membership and Role provider to the web.config of the web application we just created </p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_2_01744BD2.png" width="664" height="155"> </p>      <p>for simplicity’s sake I used an XML Membership and Role provider from <a href="http://aspnetxmlproviders.codeplex.com/" target="_blank">Codeplex</a>         <br></p>   </li>    <li>     <h5>Sign in using Forms Authentication</h5>      <p>Trying to access  the web site now presents us with a Sign In page where we can choose how we authenticate</p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_5_01744BD2.png" width="510" height="183"> </p>      <p>With windows authentication we can log in with our domain account</p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_6_01744BD2.png" width="166" height="68"> </p>      <p>with forms authentication we get a login form</p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_7_01744BD2.png" width="480" height="210"> </p>      <p>However, trying to log in with forms authentication will give a yellow page of death: A WCF FaultException telling us we can’t see the real error.        <br></p>   </li>    <li>     <h5>Configure the Security Token Service </h5>      <h6>       <br></h6>      <p>Digging through the SharePoint logs reveals the following error message:</p>      <blockquote>       <p>Cannot get Membership Provider with name XmlMembershipProvider. The membership provider for this process was not properly configured. You must configure the membership provider in the .config file for every SharePoint process.</p>     </blockquote>      <p>It turns out the SecurityTokenService tries to access the membership provider directly, but is not configured to do so.</p>      <p>After adding the Membership and Role provider to the web.config of the Security Token Service everything starts working. The web.config can be found here:        <br>C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\SecurityToken</p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_8_6C82C95E.png" width="460" height="162">         <br></p>   </li>    <li>     <h5>Sign in using forms authentication </h5>      <h6>       <br></h6>      <p>We can now sign in using forms authentication. Make sure to add the forms authentication based users to a SharePoint Group, or they will get Access Denied the moment they log in.</p>      <p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/54/image_thumb_9_6C82C95E.png" width="244" height="56"> </p>      <h6> </h6>   </li> </ol>  <h3>Rich Client Integration</h3>  <br>  <p>Office integration works great for both windows and forms authentication now. If you didn’t click “remember me” on the Sign In page you will be presented with a log in page that is actually usable. After clicking “remember me” all authentication will be transparent, and you can open the document for editing straight from SharePoint.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Wed, 05 May 2010 20:16:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category></item><item><title>The New World of Work (Het Nieuwe Werken) @ Orbit One</title><link>http://www.orbitone.com/en/blog/archive/2010/05/03/the-new-world-of-work-het-nieuwe-werken-orbit-one.aspx</link><guid>/en/blog/archive/2010/05/03/the-new-world-of-work-het-nieuwe-werken-orbit-one.aspx</guid><description><![CDATA[<div class="ExternalClass1874252428C74193B99F77AE41D521F0">
<h1>Concept</h1>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_7_0469A41C.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_thumb_2_0469A41C.png" width="596" height="135"></a> </p>
<p>The New World of Work is a new<strong> flexible way of working and collaborating with co-workers, partners, customers etc.</strong> This new kind of working is funded on three pillars: <strong>People &amp; Organisation, The Office and ICT</strong>.</p>
<h2>People &amp; Organisation</h2>
<p>In order to stay competitive organisations need to hire and retain the best staff. To be an attractive employer for talent you need to <strong>challenge</strong> them and make them <strong>responsible for the results</strong> they deliver. In this <strong>culture of openness</strong> Managers control less and support more.</p>
<h2>ICT</h2>
<p>ICT is the <strong>underlying enabler</strong> of the “New World of Work” because it makes it possible for people to work from <strong>anywhere, at any time, with anybody</strong>. We use solutions as <strong>video conferencing, presence and virtual workspaces</strong> on a daily basis and feel it is key for working in the “New World of Work”  </p>
<h2>The Office – Workplace</h2>
<p>The office &amp; its workplaces need to <strong>invite</strong> and <strong>stimulate</strong> people to perform different types of work in the most <strong>effective</strong> and <strong>pleasurable</strong> way. People spend more and more time <strong>collaborating</strong> with others (co-workers, partners or customers) so setup workspaces specific for these types of activity: <strong>meetings, brainstorms, video conferences, chats</strong> and of course some <strong>relax</strong> spaces to play and have fun. </p>
<h1>Orbit One and The New World of Work</h1>
<p>Within Orbit One we wanted to know where we stand in ‘the new world of work’ so we did a survey originally created by <a href="http://twitter.com/dikbijl">Dik Bijl</a> in Dutch and translated it into English because in our team of 17 enthusiastic employees that is the working language :-)</p>
<p>If you want to do the survey yourself please <a href="http://www.orbitone.com/SiteCollectionDocuments/Survey%20The%20New%20World%20of%20Work.docx">download</a> it and use the <a href="http://www.orbitone.com/SiteCollectionDocuments/Template%20Results%20survey%20new%20world%20of%20work.xlsx">excel template</a> analyzing the results.<a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_2_0469A41C.png"></a> </p>
<p> <img title="" alt="Culinair team at work by Orbit One." src="http://farm4.static.flickr.com/3608/3327487451_39ebbaf7a9.jpg" width="333" height="500"></p>
<h2>Results</h2>
<p>Here is a graph of the results of the survey focusing on the different aspects of ‘the new world of work’</p>
<p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="Results survey new world of work" border="0" alt="Results survey new world of work" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_thumb_0469A41C.png" width="510" height="308"></p>
<p>The results of the survey told us that we are doing reasonably well but as always there is room for improvement! We started on our physical work environment: The Office.</p>
<h1>Come and experience One Office</h1>
<p>With the survey in mind we started with the <a href="http://www.flickr.com/photos/orbitone/sets/72157623224923235/">upgrade of our Office in Gent</a> to be ready for the ‘New World of Work’.</p>
<p>We <strong>rent out part of our office</strong> so if you want to take advantage of this <strong>highly productive and fun working environment </strong>or if you just want to have peek inside, don’t be shy, come and visit us in Gent! </p>
<p>For more info on one office flexible workplaces see our <a href="http://www.oneoffice.be/">website “One Office”</a> <img alt="Kenmerken" src="http://www.oneoffice.be/media/5032/header_hetkantoor.jpg" width="653" height="136"></p>
<h1>What can Orbit One offer you?</h1>
<p>Orbit One is a Internet Solutions provider that assists clients in becoming more efficient using technologies such as: <a href="http://sharepoint2010.microsoft.com/Pages/default.aspx">SharePoint</a>, <a href="http://www.microsoft.com/communicationsserver/nl/nl/default.aspx">Office Communications Server (OCS),</a> <a href="http://www.microsoft.com/exchange/2010/en/us/default.aspx">Exchange</a>, <a href="http://technet.microsoft.com/en-us/network/dd420463.aspx">Direct Access</a> and SSL VPN. With these technologies we create an integrated environment for your people (employees, partners and customers) that simply works and will boosts their productivity!</p>
<p>Find out more in <a href="http://www.slideshare.net/orbitone/the-new-world-of-work">our presentation</a> on slideshare</p>
<p><a href="http://www.slideshare.net/orbitone/the-new-world-of-work"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_5_0469A41C.png" width="405" height="342"></a> </p>
<p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px" title="image" border="0" alt="image" align="right" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_thumb_3_0469A41C.png" width="188" height="244"></p>
<h1>Downloads and other related stuff<a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/51/image_9_0469A41C.png"></a> </h1>
<ul>
<li><a href="http://www.orbitone.com/SiteCollectionDocuments/Survey%20The%20New%20World%20of%20Work.docx">Survey for the New World of Work</a> </li>
<li><a href="http://www.orbitone.com/SiteCollectionDocuments/Template%20Results%20survey%20new%20world%20of%20work.xlsx">Excel template for results survey</a> </li>
<li><a href="http://www.slideshare.net/orbitone/the-new-world-of-work">Orbit One Presentation “The New World of Work”</a> </li>
<li><a href="http://www.oneoffice.be/nl">OneOffice</a> website </li>
<li><a title="Klein receptenboek voor het nieuwe werken door Roland Hameeteman, Ben Kuiken, Gonny Vink (Boek)" href="http://www.managementboek.nl/boek/9789077881651/klein_receptenboek_voor_het_nieuwe_werken_roland_hameeteman">Klein receptenboek voor het nieuwe werken door Roland Hameeteman, ..</a> </li>
<li><a title="Het nieuwe werken, op weg naar een productieve kenniseconomie door Dik Bijl (Boek) - ISBN 978901" href="http://www.managementboek.nl/boek/9789012119481/het_nieuwe_werken_op_weg_naar_een_productieve_kenniseconomie_dik_bijl">Het nieuwe werken, op weg naar een productieve kenniseconomie</a> </li></ul>
<p>If you’re interested <a href="http://www.orbitone.com/nl/Over-Orbit-One/Pages/Contacteer-ons.aspx">contact us</a> we can give a <strong>presentation/demo</strong> of how we work in the new world of work and how we can make you work<strong> more productive</strong> as well</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Mon, 03 May 2010 18:14:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Office/default.aspx">Office</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category></item><item><title>Orbit One developed a free application to import/migrate files and folders to SharePoint 2010</title><link>http://www.orbitone.com/en/blog/archive/2010/04/28/orbit-one-developed-a-free-application-to-importmigrate-files-and-folders-to-sharepoint-2010.aspx</link><guid>/en/blog/archive/2010/04/28/orbit-one-developed-a-free-application-to-importmigrate-files-and-folders-to-sharepoint-2010.aspx</guid><description><![CDATA[<div class="ExternalClass7B0B369F551C48CDB7C0567B747A96AD"><p>Orbit One is one of the SharePoint 2010 launch partners in Belgium.</p>  <p>We have several clients who are planning to upgrade to Microsoft SharePoint 2010, and we have some real-life projects running on Microsoft SharePoint 2010 RC. </p>  <p>One of the issues was finding a tool to migrate a big load of files and folders to SharePoint, and keep the original created and modified dates. The creation/modified date of files are sometimes really important, as it allows the user to understand how relevant the information is.</p>  <p>We looked at <a href="http://www.metalogix.net/Home/">MetaLogix</a> and <a href="http://www.vyapin.com/products/sharepoint/moss-2007/dockit/sharepoint-2007-file-migration.htm">DocKIT</a>, both where working on beta versions of migration tools for SharePoint 2010. </p>  <p>Our customers where looking for a cost-effective solution, without having to pay based on the number of GB they want to transfer. </p>  <p>This was a perfect scenario to make use of the new <a title="SharePoint 2010 managed client object model" href="http://msdn.microsoft.com/en-us/library/ee537247(v=office.14).aspx">Managed Client Object Model</a>, allowing us to build a nice small tool. </p>  <p>Since we figure this could be useful to others, we published the <a title="SharePoint 2010 Bulk Document Importer" href="http://spbulkdocumentimport.codeplex.com/">SharePoint 2010 Bulk Document Importer on Codeplex</a>. </p>  <p>Feel free to use and improve it! </p>  <p>Features: </p>  <ul>   <li>Run it anywhere. Every action is done using the Client Object Model, there is no need to install it on the server.</li>    <li>Import folders and files with all subfolders </li>    <li>Retain creation and modified date fields after moving to SharePoint </li>    <li>Retain author/editor fields from office documents after moving to SharePoint </li>    <li>Incompatible file names are renamed (filename too long, illegal characters) </li>    <li>Unsupported files (large file size, blocked file extension, …) are skipped </li>    <li>Files already existing on SharePoint are skipped (no overwrite) </li>    <li>Successfully migrated files and folders can be moved to an “archive” folder </li>    <li>Detailed log (<a title="log4net" href="http://logging.apache.org/log4net/">log4Net</a>) with info on migration issues </li>    <li>Option to skip creation of empty folders in SharePoint </li>    <li>Option to merge subfolders to a flat list in SharePoint. </li> </ul>  <p> </p>  <p>The application is a command line application that can be easily batched for several migrations to different document libraries.</p>  <p>Example:</p>  <p>Import all files from the <strong>user guides</strong> folder on the central file share to the <strong>userguides</strong> document library on the <strong>intranet.</strong></p>  <p><b>OrbitOne.SharePoint.Importer.exe -folder:&quot;\\fileshare\documents\user guides&quot; site:&quot;http://intranet/documentation&quot; -documentlibrary:userguides</b></p>  <p> More information, examples and technical information can be found on the <a title="SharePoint 2010 Bulk Document Importer documentation" href="http://spbulkdocumentimport.codeplex.com/documentation">documentation wiki</a>.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Wed, 28 Apr 2010 16:13:04 GMT</pubDate></item><item><title>SharePoint 2010: Term store and other metadata enhancements</title><link>http://www.orbitone.com/en/blog/archive/2010/04/21/sharepoint-2010-term-store-and-other-metadata-enhancements.aspx</link><guid>/en/blog/archive/2010/04/21/sharepoint-2010-term-store-and-other-metadata-enhancements.aspx</guid><description><![CDATA[<div class="ExternalClass0A54AC9352024D0796C7427A63C7AFE6">
<p>The long expected successor of MOSS 2007, SharePoint 2010 will launch on May 12. We are all very excited about this! The last couple of months we have been working with the new version and we would like to give you an overview of the key new features regarding metadata and classification.</p>
<p>In the coming weeks we will dive deeper into other aspects of the platform: Search, Social Features, Offline access and Workflow.</p>
<h2>Term store </h2>
<p>The Term store is a service application that can be setup to manage metadata across farms, web applications and site collections. </p>
<h3>Taxonomy and Folksonomy</h3>
<p>Within the term store metadata can be managed top-down (taxonomy) or bottom-up (folksonomy). This means that an organisation can have an official taxonomy but at the same time provide users with the ability to add free tags to content as they please. Another cool thing about this is that you can ‘upgrade’ terms from the folksonomy to the taxonomy!</p>
<h3>Hierarchical terms</h3>
<p>The terms within the term store can be hierarchical in nature: For instance Regions and countries form a hierarchical structure. When people tag a specific item within SharePoint with Bermuda you can find it under Caribbean or Americas as well. </p>
<p><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="Hierarchical metadata" border="0" alt="Hierarchical metadata" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/clip_image001_thumb_31CFFA99.png" width="229" height="244"></p>
<h3>Management of terms</h3>
<p>Each set of terms has an owner. He or she can maintain the terms and other people can give suggestions on synonyms or missing terms directly via the user interface. This makes SharePoint a very user friendly tool for managing metadata.</p>
<h3>Autocomplete on terms and tags </h3>
<p>When typing a term users get an autocomplete functionality to guide them to already used tags and the predefined taxonomy. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/clip_image002_2_31CFFA99.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/clip_image002_thumb_31CFFA99.png" width="216" height="183"></a></p>
<h3>Content type hub</h3>
<p>With the term store it is possible to reuse content types across site collections, web applications and even farms. This way policies and workflows can be forced on content across the enterprise which is key in larger organisations. To start using this functionality you need to set up a site collection as your content type hub. In this site collection you’ll maintain your enterprise wide content types. Other sites can use the content types created there.</p>
<h2>Other enhancements to metadata usage</h2>
<h3>Metadata navigation</h3>
<p>When browsing libraries or lists users can use key filters and metadata navigation to quickly find the right document within the library. This functionality makes folders look so 2009 ;-)</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/clip_image003_2_31CFFA99.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image003" border="0" alt="clip_image003" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/clip_image003_thumb_31CFFA99.png" width="150" height="244"></a> </p>
<h3>Facetted Search</h3>
<p>Known already from addons like <a href="http://facetedsearch.codeplex.com/Wikipage">Codeplex’s MOSS Faceted Search</a> or Surfray’s <a href="http://www.surfray.com/products/ontolica.html">Ontolica Search for SharePoint</a> this feature creates dynamic filters based on your search result which make it easy for end users to refine their search based on metadata properties.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/image_2_31CFFA99.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/image_thumb_31CFFA99.png" width="543" height="458"></a> </p>
<h3>Validation based on Excel based formulas </h3>
<p>SharePoint 2010 makes it possible to validate data coming into SharePoint. The user will be instructed on what specific rules a certain property needs to comply to be saved to SharePoint. The formulas describing the rules are based on Excel logic.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/image_4_31CFFA99.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/49/image_thumb_1_31CFFA99.png" width="624" height="177"></a> </p>
<p>That's it for now. Stay tuned for more good SharePoint 2010 stuff!</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Wed, 21 Apr 2010 15:48:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint 2010/default.aspx">SharePoint 2010</category></item><item><title>A new website has been launched: www.recytyre.be</title><link>http://www.orbitone.com/en/blog/archive/2010/03/29/a-new-website-has-been-launched-www-recytyre-be.aspx</link><guid>/en/blog/archive/2010/03/29/a-new-website-has-been-launched-www-recytyre-be.aspx</guid><description><![CDATA[<div class="ExternalClassCBA8DF69CF6D43B3A3718892D5933A1F"><p>We’re happy to announce that the new website of Recytyre VZW was launched. Recytyre is a controlling organism for waste-tyres in Belgium, focussing on sustainable solutions contributing to a greener future.</p>  <p><a href="http://www.recytyre.be">www.recytyre.be</a> </p>  <p><a href="http://www.recytyre.be"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/48/image_3_3A3A53C4.png" width="471" height="249"></a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rik Helsen</dc:creator><pubDate>Mon, 29 Mar 2010 16:38:36 GMT</pubDate></item><item><title>Meet us at Microsoft TechDays: 30-31 March &amp; 1 April</title><link>http://www.orbitone.com/en/blog/archive/2010/03/28/meet-us-at-microsoft-techdays-30-31-march-amp-1-april.aspx</link><guid>/en/blog/archive/2010/03/28/meet-us-at-microsoft-techdays-30-31-march-amp-1-april.aspx</guid><description><![CDATA[<div class="ExternalClass15AB78D8160B41D2978B54B00AAF13D9"><p>Orbit One will attend <a href="http://www.microsoft.com/belux/techdays/2010">Microsoft TechDays</a> this week, Metropolis Antwerp - Belgium.     <br>I’m looking forward to good sessions, meeting friends and loads of food :-)</p>  <p>Meet our team, look for our T-shirts!</p>  <ul>   <li><strong>Pre-conference + Techdays 30-31 March, 1 April</strong>: Mel, Wim DC, Thijs, Viktor, Tom, Olivier </li>    <li><strong>TechDays 31-1 April</strong>: Wim R, Jan, Hans, Dennis, Voicu, Lieven, Pieter-Jan </li> </ul>  <p><a title="Try a NEW world of work, experience OneOffice" href="http://www.oneoffice.be"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="Try a NEW world of work, experience OneOffice" border="0" alt="Try a NEW world of work, experience OneOffice" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/47/image_3_11BC5C70.png" width="519" height="230"></a> </p>  <p>There is a lot to talk about this year:</p>  <ul>   <li>SharePoint 2010 </li>    <li>Visual Studio 2010 </li>    <li>.NET Framework 4.0 </li>    <li>ASP.NET 4.0 </li>    <li>Entity Framework 4.0 </li>    <li>Windows Communication Foundation 4 </li>    <li>Workflow Foundation 4 </li>    <li>Windows Server 2008 R2 </li>    <li>SQL Server 2008 R2 </li>    <li>Exchange 2010 </li>    <li>Office 2010 </li> </ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Sun, 28 Mar 2010 13:20:28 GMT</pubDate></item><item><title>Looking for an office in Gent?</title><link>http://www.orbitone.com/en/blog/archive/2010/03/19/looking-for-an-office-in-gent.aspx</link><guid>/en/blog/archive/2010/03/19/looking-for-an-office-in-gent.aspx</guid><description><![CDATA[<div class="ExternalClass9D15538D1B2F43B9B0C7F401C650DD57">
<p>Met het concept OneOffice stelt Orbit One haar <a href="http://www.oneoffice.be/nl/het-kantoor.aspx">kantoren</a> open voor mensen die op zoek zijn naar een <strong><a href="http://www.oneoffice.be/nl/het-kantoor/open-office-spaces.aspx">flexibele werkomgeving</a> in hartje Gent</strong>.</p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/46/image_2_43111AB8.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/46/image_thumb_43111AB8.png" width="454" height="278"></a> </p>
<p>De nadruk ligt op het creëren van een <strong>aangename</strong> omgeving waar mensen werken en <strong>samenwerken</strong>, ondersteund door de laatste <strong><a href="http://www.oneoffice.be/nl/diensten.aspx">technologie</a></strong>. </p>
<p>Het concept is opgebouwd rond <strong><a href="http://www.oneoffice.be/nl/het-concept/het-nieuwe-werken.aspx">Het nieuwe werken</a></strong>, een vooruitstrevende manier van samenwerken.</p>
<p><a title="http://www.oneoffice.be" href="http://www.oneoffice.be/">http://www.oneoffice.be</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Fri, 19 Mar 2010 18:43:00 GMT</pubDate></item><item><title>Experience of web deployment of Office 2007 templates</title><link>http://www.orbitone.com/en/blog/archive/2010/01/20/experience-of-web-deployment-of-office-2007-templates.aspx</link><guid>/en/blog/archive/2010/01/20/experience-of-web-deployment-of-office-2007-templates.aspx</guid><description><![CDATA[<div class="ExternalClass52CD869B4E344B9A97EF61096BEB68C0">
<div>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Together with known ways to use user and workgroup templates Windows folders, the 2007 Microsoft Office system gives a possibility to use templates located on web sources. It is combined with the tools to customize the New Document dialog box for Word, PowerPoint and Excel.</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><font size="2"><font face="Calibri"><span lang="EN-US"><font color="#000000">The source </font></span><span lang="EN-GB"><a href="http://technet.microsoft.com/en-us/library/cc178976.aspx"><span lang="EN-US"><font color="#0000ff">http://technet.microsoft.com/en-us/library/cc178976.aspx</font></span></a></span><span lang="EN-US"><font color="#000000"> gives good guidelines to start with web deployment. </font></span></font></font></p><font size="2"><font face="Calibri"><span lang="EN-US"></span></font></font><span lang="EN-US"><font size="3"><font color="#000000" face="Calibri">
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><font color="#000000" size="4"><strong>Limitations</strong></font></font></span></p><span lang="EN-US">
<p style="margin:0cm 0cm 0pt 36pt" class="MsoListParagraph"><font color="#000000"><span style="font-family:Symbol" lang="EN-US"><span><font size="2">·</font><span style="font:7pt 'Times New Roman'">         </span></span></span><span lang="EN-US"><font face="Calibri"><font size="2">The method needs to work online when creating new documents. If you want typing documents in a train or in an airport, think about making an offline replica of a web application with templates, or saving templates on your PC. </font></font></span></font></p>
<p style="margin:0cm 0cm 0pt 36pt" class="MsoListParagraph"><font color="#000000"><span lang="EN-US"></span></font><font color="#000000"><span lang="EN-US"><font size="2"><font face="Calibri"><span style="font-family:Symbol" lang="EN-US"><span><font size="2">·</font><span style="font:7pt 'Times New Roman'">         </span></span></span>To deploy the templates, you have to prepare XML files, preview and thumbnail images. If the preparation of XML files can be scripted, images have to be done manually. </font></font></span></font></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="4"><strong>Issues and work around</strong></font></font></span><p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><strong><font color="#000000">Deployment templates on SharePoint - authentication issue</font></strong></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"></font></font></span><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">If you used a template saved on a SharePoint site to create a document, you or other users can be prompted to log in to the SharePoint site when opening the document. It happens even if anonymous access is enabled on the template site. If the login is ignored, the document still opens. This happens because of a known authentication issue between SharePoint and Office:</font></font></span><p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-GB"><a href="http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/7c69af51-d1b1-4642-b5fc-548663dd4564/"><span lang="EN-US"><font color="#0000ff" size="2" face="Calibri">http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/7c69af51-d1b1-4642-b5fc-548663dd4564/</font></span></a></span><span lang="EN-US"></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-GB"><a href="http://webborg.blogspot.com/2007/12/how-to-open-office-document-in-document.html"><span lang="EN-US"><font color="#0000ff" size="2" face="Calibri">http://webborg.blogspot.com/2007/12/how-to-open-office-document-in-document.html</font></span></a></span><span lang="EN-US"></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">After all fiddling on access settings, the conclusion was: don’t deploy Office templates on a SharePoint site. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">An easy work around may be just publishing the document in PDF format. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="3"><strong>International</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="2"><strong>LCID in folder names</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font size="2"><span lang="EN-US"><font color="#000000">Pay attention that the examples in </font></span><span lang="EN-GB"><a href="http://technet.microsoft.com/en-us/library/cc178976.aspx"><span lang="EN-US"><font color="#0000ff">http://technet.microsoft.com/en-us/library/cc178976.aspx</font></span></a></span><span lang="EN-GB"> </span><span lang="EN-US"><font color="#000000">have 1033, the ID of the US English language locale. If the language of Microsoft Office user interface is different from English, the templates will not be shown. The XML files have to be b adapted. If users in your organization have different locales, you have to prepare variations of XML files per language. If the user interface of Microsoft Office on a PC has been changed, the templates have to be reinstalled. </font></span></font></font></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><font face="Calibri"><font size="2"><span lang="EN-US"></span></font></font><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri"><strong>Non-Latin characters</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">If your language is using other characters than 26 “standard” Latin letters, you have to encode the characters in XML files explicitly. In particular, it is required for Latin characters with diacritics (accents, umlauts, etc.) See an example: </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">&lt;o:featuredtemplate title=&quot;PV r&amp;#233;union&quot; source=&quot;http://templateprovider.client.com/templates/ PV%20reunion%20FR.dotx&quot;&gt;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Here the (ANSI) code &amp;#233; represents the Latin letter with accent é. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">The provider names in the registry also have to convert such characters. For example, to get é, you have to use the character with ANSI code 130 (shown as comma in text files):</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><font size="2"><font face="Calibri"><font color="#000000"><i><span lang="EN-US">HKCU\Software\Microsoft\Office\12.0\</span></i></font></font></font><font size="2"><font face="Calibri"><font color="#000000"><i><span lang="EN-US">Common\Spotlight\Providers\Comit‚</span></i><span lang="EN-US"> for Comité</span></font></font></font></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><font size="2"><font face="Calibri"><font color="#000000"><span lang="EN-US"></span></font></font></font><span lang="EN-US"><font face="Calibri"><font color="#000000" size="3"><strong>Sorting issue – numbers sorted as texts</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Normally the template thumbnails are shown in the same order as they are listed in the XML file. </font></font></span><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">But if a template group contains more than nine templates, their order in UI is different. It happens because templates get ordinal numbers used in registry keys and folder names. And both these values are sorted as texts, so that 10 and 19 come before 2. If you want to show thumbnails in proper order, make a formula which sorts the original XML entries in the way which is turned correctly when sorted as a text. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="3"><strong>Delays</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">When the templates are just installed on a PC, the groups are shown in the New Document dialog box, but template thumbnails are not. Go out and go in, then you get the templates. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="3"><strong>Different versions of Windows</strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Office 2007 works in Windows XP or later. But the structure of the registry and the folders is different in Windows 7, Vista and XP. So the scripts used to install or to uninstall the templates will also be different. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Calibri"><font color="#000000" size="4"><strong>Bulk processing </strong></font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Our client is using about 200 different Office templates varied by document type, language, institute, and availability of mail merge. Their client PC’s have to be maintained consistently. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">The needed XML files can be created either by software utilities or by Excel spreadsheets with formulas based on lists of templates. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">The installation of the templates is done by a batch file which uses commands of getting, creating and setting registry keys. The script can identify the Windows version and the language locale of Microsoft Office user interface, and adapt the installation accordingly:</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem works for both Vista and XP</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">reg query &quot;HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\LanguageResources&quot; /v UILanguage &gt;c:\temp\uilang.txt</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem check Dutch</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">find &quot;413&quot; c:\temp\uilang.txt</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">if %errorlevel% equ 0 goto setlang1043</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem check French</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">find &quot;40C&quot; c:\temp\uilang.txt</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">if %errorlevel% equ 0 goto setlang1036</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem check German</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">find &quot;407&quot; c:\temp\uilang.txt</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">if %errorlevel% equ 0 goto setlang1031</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span><font size="2"><font color="#000000" face="Calibri">del c:\temp\uilang.txt /f /q</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-GB"><font color="#000000" size="2" face="Calibri">This script creates one group of Word templates entitled “Comité”:</font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">:regkey</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">:source</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">:langid</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">set regkey=HKCU\Software\Microsoft\Office\12.0\Common\Spotlight</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">set source=http://templateprovider.client.com</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">:setlang1036</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">set langid=_fr</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">reg add %regkey%\Providers /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">reg add &quot;%regkey%\Providers\Comit‚&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">reg add &quot;%regkey%\Providers\Comit‚&quot; /v ServiceURL /d &quot;%source%/xml/comite_wd%langid%.xml&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-GB"><font size="2"><font color="#000000" face="Calibri">reg add &quot;%regkey%\Providers\Comit‚&quot; /v Application /d &quot;WD&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">A good guide about managing registry keys in command prompt can be found here:</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-GB"><a href="http://www.chaminade.org/MIS/Articles/RegistryEdit.htm"><span lang="EN-US"><font color="#0000ff" size="2" face="Calibri">http://www.chaminade.org/MIS/Articles/RegistryEdit.htm</font></span></a></span><span lang="EN-US"></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">The batch file itself can be created by a script. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Don’t forget about keeping systems clean. Together with the installation batch file, foresee another one to uninstall the templates. Put the code to clean up the registry and the Office folders for any template which was ever used in the organization. Remember that the system creates several registry keys and folders in user profile for each template, and all of them have to be deleted when uninstalling the template. If it is not done, the obsolete template versions or group titles may stay in cache and pop up when the user tries to open the latest version. </font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">Here is a sample script of clean uninstall of one group of templates in Vista:</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:regkey</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:locfiles</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:spotlight</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:cookies</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set regkey=HKCU\Software\Microsoft\Office\12.0\Common\Spotlight</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set locfiles=http://templateprovider.client.com/</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set spotlight=&quot;C:\Users\%username%\AppData\Local\Microsoft\Office\Spotlight\Office 12&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set cookies=&quot;C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Cookies&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Deletion of Providers registry keys per organisation/Office application</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">reg delete &quot;%regkey%\Providers\Client docx&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">reg delete &quot;%regkey%\Content\Client docx&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Cleaning cookies</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">del %cookies%&quot;\*client*.txt&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Cleaning cache</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rd %spotlight%&quot;\Client docx&quot; /s /q</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">and in XP:</font></font></span></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:regkey</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:locfiles</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:spotlight</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">:cookies</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set regkey=HKCU\Software\Microsoft\Office\12.0\Common\Spotlight</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set locfiles=http://templateprovider.client.com/</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set spotlight=&quot;C:\Documents and Settings\%username%\Local Settings\Application Data\Microsoft\Office\Spotlight\Office 12&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">set cookies=&quot;C:\Documents and Settings\%username%\Cookies&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Deletion of Providers registry keys per organisation/Office application</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">reg delete &quot;%regkey%\Providers\Client docx&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">reg delete &quot;%regkey%\Content\Client docx&quot; /f</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Cleaning cookies</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">del %cookies%&quot;\*client*.txt&quot;</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rem Cleaning cache</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><i><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">rd %spotlight%&quot;\Client docx&quot; /s /q</font></font></span></i></p>
<p style="margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font size="2"><font color="#000000" face="Calibri">The batch files prepared for Vista run perfectly in Windows 7 when started from file system. You can easily start the batch files from web locations (e.g. SharePoint site) in Vista and XP, but in Windows 7 they will not work: the access will be denied. The bacth files have to be copied to file system and started from there.</font></font></span></p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Mon, 08 Mar 2010 19:46:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Office/default.aspx">Office</category></item><item><title>Unexpected conversion of links in SharePoint 2007 rich text content</title><link>http://www.orbitone.com/en/blog/archive/2010/03/05/unexpected-conversion-of-links-in-sharepoint-2007-rich-text-content.aspx</link><guid>/en/blog/archive/2010/03/05/unexpected-conversion-of-links-in-sharepoint-2007-rich-text-content.aspx</guid><description><![CDATA[<div class="ExternalClassC759CC6CA30047FC81364BD53ACD476F">
<p>Imagine the following scenario. You are typing some rich text entry on your SharePoint intranet with the internal URL <a href="http://intranet/">http://intranet/</a>. It might be a blog post, a discussion board, or just a content editor web part. You insert a link to other intranet site, like <a href="http://intranet.client.com/">http://intranet.client.com</a>. When you test the link, it looks like you want, but it works as just <a href="http://intranet/">http://intranet/</a>. </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_2_706BF121.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_thumb_706BF121.png" width="244" height="217"></a> <a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_4_706BF121.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_thumb_1_706BF121.png" width="244" height="219"></a> </p>
<p>If the site has alternate access mapping (AAM) with several web applications (for example, with different authentication), and default or intranet AAM has such short form (in the following example it’s <a href="http://portal/">http://portal/</a>), all instances of the website convert the link this way: </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_6_706BF121.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_thumb_2_706BF121.png" width="458" height="253"></a> </p>
<p>(normally it ends with 404 error)</p>
<p>So SharePoint converts internal links to relative and overrules the conversion for such external links. The links which have the same beginning as default or intranet site URL are converted to relative ones, and then they are interpreted as being located on the default URL:</p>
<p> </p>
<p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_10_706BF121.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_thumb_4_5B7A6EAE.png" width="486" height="139"></a></p>
<p> <a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_8_5B7A6EAE.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/45/image_thumb_3_5B7A6EAE.png" width="481" height="127"></a> </p>
<p>How does SharePoint do the translation? Possible scenarios: <br>a) In real time every time the page is loaded. This means that in the database, the absolute link is still there. <br>b) in the background process (database) (not very probable). <br>c) When the user saves the content.</p>
<p>Shortly after saving, on the back end (in the content database, table AllUserData, field ntext2) the links are already relative: </p>
<p>&lt;div class=ExternalClass97C68512A4184122B15D3302EC759305&gt; <br>&lt;div&gt;&lt;a href=&quot;<a href="http://portal.client.org&quot;/">http://portal.client.org&quot;</a>&gt;<a href="http://portal.client.org/">http://portal.client.org</a>&lt;/a&gt;&lt;/div&gt; <br>&lt;div&gt;&lt;a <strong>href=&quot;/&quot;</strong>&gt;<a href="http://intranet.client.com/">http://intranet.client.com</a>&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;</p>
<p>What happens when you add additional alternative access mappings AFTER you already entered content? The relative URL’s are no more updated, they stay as they were with an old AAM.</p>
<p>So this conversion takes place when the user saves the content (scenario c).</p>
<p>Cheating like trying to put a slash next to short URL in AAM doesn’t work, the extra slash is cleaned on saving.</p>
<p>This behavior was noticed a long time ago and not fixed by now in SP 2007:</p>
<p><a title="http://www.eggheadcafe.com/software/aspnet/30556472/directrelative-links-in.aspx" href="http://www.eggheadcafe.com/software/aspnet/30556472/directrelative-links-in.aspx">http://www.eggheadcafe.com/software/aspnet/30556472/directrelative-links-in.aspx</a></p>
<p><a title="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=57" href="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=57">http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=57</a></p>
<p><a title="http://blog.mastykarz.nl/inconvenient-content-editor-web-part/" href="http://blog.mastykarz.nl/inconvenient-content-editor-web-part/">http://blog.mastykarz.nl/inconvenient-content-editor-web-part/</a></p>
<p>Luckily in SharePoint 2010 this bug is fixed.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Mon, 08 Mar 2010 19:46:00 GMT</pubDate></item><item><title>ASP.Net Exception Reporter</title><link>http://www.orbitone.com/en/blog/archive/2009/11/03/asp-net-exception-reporter.aspx</link><guid>/en/blog/archive/2009/11/03/asp-net-exception-reporter.aspx</guid><description><![CDATA[<div class="ExternalClass9287445424874595B9BC085365830E0C">
<p>Orbit One has developed a unique solution that allows you to track and analyse “unhandled exceptions” in the code of web applications. “Unhandled exceptions” are problems that are not supposed to happen. <br>No system is perfect and environmental changes as well as different types of clients devices (browsers) can result in small issues. <br>You can make a friendly error page that explains the user an issue has happened, and invite him to try his action again. <br>If the problem remains, the user can click on a link and send an email to your support. <br>This email contains the unique reference number of the issue. <br>Your development team can monitor and fix the issues as soon as possible. <br>All issues are centralized in a database, allowing your team to quickly find detailed information about the problem. <br>This unique solution allows you to be efficient and provide high quality web applications. </p>
<p><br><img title="elmahws1.png" alt="elmahws1.png" src="http://aspexceptionreporter.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=90564"> <br></p>
<p>You can find more information, the code, documentation and ready to use installers on <a href="http://aspexceptionreporter.codeplex.com/">Codeplex.</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Tue, 03 Nov 2009 14:26:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Visual Studio/default.aspx">Visual Studio</category></item><item><title>Minimum Dynamics CRM Permissions</title><link>http://www.orbitone.com/en/blog/archive/2009/10/06/minimum-dynamics-crm-permissions.aspx</link><guid>/en/blog/archive/2009/10/06/minimum-dynamics-crm-permissions.aspx</guid><description><![CDATA[<div class="ExternalClass05B68448D8B14C3D884484B6B9BBD418">
<div><font color="#000000">When configuring security roles in Dynamics CRM, a system administrator is situated between </font><a href="http://en.wikipedia.org/wiki/Scylla">Scylla</a><font color="#000000">, allowing users things they shouldn’t do, (and, believe me, the users will do it very soon once permitted) and </font><a href="http://en.wikipedia.org/wiki/Charybdis">Charybdis</a><font color="#000000">, blocking users’ work. And K.I.S.S. advices, like “leave only read permissions just to the entities we use”, or “use only out-of-the-box CRM permissions, or their copies with minimal changes“ may lead the user to one of these beasts. </font></div>
<div><br><font color="#000000">To perform an action within CRM, the user may need various permissions that don’t necessarily link link with each other, and which are located far away from each other in the user interface Security Roles. <br></font></div>
<div><font color="#000000">To choose the right permissions you need an understanding of processes within Dynamics CRM. <br></font></div>
<div><font color="#000000">This post lists the minimal permissions for several important functionalities of Microsoft Dynamics CRM and explains the backgrounds of them. <br></font></div>
<div><font color="#000000">In general it is advised to test each new security role with an “alter ego” user having this role. </font></div>
<div><br><font color="#000000">
<h3>First login</h3><br>- Business Management – User Settings – Write – User<br><img alt="First login" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_01.jpg"> <br>Even if you create a 100% read-only user, let him write his user settings. If a user doesn’t have this permission, on the first login he gets an “Insufficient Permissions” error, because CRM cannot set &amp; save his default entity in UI. <br></font></div>
<div><font color="#000000">Source: </font><a href="http://support.microsoft.com/kb/948311">http://support.microsoft.com/kb/948311</a> <br></div>
<div><font color="#000000">If you still have a good reason for blocking users to save their settings (via Tools - Options), you can block this permission. But then you have to follow these steps for every new user: <br>- assign System Administrator security role to the new user; <br>- log in as the new user; <br>- in Tools – Options slect the default enityt for the user(e.g. Accounts) and save user settings; <br>- log off; <br>- remove System Administrator security role and assign the actual security roleto the user. </font></div>
<div><font color="#000000"><img alt="Set default entity" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_02.jpg"><br> <br></font><font color="#000000">
<h3>Create an Activity</h3><br>Looks simple: Core Records – Activities – Create – User. After it, the user can create an activity. But when saving, the user gets an error message ”The logged-on user does not have the appropriate security permissions…”. First of all, activities require Append To rights (don’t ask me why). Good enough for tasks. <br></font></div>
<div><font color="#000000">Letters, faxes, phone calls and e-mails always have another party: a lead, a contact, a user (to send correspondence to your colleagues), and possibly an account. They have to be appended to other entities, so they need Append rights. And recipients’ entities need Append To. <br></font></div>
<div><font color="#000000">It goes well with all types of activities except appointments. On saving an appointment, the user gets the same error message, followed by “General Failure in Scheduling Engine”. The first error happens because other users will not see the appointment if it is not shared. The second means that all appointments in the CRM have to be checked with the service calendar for availability, even if users don’t use the service calendar directly. <br>Add Core Records – Activity - Share (at least for business unit, not just for user) and Service management – Search Availability permissions  and get it working: <br><img alt="Create an activity" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_03.jpg"><br><img alt="Create an activity" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_04.jpg"><br><img alt="Create an activity" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_05.jpg"></font></div>
<div><br><font color="#000000">
<h3>Track an Activity in CRM</h3><br>Was the above adventure enough to track Outlook entities in CRM? Oops, we get ”The logged-on user does not have the appropriate security permissions…” again. Business Management – Sync to Outlook? Right, but not sufficient. You also need Write access to activities. <br><img alt="Track an activity in CRM" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_06.jpg"><br>Some sources (e.g. </font><a href="http://social.microsoft.com/Forums/en-US/crmdeployment/thread/3451e18a-4afd-4436-b0b9-8ebd94156f67">http://social.microsoft.com/Forums/en-US/crmdeployment/thread/3451e18a-4afd-4436-b0b9-8ebd94156f67</a><font color="#000000">) refer to the necessity of read access to all of these records: account, contact, lead, user, and queue. The test shows that some of these entities, like account and queue, may be blocked, and the user still can track the activity (possibly changed by a rollup). The entities you select for Read &amp; Append To access will be available in user’s Set Regarding dialog. </font></div>
<div><br><font color="#000000">
<h3>Send Mail Merge Letters</h3><br>The obvious selections are: <br>- Business management – Mail Merge (from Outlook) and/or Web Mail Merge (from web interface);<br>- Core Records – Mail Merge Template – Read; <br>- Core Records – [used recipient entities, e.g. Lead, Account, Contact] – Read; <br><img alt="Send mail merge letters" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_07.jpg"><br>Then users have to select the recipients in one of the ways:<br>- Advanced Find: Core Records – Saved View – Read – User, or<br>- Marketing List: Marketing  – Marketing List – Create – User, or – Read – Business Unit, or<br>- Quick Campaign: Marketing  – Create Quick Campaign.<br></font></div>
<div><font color="#000000">They still don’t get Word icon on your workspace? Ah, like </font><a href="http://en.wikipedia.org/wiki/Le_Bourgeois_gentilhomme">monsieur Jourdain</a><font color="#000000"> didn’t realize that his speech was  prose, we don’t realize that mail merge is an activity. Moreover an activity has to be appended to the entities to which we send the letters. So we have to add the following permissions: <br>- Core Records – [used recipient entities] – Append To; <br>- Core Records – Activity – Create, Read, Append – User.<br><img alt="Send mail merge letters" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_08.jpg"></font></div>
<div><br><font color="#000000">
<h3>Create Queck Campaign</h3><br>As well as Mail Merge, Quick Campaign requires permissions to create, write and append activities. Otherwise the Quick Campaign wizard starts looping. </font></div>
<div><br><font color="#000000">
<h3>Create Reports with Report Wizard</h3><br>When a user with custom security role tries to create a new report, he gets Insufficient Permissions error. The security role has all permissions regarding reports, but Report Wizard still doesn’t start. It happens in Microsoft Dynamics CRM 4.0 environments which have been migrated from 3.0. <br><img alt="Create reports with Report Wizard" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_09.jpg"><br>The problem is that the new security role is missing some permission(s) and the same time the user interface is missing a control to change them. You can create a copy of System Administrator role and make the needed security role by removal of redundant permissions. (luckily “all to nothing” change takes just one click) This witching works like a charm. <br></font></div>
<div><font color="#000000">There may be other permission issues solved the same way. (I saw a reference but can’t find it anymore)</font></div>
<div><br><font color="#000000"><strong>Conclusion</strong>: by preference use (copies of) standard CRM security roles rathen than creating security roles from scratch. <br></font></div>
<div><font color="#000000">Another advice you can find in literature and on the internet is not to change any predefined roles in the CRM. <br>Source: </font><a href="http://www.techtalkz.com/microsoft-dynamics-crm/494850-insufficient-permission-report-wizard-crm4-0-a.html">http://www.techtalkz.com/microsoft-dynamics-crm/494850-insufficient-permission-report-wizard-crm4-0-a.html</a></div>
<div> </div>
<div><font color="#000000">
<h3>Use Custom Entities</h3><br>If a new custom entity is created, by default only the system administrator gets access to it. Other users will not see the entity. Even worse, they will not see any related values, lookup fileds in other entities,which use the custom entity. So whenever you create a new custom entity, give permissions to this entity for all security roles which are expected to use it, or any entities related with it. Configure the permissions on Custom Entities tab. </font></div>
<div><font color="#000000">
<h3><img alt="Use custom entities" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_10.jpg"></h3><br><br></font><font color="#000000">
<h3>Run Automatic Workflows</h3><br>An action taken by the user may start a workflow which will create or update other records. For example, creating an opportunity may start a workflow which creates a follow-up task. Whenever you set up such a workflow, control that the user who may perform the original action cal also run workflows and take actions upon entities affected by the workflow. </font></div>
<div><br><font color="#000000">
<h3>Deletion of Records – The Rule and The Exceptions</h3><br>The last but not the least, and it’s different. You can do anything but lay off of deleting blue suede CRM records. <br></font></div>
<div><font color="#000000">Block deletion of records for all security roles except for System Administrator. By deleting records users will not only produce orphan records of other types. If a deleted record (like account) has parental relationship with other records, they all will be deleted. <br></font></div>
<div><font color="#000000">Advise users to deactivate records, or to close activity records instead. One of many advantages is that you get “undo”. You can reactivate lead / customer records. In principle you can reactivate other types as well, but that’s another story.<br></font></div>
<div><font color="#000000">The action to deactivate records has several reincarnations: <br>- Cancel (orders, invoices, cases and campaigns);<br>- Close (activities, opportunities and quotes);<br>- Convert (leads);<br>- Unpublish (workflows, duplicate detection rules and knowledge base articles). <br></font></div>
<div><font color="#000000">And there are still quite some entities which cannot be deactivated: <br>- E-mails (it’s completed only when it’s sent. To delete an unsent draft, you have to enable deletion for all types of activities); <br>- Customer Relationships;<br>- Saved Views (Advanced Find);<br>- System jobs, like import, duplicate detection,…<br>- Reports (only revert to personal); <br>- Competitors;<br>- Products;<br>- Sales Literature;<br>- Quick Campaigns;<br>- Contracts;<br>- Announcements;<br>- Security Roles;<br>- Teams (neither deleted);<br>- Facilities/Equipment;<br>- Subjects.<br></font></div>
<div><font color="#000000">As exception, deletion of some of them may be permitted for few power users. <br><img alt="Deletion of records" src="http://www.orbitone.com/en/blog/Lists/Photos/min_crm_permissions_11.jpg"></font></div>
<div><br><font color="#000000">
<h3>Still don’t know what to do? </h3><br>If this post does not cover your situation, or the advises don’t help, go for an advanced action. <br>- Enable  tracing: </font><a href="http://support.microsoft.com/kb/907490">http://support.microsoft.com/kb/907490</a><br><font color="#000000">- Reproduce the error.<br>- In trace log search by error code and find the permission GUID:<br>Error: Server was unable to process request.<br>Error Number: </font><font color="#008000">0x80040220</font><br><font color="#000000">Error Message: SecLib::CrmCheckPrivilege failed. Returned hr = -2147220960 on UserId: e65023ae-54d1-da11-8e39-00145e3d5192 and PrivilegeId: </font><font color="#ff0000">a8ecac53-09e8-4a13-b598-8d8c87bc3d33</font><br><font color="#000000">- Identify the missing permissions by querying the permission GUID in the CRM database, as advised by Microsoft: </font><a href="http://support.microsoft.com/kb/953962">http://support.microsoft.com/kb/953962</a>.<br><font color="#000000">select Name,  * from PrivilegeBase where PrivilegeId = </font>'<font color="#ff0000">a8ecac53-09e8-4a13-b598-8d8c87bc3d33</font>'</div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Tue, 06 Oct 2009 09:37:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Discover HD videoconferencing</title><link>http://www.orbitone.com/en/blog/archive/2009/10/03/discover-hd-videoconferencing.aspx</link><guid>/en/blog/archive/2009/10/03/discover-hd-videoconferencing.aspx</guid><description><![CDATA[<div class="ExternalClass984850ED77864C5CB96A5C392BA25E5F"><p>Orbit One provides videoconferencing solutions based on LifeSize equipment.    <br>In this PowerPoint presentation we share our tips and guidelines.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/37/image_2_5AF606C0.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/37/image_thumb_5AF606C0.png" width="466" height="299"></a> </p>  <ul>   <li>Why videoconferencing </li>    <li>Types of videoconferencing </li>    <li>LifeSize 200 series models </li>    <li>Multiple monitors </li>    <li>Technical guidelines </li>    <li>Meeting Room adjustments </li>    <li>Additional equipment </li> </ul>  <p><a title="http://www.slideshare.net/orbitone/high-definition-videoconferencing" href="http://www.slideshare.net/orbitone/high-definition-videoconferencing">http://www.slideshare.net/orbitone/high-definition-videoconferencing</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Sat, 03 Oct 2009 21:02:36 GMT</pubDate></item><item><title>SlideShare</title><link>http://www.orbitone.com/en/blog/archive/2009/10/03/slideshare.aspx</link><guid>/en/blog/archive/2009/10/03/slideshare.aspx</guid><description><![CDATA[<div class="ExternalClass07EFBD76E50F449B90E0934F74E7CD2E"><p>Find our PowerPoint presentations on <a title="http://www.slideshare.net/orbitone" href="http://www.slideshare.net/orbitone">http://www.slideshare.net/orbitone</a></p>  <p><img src="http://press.slideshare.net/wp-content/uploads/2008/12/slideshare_550x150.png" width="344" height="94"></p>  <ul>   <li>NUnit vs MSTest </li>    <li>Continuous Integration </li>    <li>Interacting with the Exchange Web Services </li>    <li>ReportViewer Web Server Control </li>    <li>Introduction to Code Reviews </li>    <li>Office Communication Server Integration </li>    <li>Introduction and tips about Microsoft Dynamics CRM </li>    <li>Nintex - SharePoint Workflow </li> </ul>  <p><font color="#434343">More to come!</font></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Sat, 03 Oct 2009 15:30:39 GMT</pubDate></item><item><title>CRM Migration - Migrant’s Notes</title><link>http://www.orbitone.com/en/blog/archive/2009/09/28/crm-migrant’s-notes.aspx</link><guid>/en/blog/archive/2009/09/28/crm-migrant’s-notes.aspx</guid><description><![CDATA[<div class="ExternalClass11F07BBFEE9B4F7BB367857B1D1BB3EA">
<div><span lang="EN-US"><font color="#000000">
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000" size="2">When your customer decides that his legacy CRM system is junk, and he has to move all business data to Microsoft Dynamics CRM with your help, he doesn’t expect “junk in - junk out” effect. </font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000" size="2">What are the critical success factors and the things which need special control during migration of business data to Dynamics CRM? </font></font></font></span><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">See further – most of them are simple but often overlooked. And missing it may lead to stopping the migration, taking “ad hack” solutions, and making the migrated data even more junk than the original ones. </font></font></font></span><p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Good detailed plan</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">As for any activity with many details and dependencies, make detailed checklist of actions to perform and things to control on preprocessing, migration and postprocessing. Use top-to-bottom approach to plan actions: start with the most general and then bring more details to each level. Identify dependencies and put the actions in correct order. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Preparation on staging environment</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Use staging Dynamics CRM environment to prepare the migration. When you (and your customer) are sure that all data are correctly migrated to the staging environment, do the migration to live. Backup &amp; restore of the CRM organization database is not always an option: the restored CRM environment may not start at all. Backup &amp; restore is not applicable at all if staging and live environments (and consequently Active Directory user accounts) are located in different domains. <span> </span></font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Keep the customizations of your staging environment identical to live as much as possible. Do not make parallel customizations in live and staging UI, even if they look identical. After such changes, further export and import of customizations between live and staging may become impossible. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">No orphan records</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">In legacy CRM applications, records may have blank or invalid ID’s of related records. This can crash the software you use (for example, upgrade of ACT! database from an older format before migrating to MS CRM). </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If possible, identify and fix or delete orphan records at early stage. In old ACT! and GoldMine databases you can do it on back end in dBase files. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Permissions</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Migration tools and SDK’s may require that all users, active and historical, have permissions to create, append, append to, share,… If so, before the migration create all active and historical users in Active Directory and CRM and assign System Administrator role to them. After the migration secure CRM by removal of System Administrator role. Then you can assign all records owned by historical users to<span>  </span>actual<span>  </span>users, and only then disable historical user accounts. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control size of fields</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control that all field values fit into size limits of CRM fields. Update size limits in CRM if needed. But keep in mind that updating sizes of standard fields (like address1_line1) may not solve the problem. Instead of size limit error, the import job can produce an unspecified server error. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Long values particularly happen in address fields. Consider splitting the address over several fields (address1_name, address1_line1, address1_line2 and address1_line3,…). </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If you use standard CRM import, you can still save the refused records “on the fly”, split the long values, and repeat the import for refused records.<span>  </span></font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"><span><img alt="Handling import errors" src="http://www.orbitone.com/en/blog/Lists/Photos/crmmigrate1.jpg"></span></font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span><font color="#000000" size="2" face="Arial"></font></span><span lang="EN-US"></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">No special characters in field values</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">(like line end characters with ASCII codes 10 and 13) </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Get rid of them before the import. Otherwise, sooner or later, they will make trouble. For example, if the data are imported from CSV files via standard CRM import, line breaks can break a record line into several, even if text qualifiers are used. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Notepad++ is a good tool to identify them in text files (e. g. CSV).</font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control business required values</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control that all business required fields are 100% populated. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control unexpected intelligence of your tools</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If you export data from Excel , or use Excel to process the data, don’t be surprised with telephone numbers like 8.61E+12 or -166.0405405, while the original numbers are 8612345678910 and +32-9/222-99-99. The first one is a rounded “approximate” phone number in scientific format (8.61 x 10<sup>12</sup>), and the second is a “calculated” phone number (have you ever dialed an approximate negative fractional phone?). Excel doesn’t have cell format for telephone numbers and treats such input as a big numeral in the first case, or as a valid formula in the second case. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Solution: convert such values to text by Excel function TEXT.</font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Person’s names</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Some systems don’t explicitly split contacts’ given names and family names. Foresee the rules which defines given names and family names in Dynamics CRM as adequate as possible. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Take into account that: </font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">both given names and family names may be multiple; (e. g. Juan Luis Gonzalez Fernandez) </span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">family names may have prepositions, sometimes multiple (e. g. Van Den Bogerd or de la Croix), which have to stay with the names;</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">names may be accompanied by salutations, titles, military ranks<span>  </span>in various languages, sometimes multiple, (e. g. Prof. Dr. Ing. Von Hochenbalken) which have to be separated and saved to a different field; </span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">delimiting of the above parts may be inconsistent (space, dot with space, just dot);</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">even if you would have a comprehensive dictionary of given names, in some cultures it’s different to distinct family names from given names; (for example Roger Vincent, Laurence Olivier, Marcu Matei)</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">the field lastname always has to get a non-empty value, since it is business required. </span></font></font></font></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">A possible action plan is:</font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">prepare the dictionary of “normalized” prepositions and the dictionary of “normalized” titles. </span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">prepare the script with the functions which identify and split the full name to its parts based on the most typical name format (e. g. [Titles ]Firstname Lastname). This is possible even in Excel with usage of VBA. </span></font></font></font></div></li></ul>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Correctly treat <span> </span>“All in one” legacy contact records</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Many popular contact management applications (Microsoft Outlook among them) use single record for account and contact. Other systems (like ACT! by Sage) allow limited number of multiple contact persons in one database record. The data model of Dynamics CRM is different, it uses single record per account and single record per contact. If you migrate the data from such sources to the CRM, you have to split it to two Dynamics CRM records and later to assign Parent Customer and Primary Contact relationships between them. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">For the original records create unique ID’s and migrate these ID’s to both account and contact records. If the data come from multiple sources, indicate the data source in the ID. Upon importing <span> </span>accounts and <span> </span>contacts, match them using unique ID’s. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font color="#000000" size="2" face="Arial">One account may have more than one contact. If you want to eliminate duplicate accounts, at the stage of preprocessing define primary records for obsolete accounts (if the data of accounts are identical, or you have no preferences for the primary account, you can do it automatically in Excel using formulas), and then map contacts to primary accounts. Such updates of CRM records and many other handy thongs may be done by the <a href="http://mscrmbulkupdatetool.codeplex.com/">CRM Bulk Update and Export tool</a></font></span><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"> available on Codeplex.</font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Complete this mapping before the users start manual hunting for duplicates. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Find the best balance for duplicate detection and merge</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">The right moment to merge duplicates (preprocessing, migration, or postprocessing) depends on how clean the data are. The customer may have an idea that source A is cleaner than source B. If so, import source A first and non-duplicate data from source B next. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">In principle, the source B can be imported first, followed by source A and update of the data with available values from the source A. Be careful with updates “per field” (like “take the value form better source if not blank, otherwise take the value from the worse source”). For example, a record from the worse source may have data in two address lines (address1_line1 and address1_line2), while the corresponding record form the better source has only address1_line1. As a result, this rule may give a mixture of lines taken from two different addresses. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If after all the customer realizes that he needs company name from one source, e-mail address from another, and VAT code from the third (like a young lady form a classical comedy who searched a groom with nose of Mr. A., ears of Mr. B, and incomes of Mr. C.). If so, either let the customer to clean the data before the migration, or migrate all data, double and triple, to the CRM. CRM allows you to identify duplicates and to merge two records into one with specific selection of sections, fields from each merged records, or selection of the whole record. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><img alt="Merge Duplicates" src="http://www.orbitone.com/en/blog/Lists/Photos/crmmigrate2.jpg"></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span><font color="#000000" size="2" face="Arial"></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span><font color="#000000" size="2" face="Arial"></font></span><span lang="EN-US"></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"><img alt="Merge Duplicates" src="http://www.orbitone.com/en/blog/Lists/Photos/crmmigrate3.jpg"></font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Out-of-the-box duplicate detection in CRM is more than basic, but you can enhance it by using calculated match names. Normalize account or contact names by: </font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">converting them to lower case and trimming;</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">converting letters with diacritics to standard Latin letters (e.g. Maïté to maite); </span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">removal of texts inside parentheses, like alternative spellings or comments;</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">removal of punctuation marks and special characters (at this stage better to replace punctuation marks with spaces, since they delimit single words); </span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">removal of common abbreviations, like English Ltd, German GmbH, or French SPRL;</span></font></font></font></div></li>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">removal of spaces.</span></font></font></font></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">The order of the above actions is important. </font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font color="#000000" size="2" face="Arial">This matching method was compared with six more sophisticated metrics used to find duplicates (<a href="http://en.wikipedia.org/wiki/Jaro-Winkler_distance">Jaro-Winkler</a></font><font color="#000000" size="2" face="Arial">, </font><font color="#000000" size="2" face="Arial"><a href="http://en.wikipedia.org/wiki/Jaro-Winkler_distance">Jaro</a></font><font color="#000000" size="2" face="Arial">, <a href="http://en.wikipedia.org/wiki/Levenshtein_distance">Levenstein</a></font><font color="#000000" size="2" face="Arial">, Monge-Elkan, <a href="http://en.wikipedia.org/wiki/Needleman-Wunsch_algorithm">Needleman-Wunch</a></font><font color="#000000" size="2" face="Arial">, <a href="http://en.wikipedia.org/wiki/Smith-Waterman_algorithm">Smith-Waterman-Gotoh</a></font><font face="Arial"><font color="#000000"><font size="2">) on the migrated business data. In 95% percent of cases it gave the same or better matches as any other method, and the results, even wrong, were much more obvious for the users. The failures of this method normally had words in different order, like “University of Antwerpen” vs. “Antwerpen University”.</font></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font color="#000000" size="2" face="Arial">A <a href="http://www.orbitone.com/en/blog/archive/2009/09/08/improved-duplicate-detection-in-dynamics-crm.aspx">match name plugin</a></font><font color="#000000" size="2" face="Arial"> used for duplicate detection can be found on </font><a href="http://mscrmplugins.codeplex.com/">Codeplex</a><font face="Arial"><font color="#000000"><font size="2">. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">International challenges</font></font></font></span></h2>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control that the data prepared to import comply with your language and regional settings: </font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">date formats: dd-MM-yyyy vs. MM-dd-yyyy. </font></font></font></span></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">For specific types of values in activity records third party migration tools accept only dates in English (US) format. This can make problems if in client's system the regional settings of Windows or CRM are different. If it happens, change system and CRM data formats to English US, and convert all dates in input data to this format. </font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">letters with diacritics and non-Latin letters. </span></font></font></font></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Control how your migration tool treats these characters. </font></font></font></span><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If you use bulk update tools, verify that their input data have Unicode format. </font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">use of languages and geographical names. </span></font></font></font></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"></span></font></font></font><span lang="EN-US"><font color="#000000" size="2" face="Arial">In principle each record has to be in the language you want to communicate to the customer. But this makes use names of multilingual countries (like Switzerland or Belgium) inconsistent. As a result, validation scripts for country specific formats (like ones for telephone numbers) become more difficult. Instead, you can normalize country names to standard English names. Keep in mind that even if you use <a href="http://en.wikipedia.org/wiki/ISO_3166-1">ISO standard</a></font></span><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">, it’s not always a perfect reference. Say, the name “Taiwan, Province of China” advised by ISO 3166-1 is an insult for Taiwanese people. </font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Dynamics CRM Import. </font></font></font></span></h2>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><font face="Arial"><font color="#000000"><font size="2"><i><span style="color:black" lang="EN-US">If speech synthesis is comparable with getting toothpaste out of a tube, speech recognition is like trying to get the toothpaste back in. (</span></i><span lang="EN-US">Dr. J. Holmes, expert in speech processing)</span></font></font></font></p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"></font></font></font></span> </p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">The same is absolutely valid for Dynamics CRM export  and import. </font></font></font></span></p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"></font></font></font></span> </p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Nevertheless, out-of-the-box import can be used to upload contacts from Outlook contact lists exported to Excel. Users can import the data to the CRM by building a data map between the data table in CSV format and the CRM entity attributes, and then by running an import job. Of course, you have to control that</font></font></font></span></p>
<ul>
<li>
<div style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">all records being imported have all business required values;</font></font></font></span></div></li>
<li>
<div style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">there are no duplicate records within the import list and between the import list and the CRM (active and inactive);</font></font></font></span></div></li>
<li>
<div style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">the CSV files have to be really COMMA-separated, since other characters (tab or semicolon) are not accepted in sample files used in manual mapping. </font></font></font></span></div></li></ul>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"></font></font></font></span> </p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">And even after it the import will not help with lookup and picklist attributes, because the export has their values, while the import requires their ID's (GUID's for lookup values, and numeric ID's for picklist values). </font></font></font></span></p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"></font></font></font></span> </p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font color="#000000" size="2" face="Arial">There is still a way to <a href="http://blog.sonomapartners.com/2008/03/using-the-nativ.html">import the entities with lookup and picklist attributes</a>. (thanks to CRM guru Jim Steiger</font><font face="Arial"><font color="#000000"><font size="2">) Be careful when following it, since any deviation will stop the process. </font></font></font></span></p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2"></font></font></font></span> </p>
<p style="line-height:normal;margin:0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000" size="2"><strong>Good log</strong></font></font></span></p>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">If you run scripts which change users’ data (for example, normalizes telephone numbers), foresee that the script informs your customers about:</font></font></font></span></p>
<ul>
<li>
<div style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"></span><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">all changes done in the system (so that the customer can handle all information he may miss after the cleanup, like the six more phone numbers, or a comment in the same field) </span></font></font></font></div></li></ul>
<p style="text-indent:-18pt;margin:0cm 0cm 0pt 72pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"><span>o<span style="line-height:normal;font-variant:normal;font-style:normal;font-weight:normal">   </span></span></span><span lang="EN-US">what type of record</span></font></font></font></p>
<p style="text-indent:-18pt;margin:0cm 0cm 0pt 72pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"><span>o<span style="line-height:normal;font-variant:normal;font-style:normal;font-weight:normal">   </span></span></span><span lang="EN-US">what record</span></font></font></font></p>
<p style="text-indent:-18pt;margin:0cm 0cm 0pt 72pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"><span>o<span style="line-height:normal;font-variant:normal;font-style:normal;font-weight:normal">   </span></span></span><span lang="EN-US">old value</span></font></font></font></p>
<p style="text-indent:-18pt;margin:0cm 0cm 0pt 72pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US"><span>o<span style="line-height:normal;font-variant:normal;font-style:normal;font-weight:normal">   </span></span></span><span lang="EN-US">new value</span></font></font></font></p>
<ul>
<li>
<div style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">all suspicious data in fields which are left unchanged, </span></font></font></font></div></li>
<li>
<div style="text-indent:-18pt;margin:0cm 0cm 0pt 36pt" class="MsoListParagraphCxSpMiddle"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">all errors happened during processing, with specific error messages,</span></font></font></font></div></li>
<li>
<div style="text-indent:-18pt;margin:0cm 0cm 10pt 36pt" class="MsoListParagraphCxSpLast"><font face="Arial"><font color="#000000"><font size="2"><span lang="EN-US">nothing else (like changing assignment of the old value back to the field).</span></font></font></font></div></li></ul>
<p style="margin:0cm 0cm 10pt" class="MsoNormal"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Since log may get long, foresee easy conversion of the log to spreadsheet or database, which will help to filter by specific type of issue, group records by owner, etc.</font></font></font></span></p>
<h2 style="margin:10pt 0cm 0pt"><span lang="EN-US"><font face="Arial"><font color="#000000"><font size="2">Good luck!</font></font></font></span></h2></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Viktor Bardadym</dc:creator><pubDate>Mon, 28 Sep 2009 17:05:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Creating custom commands for the Composite Application library(Prism v2)</title><link>http://www.orbitone.com/en/blog/archive/2009/09/25/creating-custom-commands-for-the-composite-application-libraryprism-v2-1.aspx</link><guid>/en/blog/archive/2009/09/25/creating-custom-commands-for-the-composite-application-libraryprism-v2-1.aspx</guid><description><![CDATA[<div class="ExternalClassECDDABB8CDD44A2C99833A55EFCAA8C4"><p>The <a href="http://msdn.microsoft.com/en-us/library/dd458809.aspx" target="_blank">Composite Application Library</a> helps architects and developers create composite Windows Presentation Foundation (WPF) and Silverlight applications. Composite applications are composed of discrete, functionally complete, pieces that work together to create a single, integrated user interface. The Composite Application Library accelerates the development of composite applications using proven design patterns to help you build these types of applications. </p>  <p>Commands are a way to handle user interface (UI) actions. They are a loosely coupled way to bind the UI to the logic that performs the action. </p>  <p>When building composite applications, presentation design patterns such as Model-View-Presenter (MVP) and Model-View-Controller (MVC) are often used to separate the UI logic from the UI layout and presentation. When implementing these patterns with Windows Presentation Foundation (WPF), the presenter or controller handles commands but lives outside the <a href="http://msdn.microsoft.com/en-us/library/ms753391.aspx">logical tree</a>. WPF-routed commands deliver command messages through UI elements in the tree, but the elements outside the tree will not receive these messages because they only propagate events up or down from the focused element or an explicitly stated target element. Additionally, the WPF-routed commands require a command handler in the code behind.</p>  <p>The Composite Application Library introduces two new commands that can be routed outside the boundaries of the logical tree and that do not require handling logic in the code behind. The commands are custom implementations of the <b>ICommand</b> interface defined by WPF, and they implement their own routing mechanism to get the command messages delivered to objects outside of the logical tree. The commands in the Composite Application Library include <strong><a href="http://msdn.microsoft.com/en-us/library/cc707894.aspx" target="_blank">DelegateCommand</a></strong> and <b>CompositeCommand</b>.</p>  <p>The command support in WPF is at this moment rather limited. Very few of the default controls support binding to a command. One of the controls that has a Command dependency property is the <strong>Button</strong>. </p>  <div id="codeSnippetWrapper" class="csharpcode-wrapper">   <br></div>  <p>If we want to execute some code on button press and we want to leverage the commanding support, we need a few things in the view model and in the XAML view:</p>  <p>1. a property for the command</p>  <div id="codeSnippetWrapper" class="csharpcode-wrapper">   <div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:96.81%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;height:38px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">     <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">public</span> ICommand ClickCommand {get; set;} <br></pre>

    <br></div>
</div>

<p>2. Initialization code for the command (eventually in the view model’s constructor)</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100.14%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;height:70px;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">public</span> MyConstructor()<br>{<br>  ClickCommand = <span style="color:#0000ff">new</span> DelegateCommand&lt;<span style="color:#0000ff">object</span>&gt;(OnClickCommand);<br>}<br></pre>

  <br></div>

<p>3. Command handler:</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> OnClickCommand(<span style="color:#0000ff">object</span> argument)<br>{  <span style="color:#008000">/**/</span> }<br></pre>

  <br></div>

<p>4. and some XAML code in the view that guarantees the command will be executed on button click:</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">&lt;</span><span style="color:#800000">Button</span> <span style="color:#ff0000">Height</span><span style="color:#0000ff">=&quot;24&quot;</span> <span style="color:#ff0000">x:Name</span><span style="color:#0000ff">=&quot;MyButton&quot;</span>  <br>        <span style="color:#ff0000">Command</span>=”{<span style="color:#ff0000">Binding</span> <span style="color:#ff0000">ClickCommand</span>}”<span style="color:#0000ff">/&gt;</span><br></pre>

  <br></div>

<p>This is straightforward if you are familiar with the M-V-VM pattern.</p>

<p>Let’s consider another scenario where we need to execute a command for the lost focus event of a TextBox. To be able to solve this in the same manner as above we would need to use the Command dependency property of the TextBox and bind a DelegateCommand to it. </p>

<p>Unfortunately, the TextBox does not accept commands by default for the lost focus event.</p>

<p>A solution to the problem is to use the <a href="http://msdn.microsoft.com/en-us/library/ms749011.aspx" target="_blank">attached properties</a> feature of WPF.</p>

<p>The goal is to create an attached property for the TextBox. The attached property’s name will also be <strong>Command</strong> and the command bound to it will handle the PreviewLostKeyboardFocus event. After we have this, we will be able to write the following code in the XAML view:</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">&lt;</span><span style="color:#800000">UserControl</span> <span style="color:#ff0000">xmlns:Commands</span>= <span style="color:#0000ff">&quot;clr-namespace:{namespace containing the attached command class}&quot;</span><span style="color:#0000ff">&gt;</span><br>   <span style="color:#0000ff">&lt;</span><span style="color:#800000">TextBox</span> <span style="color:#ff0000">Commands:PreviewLostKeyboardFocus</span>.<span style="color:#ff0000">Command</span><span style="color:#0000ff">=&quot;{Binding MyTextBoxPreviewLostKeyboardFocus}&quot;</span><span style="color:#0000ff">/&gt;</span><br><span style="color:#0000ff">&lt;/</span><span style="color:#800000">UserControl</span><span style="color:#0000ff">&gt;</span></pre>

  <br></div>

<p>The code in the view model is identical as for the Button scenario (but with suggestive variable and method names of course):</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">public</span> ICommand LostFocusCommand {get; set;}<br><span style="color:#0000ff">public</span> MyConstructor() <br>{<br>   ClickCommand = <span style="color:#0000ff">new</span> DelegateCommand&lt;<span style="color:#0000ff">object</span>&gt;(OnLostFocusCommand); <br>} <br><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> OnLostFocusCommand(<span style="color:#0000ff">object</span> argument)<br>{  …  } </pre>

  <br></div>

<pre class="csharpcode"><span class="kwrd"></span><strong>Now let’s dive into the implementation of the attached CommandProperty.</strong></pre>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;height:800px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> PreviewLostKeyboardFocus<br>    {<br>        <span style="color:#008000">/*Dependency property for the Command attached property. </span><br><span style="color:#008000">         For the Command property to be bindable it has to be dependency property.*/</span><br>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">readonly</span> DependencyProperty CommandProperty = DependencyProperty.RegisterAttached(<br>                <span style="color:#006080">&quot;Command&quot;</span>,<br>                <span style="color:#0000ff">typeof</span> (ICommand),<br>                <span style="color:#0000ff">typeof</span> (PreviewLostKeyboardFocus),<br>                <span style="color:#0000ff">new</span> PropertyMetadata(OnSetCommandCallback));<br><br>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">readonly</span> DependencyProperty LostFocusCommandBehaviorProperty =<br>                DependencyProperty.RegisterAttached(<span style="color:#006080">&quot;LostFocusCommandBehavior&quot;</span>,<br>                                                    <span style="color:#0000ff">typeof</span> (TextBoxLostFocusCommandBehavior),<br>                                                    <span style="color:#0000ff">typeof</span> (PreviewLostKeyboardFocus),<br>                                                    <span style="color:#0000ff">null</span>);<br><br>        <span style="color:#008000">/*Acessor methods for the Command attached property*/</span><br>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">void</span> SetCommand(TextBox textBox, ICommand command)<br>        {<br>            textBox.SetValue(CommandProperty, command);<br>        }<br><br>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">static</span> ICommand GetCommand(TextBox textBox)<br>        {<br>            <span style="color:#0000ff">return</span> textBox.GetValue(CommandProperty) <span style="color:#0000ff">as</span> ICommand;<br>        }<br>       <br>        <span style="color:#008000">/*Callback executed when the Command property  is databound*/</span><br>        <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> <span style="color:#0000ff">void</span> OnSetCommandCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)<br>        {<br>            var textBox = d <span style="color:#0000ff">as</span> TextBox;<br>            <span style="color:#0000ff">if</span> (textBox != <span style="color:#0000ff">null</span>)<br>            {<br>                TextBoxLostFocusCommandBehavior behavior = GetOrCreateBehavior(textBox,  e.NewValue <span style="color:#0000ff">as</span> ICommand);<br>            }<br>        }<br><br>        <span style="color:#008000">/*Creates the command behavior if it does not already exist*/</span><br>        <span style="color:#0000ff">private</span> <span style="color:#0000ff">static</span> TextBoxLostFocusCommandBehavior GetOrCreateBehavior(TextBox textBox, ICommand command)<br>        {<br>            var behavior = textBox.GetValue(LostFocusCommandBehaviorProperty) <span style="color:#0000ff">as</span> TextBoxLostFocusCommandBehavior;<br>            <span style="color:#0000ff">if</span> (behavior == <span style="color:#0000ff">null</span>)<br>            {<br>                behavior = <span style="color:#0000ff">new</span> TextBoxLostFocusCommandBehavior(textBox, command);<br>                textBox.SetValue(LostFocusCommandBehaviorProperty, behavior);<br>            }<br>            <span style="color:#0000ff">return</span> behavior;<br>        }<br><br>        <span style="color:#cc6633">#region</span> Nested type: TextBoxLostFocusCommandBehavior<br><br>        <span style="color:#008000">/*Wrapper for the PreviewLostKeyboardFocus  event*/</span><br>        <span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> TextBoxLostFocusCommandBehavior : CommandBehaviorBase&lt;TextBox&gt;<br>        {<br>            <span style="color:#0000ff">public</span> TextBoxLostFocusCommandBehavior(TextBox textBox, ICommand command) : <span style="color:#0000ff">base</span>(textBox)<br>            {<br>                Command = command;<br>                textBox.PreviewLostKeyboardFocus += (sender, args) =&gt; Command.Execute(<span style="color:#0000ff">new</span> PreviewLostKeyboardFocusCommandArgs<br>                                                                                          {<br>                                                                                                  Sender = (TextBox) sender,<br>                                                                                                  KeyboardFocusChangedEventArgs = args<br>                                                                                          }); <br>            }<br>        }<br><br>        <span style="color:#cc6633">#endregion</span><br>    }</pre>

  <br></div>

<p>As it’s obvious from the event wrapper class, the event forwards the sender and the event arguments to the command. So the command’s handler has access to the same data as the event itself. the <em>P<span class="kwrd"></span>r<span class="kwrd"></span>e<span class="kwrd"></span>v<span class="kwrd"></span>i<span class="kwrd"></span>e<span class="kwrd"></span>w<span class="kwrd"></span>L<span class="kwrd"></span>o<span class="kwrd"></span>s<span class="kwrd"></span>t<span class="kwrd"></span>K<span class="kwrd"></span>e<span class="kwrd"></span>y<span class="kwrd"></span>b<span class="kwrd"></span>o<span class="kwrd"></span>a<span class="kwrd"></span>r<span class="kwrd"></span>d<span class="kwrd"></span>F<span class="kwrd"></span>o<span class="kwrd"></span>c<span class="kwrd"></span>u<span class="kwrd"></span>s<span class="kwrd"></span>C<span class="kwrd"></span>o<span class="kwrd"></span>m<span class="kwrd"></span>m<span class="kwrd"></span>a<span class="kwrd"></span>n<span class="kwrd"></span>d<span class="kwrd"></span>A<span class="kwrd"></span>r<span class="kwrd"></span>g<span class="kwrd"></span>s</em>  class is a custom class used to transfer parameters:</p>

<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:'Courier New', courier, monospace;direction:ltr;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px" id="codeSnippetWrapper">
  <pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id="codeSnippet"><span style="color:#0000ff">public</span> <span style="color:#0000ff">class</span> PreviewLostKeyboardFocusCommandArgs<br>{<br>    <span style="color:#0000ff">public</span> TextBox Sender { get; set; }<br>    <span style="color:#0000ff">public</span> KeyboardFocusChangedEventArgs KeyboardFocusChangedEventArgs { get; set; }} </pre>

  <br></div>

<p>The P<span class="kwrd"></span>r<span class="kwrd"></span>e<span class="kwrd"></span>v<span class="kwrd"></span>i<span class="kwrd"></span>e<span class="kwrd"></span>w<span class="kwrd"></span>L<span class="kwrd"></span>o<span class="kwrd"></span>s<span class="kwrd"></span>t<span class="kwrd"></span>K<span class="kwrd"></span>e<span class="kwrd"></span>y<span class="kwrd"></span>b<span class="kwrd"></span>o<span class="kwrd"></span>a<span class="kwrd"></span>r<span class="kwrd"></span>d<span class="kwrd"></span>F<span class="kwrd"></span>o<span class="kwrd"></span>c<span class="kwrd"></span>u<span class="kwrd"></span>s class might seem quite verbose, but this is the standard WPF way of defining attached properties that can take part in the data binding binding process.</p>

<p>Most of the code is standard and can be extracted in a R# template. The template can be downloaded <a href="http://www.orbitone.com/en/blog/documents/attachedCommand.zip" target="_blank">here</a>. </p>

<p>That’s it! </p>

<p>With just a little coding effort we can have a clean view and be able to wrap WPF event in Commands and handle the view events in the view model or controller(depending of the design approach). </p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Voicu Matei</dc:creator><pubDate>Fri, 25 Sep 2009 13:54:37 GMT</pubDate></item><item><title>Format and validate phonenumbers in Dynamics CRM 4.0 Plugin</title><link>http://www.orbitone.com/en/blog/archive/2009/09/21/format-and-validate-phonenumbers-in-dynamics-crm-4-0-plugin.aspx</link><guid>/en/blog/archive/2009/09/21/format-and-validate-phonenumbers-in-dynamics-crm-4-0-plugin.aspx</guid><description><![CDATA[<div class="ExternalClass20689B475E0C4C7C9E88651270C017EF"><p>When importing data in Dynamics CRM 4.0 there is no client side code triggered, so to make sure you get phonenumbers (or anything else for that matter) in a clean format, you might want to consider creating a plugin that runs server side and generates an import failure to let the customer know some data is not valid in his imports.</p>  <p>This way the user knows when something went wrong and the correct data will still be imported. </p>  <p>To make this plugin work there is the issue of the country prefixes and areacodes that exist. Therefore it is necessary to create two new entities: Country and AreaCode.</p>  <p>The Country entity needs to contains the telephone prefix of that country (eg: belgium = 32, Netherlands = 33 …)</p>  <p>The AreaCode is contains a link to the country entity and contains the phone areacode. (eg: 9 for Ghent, Belgium …)</p>  <p>Ones this data is in CRM we can use it in our plugin through the webservice. </p>  <p>In the end the phonenumbers will be formatted in an outlook compatible format. </p>  <p>eg: +32 (9) 265.74.20</p>  <p>When using the installer inside the project on CodePlex the plugin will be registered for the create and update messages for lead, account and contact.</p>  <p> </p>  <p>You can find the plugin on CodePlex in our <a href="http://mscrmplugins.codeplex.com/" target="_blank">Dynamics CRM 4.0 Plugins</a> project</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Mon, 21 Sep 2009 14:50:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Improved Duplicate Detection in Dynamics CRM</title><link>http://www.orbitone.com/en/blog/archive/2009/09/08/improved-duplicate-detection-in-dynamics-crm.aspx</link><guid>/en/blog/archive/2009/09/08/improved-duplicate-detection-in-dynamics-crm.aspx</guid><description><![CDATA[<div class="ExternalClass8DC1031557B14BD99C71AC1D60AC9DCD"><h3>Why do I need it?</h3>  <p>We've noticed the CRM Duplicate detection doesn't allow for much creativity, you can only create Duplicate Detection Rules with the following condition: </p>  <ul>   <li>full string match </li>    <li>begins with (number of characters) </li>    <li>ends with (number of characters) </li> </ul>  <p>   <br>The problem with this is that people or companies aren't always entered in the same format. For instance if you look at our company name we would create the account with the name &quot;Orbit One&quot;. Other people might write &quot;Orbit One BVBA&quot; (the bvba part is a <a href="http://en.wikipedia.org/wiki/Types_of_business_entity">type of business entity</a>)     <br>There are some other examples that come to mind:     <br>&quot;Dell NV&quot; vs &quot;Dell&quot;     <br>&quot;HP Belgium&quot; vs &quot;HP&quot;     <br>&quot;Gaëtan&quot; vs &quot;Gaetan&quot;     <br>&quot;François&quot; vs &quot;Francois&quot;     <br>These exceptions will never be caught by the default CRM Duplicate detection.</p>  <h3>How can I fix this?</h3>  <p>We added the following attributes and filled the with data: </p>  <ul>   <li>on account =&gt; new_matchname (contains the accounts name) </li>    <li>on contact =&gt; new_matchname (contains the contacts first + lastname) </li>    <li>on lead =&gt; new_matchcontact (contains the leads first+ lastname) </li>    <li>on lead =&gt; new_matchcompany (contains the lead company name) </li> </ul>  <p>The fields are filled with a normalized name. The process is: </p>  <ul>   <li>to lower case and trim. </li>    <li>replace special characters (except parenthesis, a-z, 0-9, special characters like éèàç ..., and spaces) with empty string. </li>    <li>remove everything between the parentheses eg: &quot;HP (was Compaq)&quot; becomes &quot;HP&quot; </li>    <li>remove suffixes and prefixes that are <a href="http://en.wikipedia.org/wiki/Types_of_business_entity">type of business entity</a> </li>    <li>remove all spaces </li>    <li>replace special characters (eg: é &gt; e, à =&gt; a, ç =&gt; c, ñ =&gt; n, ...) </li> </ul>  <p>Next there need to be some new duplicate detection rules. </p>  <ul>   <li>full string match on new_matchname for contact </li>    <li>full string match on new_matchname for account </li>    <li>full string match on new_matchcontact for lead (add companyname if needed in your specific cases) </li> </ul>  <p>The current implemented <a href="http://en.wikipedia.org/wiki/Types_of_business_entity">type of business entity</a> which will be stripped are: </p>  <ul>   <li>nv </li>    <li>sa </li>    <li>vzw </li>    <li>bvba </li>    <li>cvba </li>    <li>sarl </li>    <li>sprl </li>    <li>scrl </li>    <li>nvsa </li>    <li>bv </li>    <li>llc </li>    <li>gmbh </li>    <li>ltd </li>    <li>ag </li>    <li>kt </li>    <li>og </li>    <li>vof </li>    <li>cvoa </li>    <li>commva </li>    <li>commv </li>    <li>ebvba </li>    <li>ez </li>    <li>belgium </li> </ul>  <h3>Duplicate Detection Jobs</h3>  <p>In CRM you can add duplicate detection jobs by going to Settings &gt; Data Management &gt; Duplicate detection jobs</p> <a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/29/image_2_63C3EBA0.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/29/image_thumb_63C3EBA0.png" width="459" height="227"></a>   <p>Create a new Duplicate detection job for for instance accounts. Make sure you filter on only active records. When you merge a duplicate record the record that isn’t the master record will be placed on inactive. So if you forget this filter you’ll keep getting the same duplicates ;-)</p>  <p>Once the job ran, you can see the duplicates entries.</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/29/image_4_63C3EBA0.png"><img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/29/image_thumb_1_63C3EBA0.png" width="609" height="379"></a> </p>  <p>What we think is another major pain in the a$$ is that you can only merge 2 records at a time. So not really in bulk… Maybe we will come up with a solution for this later :-)</p>  <p> </p>  <p>You can find the <a href="http://mscrmplugins.codeplex.com" target="_blank">Matchname plugin on CodePlex</a>. There is an installer include so that you don’t need to worry about the plugin registration, creating the steps, …. More on this on CodePlex.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Tue, 08 Sep 2009 17:32:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Windows 7 RC Image Deployment</title><link>http://www.orbitone.com/en/blog/archive/2009/06/18/windows-7-rc-image-deployment.aspx</link><guid>/en/blog/archive/2009/06/18/windows-7-rc-image-deployment.aspx</guid><description><![CDATA[<div class="ExternalClassA2D16ADD7F0E44A2953EB2A3D26181DF">
<div class="ExternalClass41632E3E457B48DA835E6C4EB588C9FD"><img style="width:157px;height:148px" height="228" alt="" src="http://www.orbitone.com/en/blog/Lists/Photos/_w/windows_7_logo_jpg.jpg" width="206"></div>
<div class="ExternalClass41632E3E457B48DA835E6C4EB588C9FD"><span lang="EN-GB" style="font-size:22pt;line-height:150%;font-family:'HelveticaNeueLT Std Med Cn','sans-serif'">Windows 7 RC Image Deployment</span></div>
<div class="ExternalClass41632E3E457B48DA835E6C4EB588C9FD"><span lang="EN-GB" style="font-size:22pt;line-height:150%;font-family:'HelveticaNeueLT Std Med Cn','sans-serif'"></span> </div>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">The document attached to this blog provides instructions for implementing a basic image-based deployment of Microsoft Windows 7 RC0 operating system.</font></span></p>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">Migrating an operating system is a major project that requires careful planning and guidance. To ease the process, Microsoft has provided a number of tools for automating Windows 7 deployments including the Windows Automated Installation Kit (WAIK). For Windows 7 Microsoft has released the Beta version of WAIK version 2.0. </font></span></p>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">There are many guides available on the internet, but we felt they all miss some steps. Therefore we decided to share our internal documentation.</font></span></p>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">The process for our deployment scenario includes</font></span></p>
<div class="ExternalClass41632E3E457B48DA835E6C4EB588C9FD">
<ul>
<li>
<div class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"></span><span lang="EN-GB" style="line-height:150%"><font size="2">Prepare an USB stick with &quot;Windows PE&quot;</font></span></div></li>
<li>
<div class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">Prepare a master installation</font></span></div></li>
<li>
<div class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">Capture an install image</font></span></div></li>
<li>
<div class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"><font size="2">Manually deploy an image on a single machine with ImageX</font></span></div></li></ul></div>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"></span><span lang="EN-GB" style="line-height:150%"><font size="2">The document attached does not cover automated deployment of images on multiple computers using tools as ADS.</font></span></p>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"> <a href="http://www.orbitone.com/en/blog/documents/Windows%207%20Deployment.pdf">Download documentation</a></span></p>
<p class="MsoNormal" style="margin:0cm 0cm 6pt"><span lang="EN-GB" style="line-height:150%"></span> </p>
<div><span lang="EN-GB" style="font-size:22pt;line-height:150%;font-family:'HelveticaNeueLT Std Med Cn','sans-serif'"></span> </div>
<div><span lang="EN-GB" style="font-size:22pt;line-height:150%;font-family:'HelveticaNeueLT Std Med Cn','sans-serif'"></span> </div>
<div> </div>
<div> </div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Arne Verstraete</dc:creator><pubDate>Tue, 08 Sep 2009 13:23:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Windows 7/default.aspx">Windows 7</category></item><item><title>Synchronizing activities from Dynamics CRM 4.0 to Outlook</title><link>http://www.orbitone.com/en/blog/archive/2009/09/08/synchronizing-activities-from-dynamics-crm-4-0-to-outlook.aspx</link><guid>/en/blog/archive/2009/09/08/synchronizing-activities-from-dynamics-crm-4-0-to-outlook.aspx</guid><description><![CDATA[<div class="ExternalClass3A25CEC3F2D74BF6BE8F8B1D56010314"><p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D">The other day we did some research for a client into the synchronization behavior of Dynamics CRM for Outlook specifically when it comes to activities.</p>  <p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D">Syncing activities like: Tasks, Appointments, Phone Calls and Letters to Outlook is a powerful option in Dynamics CRM but there can be some ambiguity into what’s gets synced where and what happens when you delete items from Outlook that were previously synced to or from CRM.</p>  <p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D">These are my current activities viewed in the CRM web client. </p>  <p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D"><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/27/image_2_67E280B5.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/27/image_thumb_67E280B5.png" width="738" height="169"></a> </p>  <p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D">Looking in my Outlook To-Do bar I get a mix of CRM activities and my own Tasks</p>  <p class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D"><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/27/image_4_67E280B5.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/27/image_thumb_1_67E280B5.png" width="268" height="546"></a> </p>  <p>As you can see from the example above not all activities get synced from CRM to Outlook. So which ones do and what is there counterpart in Outlook?</p>  <h2>Sync activities to Outlook</h2>  <div class="ExternalClassB62D4F260CD04639B0DD926C1DF8476D">   <ul>     <li>Tasks</li>      <li>Letters </li>      <li>Phone calls </li>      <li>Fax </li>   </ul> </div>  <p>→ All get synced as tasks in  Outlook.</p>  <ul>   <li>Email </li> </ul>  <p>→ Email after it’s been send gets synced as sent email but before send it doesn’t get synced to Outlook</p>  <ul>   <li>Appointments </li> </ul>  <p>→ Appointments get synced to Outlook as meeting in your Calendar.</p>  <ul>   <li>Campaign responses </li> </ul>  <p>→ Won’t show up in Outlook. </p>  <ul>   <li>Service activities</li> </ul>  <p>→ Service activities show up as meetings in Outlook</p>  <h2>Deleting items in Outlook</h2>  <p>This is all quite straightforward but when deleting items in Outlook it is not always clear what happens to the activities in CRM. Well the sync behavior is depended on the status of the activity. </p>  <ul>   <li>When an activity is completed CRM it will stay in CRM but it won’t get synced back to Outlook. </li>    <li>When deleting an activity that is not yet completed it will <strong>delete in Outlook and CRM</strong>. </li> </ul>  <p>Although it would be nice to have the email activity before send also synced to a task in Outlook the overall behavior is quite nice and keeps your work load from CRM and Outlook thightly together which I think is a real advantage over other CRM systems.</p>  <h2>Deleting items in CRM</h2>  <p>Again the behavior is depended on the status of the activity.</p>  <ul>   <li>When an activity is completed CRM it will stay in Outlook. </li>    <li>When an activity is not yet completed CRM it will be deleted from Outlook as well. </li> </ul>  <p> <strong>Some more information Microsoft written about this sync behavior:</strong></p>  <p><a href="http://rc.crm.dynamics.com/rc/regcont/en_us/OP/help/ug_ol_RecordsActivities.htm">http://rc.crm.dynamics.com/rc/regcont/en_us/OP/help/ug_ol_RecordsActivities.htm</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Tue, 08 Sep 2009 10:23:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Microsoft Dynamics CRM Outlook Client “Signed out” when accessing webclient</title><link>http://www.orbitone.com/en/blog/archive/2009/08/28/microsoft-dynamics-crm-outlook-client-“signed-out”-when-accessing-webclient.aspx</link><guid>/en/blog/archive/2009/08/28/microsoft-dynamics-crm-outlook-client-“signed-out”-when-accessing-webclient.aspx</guid><description><![CDATA[<div class="ExternalClass5ACDFF37BBA944F8920D08D36013EDA8"><p>When you use Microsoft Dynamics CRM Outlook Client 4.0 on a computer with Internet Explorer 8 (IE8), you might have experienced unexpected “Signed Out” of your Outlook Client every time you open the CRM web interface in Internet Explorer: </p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image002_2_066DD245.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image002_thumb_345B24FD.jpg" width="244" height="83"></a> </p>  <p>You are then unable to use the CRM Outlook Client until you restart Outlook: </p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image004_2_345B24FD.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image004_thumb_345B24FD.jpg" width="730" height="37"></a> </p>  <p>First make sure you have the latest Update Rollup installed on your desktop as well as on the server. </p>  <p>Currently Update Rollup 6 is the most recent </p>  <p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=79f90982-c039-41c2-af8e-3119ecf27790">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=79f90982-c039-41c2-af8e-3119ecf27790</a> </p>  <p><strong>Outlook</strong></p>  <p>First correctly configure the Outlook client with the right URL settings.</p>  <p>Go to CRM &gt; Change organization in Outlook</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/image_2_345B24FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/image_thumb_345B24FD.png" width="375" height="285"></a> </p>  <p>Choose Online service provider</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/image3_345B24FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/image3_thumb_345B24FD.png" width="374" height="285"></a></p>  <p> </p>  <p>Url for production crm orbitone is:</p>  <p><a href="https://orbitonecrm.orbitone.com">https://orbitonecrm.orbitone.com</a></p>  <p>Go through the other steps, next, next,… finish.</p>  <p>Start Outlook and give CRM credentials. Save user name password.</p>  <p><strong></strong> </p>  <p><strong>IE</strong></p>  <p>Now start IE and go to Tools &gt; Internet Options &gt; security tab</p>  <p>Click Reset all levels to default button</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image0024_345B24FD.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image0024_thumb_345B24FD.jpg" width="315" height="401"></a></p>  <p>Click Intranet zone &gt; Sites &gt; Advanced &gt; enter same URL: <a href="https://orbitonecrm.orbitone.com">https://orbitonecrm.orbitone.com</a></p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image00210_1F69A28A.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002[10]" border="0" alt="clip_image002[10]" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image00210_thumb_1F69A28A.jpg" width="386" height="224"></a></p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image00212_1F69A28A.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002[12]" border="0" alt="clip_image002[12]" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image00212_thumb_1F69A28A.jpg" width="387" height="219"></a></p>  <p>Click Intranet zone &gt; Enable Protected mode (Requires restarting Internet Explorer)</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image0028_1F69A28A.jpg"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="clip_image002[8]" border="0" alt="clip_image002[8]" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/26/clip_image0028_thumb_1F69A28A.jpg" width="326" height="411"></a></p>  <p>Works like a charm!</p>  <p><b><i>See also:</i></b> </p>  <p>CRM 4.0: Forced logout from Outlook CRM client when using web client    <br><a href="http://social.microsoft.com/Forums/en-US/crm/thread/4f558522-db2e-4dae-a2fa-9391af66e237">http://social.microsoft.com/Forums/en-US/crm/thread/4f558522-db2e-4dae-a2fa-9391af66e237</a> </p>  <p>User signed out involuntarily </p>  <p><a href="https://community.dynamics.com/forums/t/6853.aspx">https://community.dynamics.com/forums/t/6853.aspx</a></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thijs ter Beek</dc:creator><pubDate>Fri, 28 Aug 2009 17:26:07 GMT</pubDate></item><item><title>Auto complete text box in Dynamics CRM 4.0</title><link>http://www.orbitone.com/en/blog/archive/2009/08/27/auto-complete-text-box-in-crm-4-0.aspx</link><guid>/en/blog/archive/2009/08/27/auto-complete-text-box-in-crm-4-0.aspx</guid><description><![CDATA[<div class="ExternalClassBE7BCF65033547B08B53A27C497FC45E"><p>We needed a drop down box in our CRM 4.0 environments for a lot of our clients. The data from the drop down should come from within CRM 4.0 to limit the dependencies to other systems. </p> <p>The cleanest way we found to do this is via an autocomplete textbox which is actually jQuery.  To make it work we needed to get data from CRM through the CRM webservice. We did this with some helper objects that we found at<a title="http://blogs.inetium.com/blogs/azimmer/archive/2009/02/01/crm-4-0-javascript-web-service-helper-objects.aspx" href="http://blogs.inetium.com/blogs/azimmer/archive/2009/02/01/crm-4-0-javascript-web-service-helper-objects.aspx">http://blogs.inetium.com/blogs/azimmer/archive/2009/02/01/crm-4-0-javascript-web-service-helper-objects.aspx</a>. These objects are created to support a .Net like language to connect to the CRM webservice.</p> <p>The next problem was an autocomplete function in JavaScript. For this we chose the functions from <a title="http://www.pengoworks.com/workshop/jquery/autocomplete.htm" href="http://www.pengoworks.com/workshop/jquery/autocomplete.htm">http://www.pengoworks.com/workshop/jquery/autocomplete.htm</a>. We changed these a bit so there is no-more CSS included, because we did not want to load this (since the look and feel of CRM won’t change (for now)) and we don’t want to screw up the CRM classes that are already in place on the form.</p> <h2>How does it stick together?</h2> <p>Finally we needed to write some plumbing code to make it work.</p> <p>In the <strong>onLoad </strong>event of the form you’ll need to add the following code: </p><pre class="csharpcode"><font size="1"><font face="Courier New"><span class="kwrd">function</span> load_script (url) 
{ 
    <span class="kwrd">var</span> x = <span class="kwrd">new</span> ActiveXObject(<span class="str">&quot;Msxml2.XMLHTTP&quot;</span>); 
    x.open(<span class="str">'GET'</span>, url, <span class="kwrd">false</span>); x.send(<span class="str">''</span>); 
    eval(x.responseText); 
    <span class="kwrd">var</span> s = x.responseText.split(/\n/); 
    <span class="kwrd">var</span> r = /^<span class="kwrd">function</span>\s*([a-z_]+)/i; 
    <span class="kwrd">for</span> (<span class="kwrd">var</span> i = 0; i &lt; s.length; i++){ 
        <span class="kwrd">var</span> m = r.exec(s[i]); 
        <span class="kwrd">if</span> (m != <span class="kwrd">null</span>) 
            window[m[1]] = eval(m[1]); 
    } 
} 

load_script(<span class="str">&quot;/Custom/ISV/jquery-1.3.2.min.js&quot;</span>);
<span class="kwrd">var</span> scriptTag1 = document.createElement(<span class="str">&quot;&lt;script src='/Custom/ISV/jquery.autocomplete.js' type='text/javascript'&gt;&quot;</span>);
<span class="kwrd">var</span> scriptTag2 = document.createElement(<span class="str">&quot;&lt;script src='/Custom/ISV/crmHelpers.js' type='text/javascript'&gt;&quot;</span>);
<span class="kwrd">var</span> scriptTag3 = document.createElement(<span class="str">&quot;&lt;script src='/Custom/ISV/ISVspecific.js' type='text/javascript'&gt;&quot;</span>);
<span class="kwrd">var</span> array = <span class="kwrd">new</span> Array();
array = document.getElementsByTagName(<span class="str">&quot;head&quot;</span>);
array[0].insertAdjacentElement(<span class="str">&quot;afterBegin&quot;</span>, scriptTag1);
array[0].insertAdjacentElement(<span class="str">&quot;afterBegin&quot;</span>, scriptTag2);
array[0].insertAdjacentElement(<span class="str">&quot;afterBegin&quot;</span>, scriptTag3);</font></font></pre>
<style>
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode, .ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .rem
{color:#008000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .str
{color:#006080;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .op
{color:#0000c0;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .preproc
{color:#cc6633;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .html
{color:#800000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .attr
{color:#ff0000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .lnum
{color:#606060;}
</style>

<style>
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode, .ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .rem
{color:#008000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .str
{color:#006080;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .op
{color:#0000c0;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .preproc
{color:#cc6633;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .html
{color:#800000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .attr
{color:#ff0000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .lnum
{color:#606060;}
</style>

<style>
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode, .ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .rem
{color:#008000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .str
{color:#006080;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .op
{color:#0000c0;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .preproc
{color:#cc6633;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .html
{color:#800000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .attr
{color:#ff0000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .lnum
{color:#606060;}
</style>

<p>As for the creation of the ISVspecific.js script I would like to link to a previous post a wrote on <a href="http://www.orbitone.com/en/blog/archive/2009/05/08/crm-client-side-validation-scripts.aspx">Client-side validation scripts</a>. In that post you can see a way to create a script paste it in CRM without changing code in the events of every field on every form.</p>
<p>The contactFormLoad function from the previous post (<a href="http://www.orbitone.com/en/blog/archive/2009/05/08/crm-client-side-validation-scripts.aspx">Client-side validation scripts</a>):</p><pre class="csharpcode"><font size="1"><font face="Courier New"><span class="kwrd">function</span> contactFormLoad(){
    <span class="kwrd">var</span> zipoptions = {
                        <span class="str">&quot;borderColor&quot;</span> : <span class="str">&quot;#6699CC&quot;</span>,
                        <span class="str">&quot;selectedColor&quot;</span> : <span class="str">&quot;#a7cdf0&quot;</span>,
                        <span class="str">&quot;background&quot;</span> : <span class="str">&quot;white&quot;</span>,
                        <span class="str">&quot;getDataCallback&quot;</span> : GetCountries 
                     };
    $(<span class="str">&quot;#address1_country&quot;</span>).autocomplete(zipoptions);
    <span class="rem">//add you other onchange scripts here</span>
}
</font></font></pre>
<style>
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode, .ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .rem
{color:#008000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .str
{color:#006080;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .op
{color:#0000c0;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .preproc
{color:#cc6633;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .html
{color:#800000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .attr
{color:#ff0000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .lnum
{color:#606060;}
</style>

<p>The <font face="Courier New">GetCountries </font>which is assigned to <font face="Courier New">getDataCallback </font>is where the CRM service queries are performed. This should be your own implementation. I have prepared some sample code that retrieves countries from a small custom entity called <font face="Courier New">new_country </font>with the attributes <font face="Courier New">new_countryid </font>and <font face="Courier New">new_name</font>.</p><pre class="csharpcode"><font size="1"><font face="Courier New"><span class="kwrd">function</span> GetCountries(partialCountry){
    <span class="kwrd">try</span>{
        <span class="kwrd">var</span> crmService = <span class="kwrd">new</span> CrmService(<span class="str">&quot;new_country&quot;</span>, LOGICAL_OPERATOR_OR);
        crmService.AddColumn(<span class="str">&quot;new_name&quot;</span>);
    
        <span class="kwrd">if</span>(partialCountry != <span class="kwrd">null</span>){
            crmService.AddFilterCondition(<span class="str">&quot;new_name&quot;</span>, partialCountry + <span class="str">&quot;%&quot;</span>, CONDITION_OPERATOR_LIKE);
        }
        <span class="kwrd">var</span> result = crmService.Fetch(20);
        
        <span class="kwrd">for</span>(<span class="kwrd">var</span> i <span class="kwrd">in</span> result.Rows)
        {
            <span class="kwrd">var</span> s= <span class="str">&quot;&quot;</span>;
            <span class="kwrd">for</span>(<span class="kwrd">var</span> j <span class="kwrd">in</span> result.Rows[i].Columns)
            {
                s += result.Rows[i].Columns[j].Value;
            }
        }
                
        <span class="kwrd">var</span> ar = <span class="kwrd">new</span> Array();
        <span class="kwrd">var</span> i = 0;
        <span class="kwrd">var</span> addvalue = <span class="kwrd">true</span>;
        <span class="kwrd">for</span> (rowsNumber <span class="kwrd">in</span> result.Rows) {
            addvalue = <span class="kwrd">true</span>;
            <span class="kwrd">var</span> newval = result.Rows[rowsNumber].GetValue(<span class="str">&quot;new_name&quot;</span>);
            <span class="kwrd">for</span>(resultRow <span class="kwrd">in</span> ar) {
                <span class="kwrd">if</span>(ar[resultRow] == newval) {
                    addvalue = <span class="kwrd">false</span>;
                    <span class="kwrd">break</span>;
                }
            }
            <span class="kwrd">if</span>(addvalue){
                ar[i] = newval;
                i++;
            }
        }
        <span class="kwrd">return</span> ar;
    }
    <span class="kwrd">catch</span>(er) {
        alert(er.message);
    }
}</font></font></pre>
<style>
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode, .ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{font-size:small;color:black;font-family:consolas, &quot;Courier New&quot;, courier, monospace;background-color:#ffffff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode pre
{margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .rem
{color:#008000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .kwrd
{color:#0000ff;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .str
{color:#006080;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .op
{color:#0000c0;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .preproc
{color:#cc6633;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .asp
{background-color:#ffff00;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .html
{color:#800000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .attr
{color:#ff0000;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .alt
{background-color:#f4f4f4;width:100%;margin:0em;}
.ExternalClassBE7BCF65033547B08B53A27C497FC45E .csharpcode .lnum
{color:#606060;}
</style>

<p>As you can see in the above code block, the function takes one parameter, being the part you typed in the field you need the autocomplete functionality on. Then some fetch xml is generated by the crmHelper objects and the query is executed. This will only get 20 records as specified in the line crmService.Fetch(20).</p>
<p>The crmHelpers.js contains a method called <font face="courier new">CrmService.prototype.Fetch</font>, which is a reworked version of the <font face="courier new">CrmService.prototype.RetreiveMultiple </font>from the code of <a href="http://blogs.inetium.com/blogs/azimmer/">Andrew Zimmer</a>.</p>
<p>If you would like to use the autocomplete function on a lookup field in CRM (yes, that also works :)) you need to add “_ledit” (without the quotes) to the fieldname. Example: </p><pre class="csharpcode"><font size="1" face="Courier New">$(<span class="str">&quot;#new_countryid_ledit&quot;</span>).autocomplete(zipoptions);</font></pre><pre class="csharpcode"> </pre><pre class="csharpcode"><font face="Arial">You can download a <a href="http://www.orbitone.com/en/blog/documents/CRM40AutoCompletionExample.zip" target="_blank">complete sample</a> but don’t forget to create the new_country entity if you want to test.</font></pre></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Thu, 27 Aug 2009 14:50:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category><category domain="http://www.orbitone.com/en/blog/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://www.orbitone.com/en/blog/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>Adding Fluent NHibernate support for Castle Windsor’s NHibernate Integration</title><link>http://www.orbitone.com/en/blog/archive/2009/06/23/adding-fluent-nhibernate-support-for-castle-windsor’s-nhibernate-integration.aspx</link><guid>/en/blog/archive/2009/06/23/adding-fluent-nhibernate-support-for-castle-windsor’s-nhibernate-integration.aspx</guid><description><![CDATA[<div class="ExternalClassD9E6B4D81E3142E291F648DE7B122119"><h1></h1>  <p align="justify">We have used NHibernate as ORM mapper in many projects and to facilitate automatic session and transaction management we employed the <a href="http://www.castleproject.org" target="_blank">Castle Windsor</a> <a href="http://www.castleproject.org/container/facilities/trunk/nhibernate/index.html" target="_blank">NHibernate Integration facility</a>. </p>  <p align="justify">When using the Castle NHibernate Facility the configuration file for castle (<strong>castle.xml.config</strong>) looks like this:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_4_22EB85FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_1_22EB85FD.png" width="408" height="172"></a></p>  <p align="justify">Where the mapping assembly contains all the .hbm.xml files as embedded resources.</p>  <p align="justify">When the <a href="http://fluentnhibernate.org/" target="_blank">Fluent NHibernate</a> framework appeared we started thinking about using it in our projects. But we wanted to do this with minimal changes to the Castle configuration schema (in the above screenshot).</p>  <p align="justify">The ideal situation would be to specify an assembly containing the Fluent NHibernate mapping classes instead of the assembly containing mapping xml files.</p>  <p align="justify">In the screenshot from above you can see in the  highlighted area an <font color="#0000ff">&lt;assembly/&gt;</font> declaration. That assembly will be used by Castle NHibernate Facility’s <strong>default xml mapper. </strong></p>  <p align="justify">We would like to make it possible to specify <strong>our own mapper</strong> which will make use of Fluent NHibernate to load the mapping classes from the specified assembly.</p>  <p align="justify">As the Fluent NHibernate framework is open-source, we considered making out custom build to add the needed functionality. Next I will describe the steps needed to implement and use the custom Fluent NHibernate mapper with Castle’s NHibernate Facility.</p>  <p><font color="#000000">1. Download the necessary source files:</font> </p>  <ul>   <li><font color="#000000"><a href="http://prdownloads.sourceforge.net/castleproject/Castle-SourceCode.zip?download" target="_blank">Castle Project</a> </font> </li>    <li><font color="#000000"><a href="http://fluentnhibernate.org/downloads/fluentnhibernate-source-0.1.0.526.zip" target="_blank">Fluent NHibernate</a></font> </li> </ul>  <p><font color="#000000">2. Create a new solution including the following projects:</font> </p>  <ul>   <li><font color="#000000">Castle.Core</font> </li>    <li><font color="#000000">Castle.DynamicProxy</font> </li>    <li>Castle.Facilities.NHibernateIntegration </li>    <li>Castle.MicroKernel </li>    <li>Castle.Services.Transaction </li>    <li>Castle.Windsor </li>    <li>FluentNHibernate </li>    <li>NHibernate.Mapping.Attributes-2.0 </li> </ul>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_6_22EB85FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_2_22EB85FD.png" width="256" height="147"></a></p>  <p>3. Create a new folder in the in the Castle.Facilities.NHibernateIntegration project. The project structure should look like the following: </p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_14_22EB85FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_6_22EB85FD.png" width="314" height="330"></a> </p>  <p>4. In the previously created folder add the following: </p>  <ul>   <li>     <div align="justify">An interface called <strong>INhibernateMapper</strong> This is the base for all the NHibernate mapper types. </div>   </li>    <li>     <div align="justify">A class named <strong>DefaultNHibernateMapper.</strong> </div>   </li>    <li>     <div align="justify">A class named <strong>AttributeNhibernateMapper</strong>. </div>   </li>    <li>     <div align="justify">A class named <strong>FluentNhibernateMapper</strong>. </div>      <div align="justify">The class diagram is shown below:</div>      <div> <a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_16_22EB85FD.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_7_0DFA038A.png" width="377" height="279"></a> </div>   </li> </ul>  <p>5. Implement the <strong>FluentNHibernateMapper:</strong></p>  <p align="justify"> <a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_18_0DFA038A.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_8_0DFA038A.png" width="406" height="294"></a> The RegisterAssemblies method loads the assemblies specified in the <font color="#0000ff">&lt;assembly/&gt;</font> section of the castle configuration file and registers the FluentNhibernate mapping classes with NHibernate. </p>  <p> </p>  <p align="justify">6. Expand the Castle.Facilities.NHibernateIntegration project, look for the <strong>NHibernateFacility.cs</strong> file and locate the <font color="#0000ff">protected void RegisterAssemblies(Configuration cfg, IConfiguration facilityConfig) </font><font color="#004000">method.</font> </p>  <div><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_10_0DFA038A.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_4_0DFA038A.png" width="314" height="256"></a></div>  <p>Replace the method’s contents with the following code:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_26_0DFA038A.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_12_0DFA038A.png" width="408" height="144"></a> </p>  <p align="justify">The method tests if a mapper is declared in the <font color="#0000ff">&lt;assembly/&gt;</font> section of the castle configuration file. If yes, it will use it. If not it will use the <strong>DefaultNhibernateMapper </strong>(xml).</p>  <p> </p>  <p><strong><font size="3">Conclusion:</font></strong></p>  <p align="justify">The schema of the configuration file does not change if the preferred mapping type is xml. If the mappings are defined using FluentNHibernate then the castle configuration file transforms like the following:</p>  <p><a href="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_24_0DFA038A.png"><img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px" title="image" border="0" alt="image" src="http://www.orbitone.com/en/blog/Lists/Posts/Attachments/24/image_thumb_11_0DFA038A.png" width="410" height="141"></a> </p>  <blockquote>   <p align="justify">The extra attribute – <strong>mapper</strong>  - specifies which <strong>IHNibernateMapper</strong> implementation to use for loading the NHibernate mappings.</p>    <p align="justify">The custom mappers can be implemented in a separate assembly. But the interface (<strong>IHNibernateMapper</strong>) needs to be located the Castle.Facilities.<strong>NHibernateIntegration</strong> assembly, because the entry point for loading the NHibernate mapping assemblies is the <strong>RegisterAssemblies</strong> method in the <strong>NHibernateFacility</strong> class.</p>    <p>The full source code can be downloaded <a href="http://www.orbitone.com/en/blog/documents/CastleEverything.zip" target="_blank">here</a>.</p></blockquote></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Voicu Matei</dc:creator><pubDate>Tue, 23 Jun 2009 17:30:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Dynamics CRM4.0: Client-side validation scripts</title><link>http://www.orbitone.com/en/blog/archive/2009/02/02/crm-client-side-validation-scripts.aspx</link><guid>/en/blog/archive/2009/02/02/crm-client-side-validation-scripts.aspx</guid><description><![CDATA[<div class="ExternalClass7D38274F213D42C0A8B4D7211FDEBE01">
<div>Everybody who customized CRM in the slightest will know that adding a client side validation script on one or more fields on a form is quite tedious and repetitive work.</div>
<div> </div>
<div>Therefor we've looked a little bit deeper at the problem here at Orbit One, to be able to serve our customers quicker, better and more reliable.</div>
<div> </div>
<div>Let me try and scetch the situation in CRM to add 1 field validator. There are a few steps that you need to do.</div>
<ol>
<li>Open CRM</li>
<li>Goto Settings</li>
<li>Click on the Customization link in the menu (left side)</li>
<li>Select the entity for which you want to validate a field</li>
<li>Click Forms and Views in the new screen (again on the left side)</li>
<li>double click on the Form item</li>
<li>double click on the Field you want to validate</li>
<li>Select the tab Events</li>
<li>Click on the Edit button</li>
<li>Write your validation logic in JavaScript</li>
<li>Do not forget to enable the event with the checkbox above your validation code</li>
<li>Click the OK button</li>
<li>Click the OK button</li>
<li>Click the Save and Close button on top</li>
<li>Click the Actions button on top and select publish.</li></ol>
<p>Steps 7 through 14 are the steps you'll need to do for every field if you do the validations in bulk. </p>
<p>What we do now is the following. We add some code to the OnLoad event of the form as following:</p>
<ol>
<li>Open CRM</li>
<li>Goto Settings</li>
<li>Click on the Customization link in the menu (left side)</li>
<li>Select the entity for which you want to validate a field</li>
<li>Click Forms and Views in the new screen (again on the left side)</li>
<li>Double click on the Form item</li>
<li>Click on the Forms Properties button on the right side</li>
<li>Click on the Edit button</li>
<li>Write code here:<br>var scriptTag = document.createElement(&quot;&lt;script src='/Custom/validation.js' type='text/javascript'&gt;&quot; );<br>var array = new Array();<br>array = document.getElementsByTagName(&quot;head&quot;);<br>array[0].insertAdjacentElement(&quot;afterBegin&quot;, scriptTag);</li>
<li>Do not forget to enable the event with the checkbox above your validation code</li>
<li>Click the OK button</li>
<li>Click the OK button</li>
<li>Click the Save and Close button on top</li>
<li>Click the Actions button on top and select publish.</li></ol>
<div>Now that we have done this, lets take a look at the validation.js file. It should load every validation we have, so lets start by adding something that will make the onload of document trigger:</div>
<div><font face="Courier New">var oldOnload = document.onload;<br>if(oldOnload != undefined &amp;&amp; oldOnload != null &amp;&amp; typeof(oldOnload) == &quot;function&quot;){<br> if(crmForm.crmFormRootElem.value == &quot;contact&quot;){<br>  document.onload = function(){ oldOnLoad(); contactFormLoad(); }();<br> }<br>} else {<br> if(crmForm.crmFormRootElem.value == &quot;contact&quot;){<br>  document.onload = function(){ contactFormLoad(); }();<br> }<br>}</font></div>
<div> </div>
<div>What does this code do ??? Well, the onload function is stored in the oldOnload variable. Then we check if the oldOnload function is actually a defined, if it is not null and that the type is a function. If this is the case there already was an onload function, so we do not want to lose that one. So what happens next is we create a new document.onload function that calls the oldOnLoad and then our own onload function contactFormLoad. If there is not already an onload function for the document we just use our contactFormLoad.</div>
<div> </div>
<div>The contactFormLoad function looks like this:</div>
<div><font face="Courier New">function contactFormLoad(){<br> overloadOnChange(&quot;address1_telephone1&quot;, address1_telephone1_onchange);<br> overloadOnChange(&quot;emailaddress1&quot;, emailaddress1_onchange);<br> overloadOnChange(&quot;websiteurl&quot;, websiteurl_onchange);<br> <br> hookOnSave(contactFormSave);<br>}</font></div>
<div> </div>
<div>As you can make up from the code above, we're going to validate a phonenumber, an email address and a website url.</div>
<div> </div>
<div>Then we are going to make sure the onsave also gets triggered so all our validation logic is run at the save, just to make sure.</div>
<div> </div>
<div>The overloadOnChange method: where most of the magic happens.</div>
<div> </div>
<div><font face="Courier New">function overloadOnChange(fieldName, newOnChangeFunction){<br> if(fieldName == null) <br>  return;<br> var control = crmForm.all[fieldName];<br> if (control != null){<br>  if(typeof(newOnChangeFunction) == &quot;function&quot;){<br>   if (typeof(control.onchange) == &quot;function&quot;){<br>    if (control.onchange != null) {<br>     var oldOnChangeFunction = control.onchange;<br>     control.onchange = function() { newOnChangeFunction(); oldOnChangeFunction(); };<br>    } else {<br>     control.onchange = function(){ newOnChangeFunction(); };<br>    }<br>   } else {<br>    control.onchange = function(){ newOnChangeFunction(); };<br>   }<br>  }<br> }<br>}</font></div>
<div> </div>
<div>This is a chunck of code that can be found inside CRM itself.</div>
<div>They use this to hook the clientside code to the fields if and only if the event is enabled checkbox is checked. </div>
<div>I don't want to check every checkbox on every field I want to validate. That's way to repetitive. So in the code above we flipped the positions of our new eventhandler and there old eventhandler, so that ours is triggered before theirs. </div>
<div>This seems like good practice to us because that way we can still use the validation out of the box in CRM like everybody does, but we can also use our method... So this is actually only added value. Nothing breaks in the inner workings of CRM.</div>
<div> </div>
<div> </div>
<div>And the hookOnSave part is this:</div>
<div><font face="Courier New">function hookOnSave(onsaveFunction){<br> if (crmForm != null) {<br>  if(typeof(crmForm.onsave) == &quot;function&quot;){<br>   var oldOnsave = crmForm.onsave;<br>   if(oldOnsave != null) {<br>    crmForm.onsave = function(){ onsaveFunction(); oldOnSave(); };<br>   } else {<br>    crmForm.onsave = function(){ onsaveFunction(); };<br>   }<br>  } else {<br>   crmForm.onsave = function(){ onsaveFunction(); };<br>  }<br> }<br>}</font></div>
<div> </div>
<div>Again with the old function that's being saved and so forth and so on ... just as in the previous function we'll do our onsave trigger followed by CRM's own onsave.</div>
<div> </div>
<div>In our onsave method - contactFormSave - we trigger our functions again:</div>
<div> </div>
<div><font face="Courier New">function contactFormSave(){<br> try{<br>     TryFireOnChange(&quot;address1_telephone1&quot;);<br>     TryFireOnChange(&quot;emailaddress1&quot;);<br>     TryFireOnChange(&quot;websiteurl&quot;);<br>     event.returnValue = isFormValid();<br> }<br> catch (e) {<br>     displayError(&quot;crmForm&quot;, &quot;onsave&quot;, e.description);<br> }<br>}</font></div>
<div> </div>
<div>Followed by the TryFireOnChange. This function has been added because we've had a minor issue in migrating the script. One of the fields in our staging environment was missing in the production environment. So when the field you try to validate the field but it doesn't exist then the catch get hit and nothing happens.</div>
<div> </div>
<div><font face="Courier New">function TryFireOnChange(fieldName){<br> try {<br>  if(document.crmForm.all[fieldName] != undefined) {<br>   document.crmForm.all[fieldName].FireOnChange();<br>  }<br> }<br> catch (e){}<br>}</font></div>
<div> </div>
<div>I am not going to elaborate on the validation functions itself because this is not really the scope of this post.</div>
<div> </div>
<div> </div>
<div>The PRO's to this approach are pretty huge for us:</div>
<ul>
<li>we can migrate the validations from our staging environment to the production environment by just copying one file.</li>
<li>we can just edit the file instead of having to click a bunch of times in the CRM web interface</li>
<li>we can still do everything through the CRM web interface</li>
<li>we can manage the one file in our source control more easily and track everything better.</li></ul>
<div>I hope you enjoyed reading this, and that it makes your work a little bit easier.</div>
<div> </div>
<div> </div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Fri, 08 May 2009 15:20:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category><category domain="http://www.orbitone.com/en/blog/archive/tags/JavaScript/default.aspx">JavaScript</category></item><item><title>Language sensitive search results in SharePoint</title><link>http://www.orbitone.com/en/blog/archive/2009/05/04/language-sensitive-search-results-in-sharepoint.aspx</link><guid>/en/blog/archive/2009/05/04/language-sensitive-search-results-in-sharepoint.aspx</guid><description><![CDATA[<div class="ExternalClass01B6DCFBBF914480AAC729B4F0C7FA66"><div class="ExternalClassB9DA4E0E9E9540E9AAC4DA6ED55CA700">   <div>  <p style="margin:0in;font-family:calibri;font-size:11pt;font-weight:bold">The Problem: </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">SharePoint returns different search results when I change my browser language </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">Searching for &quot;the&quot; in English will give no results because the word is ignored.  </p>      <p style="margin:0in"><img alt="Search results in English" src="http://www.orbitone.com/en/blog/Lists/Photos/search-en.png" width="411" height="97"></p>      <p style="margin:0in;font-family:calibri;font-size:11pt">Searching for &quot;the&quot; in Dutch does give results.</p>      <p style="margin:0in;font-family:calibri;font-size:11pt"> <img alt="Search results in Dutch" src="http://www.orbitone.com/en/blog/Lists/Photos/search-nl.png" width="405" height="102"></p>      <p style="margin:0in;font-family:calibri;font-size:11pt">This is a feature of SharePoint, it's not a bug. </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">However, it's not always desirable behaviour. In a multi-lingual site with a variation for each language the search results should be in the language of the current variation. </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">By default SharePoint will ignore the variation settings and still take the browser language. </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">There are several posts with the same problem, <a href="http://blogs.microsoft.co.il/blogs/adir_ron/archive/2007/12/11/how-to-avoid-ie-language-settings-affecting-moss-search-results.aspx" target="_blank">here</a> and here<a href="http://sharepointsearch.com/cs/forums/p/6339/6473.aspx#6473" target="_blank">here</a>. The suggested solutions range from changing the browser language programmatically to creating a new masterpage with the Culture hard coded, to subclassing the search results web part and changing the Culture settings in the OnInit event. </p>      <p style="margin:0in;font-family:calibri;font-size:11pt" lang="nl-BE">Unfortunately these solutions either do not work or require a lot of work for a simple change. </p>      <p style="margin:0in;font-family:calibri;font-size:11pt;font-weight:bold">The solution: </p>      <p style="margin:0in;font-family:calibri;font-size:11pt">The Search Core Results web part has a property called &quot;SearchLanguage&quot;, which holds the locale of the search results. By default this property is null, and the locale will be inferred from the browser language</p>      <p style="margin:0in;font-family:calibri;font-size:11pt">To set this property to your language of choice, export the Search Core Results web part.</p>      <p style="margin:0in;font-family:calibri;font-size:11pt">Towards the end of the file you'll find the property QueryLanguage, which is null by default:</p>      <pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">&lt;property name=&quot;QueryLanguage&quot; type=&quot;string&quot; null=&quot;true&quot; /&gt;</pre>

    <pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"> </pre>

    <p style="margin:0in;font-family:calibri;font-size:11pt" lang="nl-BE">Change this to </p>

    <pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">&lt;property name=&quot;QueryLanguage&quot; type=&quot;string&quot;&gt;en-GB&lt;/property&gt;</pre>

    <pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: true; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"> </pre>

    <p style="margin:0in;font-family:calibri;font-size:11pt">Now import the web part back to the page and remove the old Search Core Results web part. </p>

    <p style="margin:0in;font-family:calibri;font-size:11pt">The search results will now always be in the language you chose, no matter what the browser language is.</p>
  </div>
</div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mel Gerats</dc:creator><pubDate>Mon, 04 May 2009 11:37:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Preserve created and modified information when importing a document in SharePoint.</title><link>http://www.orbitone.com/en/blog/archive/2009/03/28/preserve-and-created-and-modified-information-when-importing-a-document-in-sharepoint-.aspx</link><guid>/en/blog/archive/2009/03/28/preserve-and-created-and-modified-information-when-importing-a-document-in-sharepoint-.aspx</guid><description><![CDATA[<div class="ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F">
<p>I’m currently writing a web service on our SharePoint server to upload documents because one of our clients would like to migrate from a third party document management system to SharePoint. </p>
<p>This client would like to keep the legacy dates like the date of creation and the last modified date. After researching this, I still couldn’t find a way to do this. I noticed there are tools out there are able to do this so it is definitely possible.</p>
<p>So after some more trial and error I finally figured it out. And it wasn’t even that exotic, so I’d like to share how it is done.</p>
<p>When you’ve uploaded the file and checked it in you can change the dates with the following code:</p>
<style>
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cf
{font-family:courier new;font-size:8pt;color:black;background:white;}
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cl
{margin:0px;}
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cb1
{color:blue;}
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cb2
{color:#2b91af;}
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cb3
{color:#a31515;}
.ExternalClass5AAEBB50EAD442E2AAD35EEF8633A09F .cb4
{color:green;}
</style>

<div class="cf"><pre class="cl"><span class="cb1">public</span> <span class="cb1">void</span> UpdateFileDates(</pre><pre class="cl"><span class="cb1">string</span> siteCollectionUrl, <span class="cb1">string</span> site, </pre><pre class="cl"><span class="cb1">string</span> file, <span class="cb2">DateTime</span> created, <span class="cb2">DateTime</span> modified)</pre><pre class="cl">{</pre><pre class="cl">    <span class="cb1">if</span> (siteCollectionUrl == <span class="cb1">null</span>) </pre><pre class="cl">       <span class="cb1">throw</span> <span class="cb1">new</span> <span class="cb2">ArgumentNullException</span>(<span class="cb3">&quot;siteCollectionUrl&quot;</span>);</pre><pre class="cl"> </pre><pre class="cl">    <span class="cb1">using</span> (<span class="cb1">var</span> spSite = <span class="cb1">new</span> <span class="cb2">SPSite</span>(siteCollectionUrl))</pre><pre class="cl">    <span class="cb1">using</span> (<span class="cb1">var</span> web = <span class="cb1">string</span>.IsNullOrEmpty(site)</pre><pre class="cl">                        ? spSite.RootWeb</pre><pre class="cl">                        : spSite.OpenWeb(site))</pre><pre class="cl">    {</pre><pre class="cl">        <span class="cb1">var</span> spFile = web.GetFile(file);</pre><pre class="cl">        <span class="cb1">if</span> (spFile != <span class="cb1">null</span>)</pre><pre class="cl">        {</pre><pre class="cl">            spFile.CheckIn(<span class="cb3">&quot;&quot;</span>);</pre><pre class="cl">            <span class="cb1">var</span> item = spFile.Item;</pre><pre class="cl"> </pre><pre class="cl">            <span class="cb1">if</span> (item != <span class="cb1">null</span>)</pre><pre class="cl">            {</pre><pre class="cl">            item[<span class="cb3">&quot;Created&quot;</span>] = created;</pre><pre class="cl">            item[<span class="cb3">&quot;Modified&quot;</span>] = modified;</pre><pre class="cl"> </pre><pre class="cl">            spFile.CheckOut();</pre><pre class="cl">            item.Update();</pre><pre class="cl">            <span class="cb4">//When you do overwritecheckin the </span></pre><pre class="cl"><span class="cb4">	   // version doesn't change.</span></pre><pre class="cl">            spFile.CheckIn(<span class="cb3">&quot;&quot;</span>, <span class="cb2">SPCheckinType</span>.OverwriteCheckIn);</pre><pre class="cl">            }</pre><pre class="cl">        }</pre><pre class="cl">    }</pre><pre class="cl">}</pre></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Sat, 28 Mar 2009 16:49:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>VMware ESX - Getting rid of disk-space hungry snapshots</title><link>http://www.orbitone.com/en/blog/archive/2009/03/09/VMware ESX - Getting rid of disk-space hungry snapshots.aspx</link><guid>/en/blog/archive/2009/03/09/VMware ESX - Getting rid of disk-space hungry snapshots.aspx</guid><description><![CDATA[<div class="ExternalClass359DDE152F2249CFA51B196B88E75169">
<div>
<div>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Getting rid of disk-space hungry snapshots on VMware Server isn't  really a push-button task and requires a bit of creativity. If you make a snapshot on a production vm in your virtual infrastructure, don't keep it much longer than a day or two at the most. The snapshot will grow automatically to a max of the original vmdk.</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><a href="http://virtrix.blogspot.com/2006/11/vmware-how-big-can-vm-snapshots-grow.html">http://virtrix.blogspot.com/2006/11/vmware-how-big-can-vm-snapshots-grow.html</a></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Remove a snapshot is easy, right? Sure.... till the task times out. </p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><a href="http://blog.frode.org/?tag=remove-snapshot">http://blog.frode.org/?tag=remove-snapshot</a></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">The vmdk snapshot file for the VM had grown to several GB’s. Think twice before you press the “delete all” button. When you hit that button, all the snapshots will merge into the original “flat.vmdk”-file  and afterwards all snapshots are deleted. </p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><a href="http://www.yellow-bricks.com/2008/01/07/delete-all-snapshots/">http://www.yellow-bricks.com/2008/01/07/delete-all-snapshots/</a></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">This action takes a while and there are a lot of strange things/problems in VirtualCenter e.g. “VirtualCenter shows no snapshot but it still exist in the ESX under the VirtualMachine directory on the datastore”, VM’s get stuck,… So before you make and remove snapshots, try to understand how a snapshot works and which files are involved:</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><a href="http://www.virtualizationtrainings.com/vmware-advanced-study/all-about-snapshots-in-vmware-vi3">http://www.virtualizationtrainings.com/vmware-advanced-study/all-about-snapshots-in-vmware-vi3</a><br>&lt;machine name&gt;-SnapshotX.vmsn (Where X is the number of the snapshot taken) This file stores the state of the virtual machine when the snapshot was taken.</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">&lt;machine name&gt;-SnapshotX.vmem (Where X is the number of the snapshot taken) This file stores the state of the virtual machine memory when the snapshot was taken.</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">&lt;machine name&gt;-n.vmdk (where n is the number of the disk image)</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">If you want to remove snapshots, never use the snapshotmanager if you want to relax that day!</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><a href="http://professionalvmware.com/2009/01/19/removing-vmware-snapshots-with-a-bat-powershell-cli-rcli/">http://professionalvmware.com/2009/01/19/removing-vmware-snapshots-with-a-bat-powershell-cli-rcli/</a></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Snapshots get stuck, like glue, to a running VM, and despite your best effort to delete them, they won’t go away. Like in-laws, they stick around, a bit longer than is pleasant. If a snapshot has not been removed cleanly on the first try, you may want to create a new snapshot first (just to make sure the system knows there IS a snapshot present) before using the methods below.</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Here are a few ways of getting rid of the ones that don’t want to go away:</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><strong>From the Service Console (ESX)</strong></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">[root@esx esx:storage1]# vmware-cmd ./VMname/VMname.vmx removesnapshots removesnapshots() = 1</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><strong>From PowerShell</strong></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">PS C:\&gt; get-vm VMname* | get-snapshot | Remove-Snapshot -Confirm:$false</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><strong>Using the rCLI</strong></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Install RCLI on a virtualcenter machine</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Probably you get an error about a library: <a href="http://theether.net/kb/100062">http://theether.net/kb/100062</a> </p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">add “C:\Program Files\VMware\VMware VI Remote CLI\Perl\bin” to path environments</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">C:\Program Files\VMware\VMware VI Remote CLI\bin&gt;vmware-cmd.pl -H esx -U root –P  password /vmfs/volumes/esx:storage1/VMname/VMname.vmx removesnapshots removesnapshot () = 1</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt"><strong>Using the Perl Toolkit</strong></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">./snapshotmanager.pl –server your.vc.host –operation removeall –vmname some.bad.vm</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">I used the Perl Toolkit (it’s installed with RCLI):</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">C:\Program Files\VMware\VMware VI Remote CLI\Perl\apps\vm&gt;snapshotmanager.pl -server EsxServer.arfyes.com -operation removeall -vmname VMname</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Enter username: root<br>Enter password:</p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt">Warning: depending on the size of the snapshot, it may take a LONG while for them to go away! You can get an idea of how long it’s going to take by looking at how large the snapshots are with ls -lh and note the size of your largest snapshots. </p></div></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lieven Meys</dc:creator><pubDate>Mon, 09 Mar 2009 13:07:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/VMware/default.aspx">VMware</category></item><item><title>Dynamics CRM 4.0 tool - Bulk update / export to csv</title><link>http://www.orbitone.com/en/blog/archive/2009/02/27/crm-4-0-tool-bulk-update-export-to-csv.aspx</link><guid>/en/blog/archive/2009/02/27/crm-4-0-tool-bulk-update-export-to-csv.aspx</guid><description><![CDATA[<div class="ExternalClass71F97F7200064B89947BB64FEC92CBBD"><div><p>One of our customers recently asked to do an update on their instance of the microsoft CRM 4.0 platform.</p>

<p>The goal was to change the current Country Picklist to a lookup field which points to a new_country entity.</p>

<p>The new_country entity contains a few translations of the countries in different languages like english, dutch and french, and the ISO codes for each country.</p>

<p>Try to update that in CRM 4.0. So we start looking. The first thing I came across was the MSCRM 4.0 Bulk Data Export Tool</p>

<p>This tool allows you to export data generated by an advanced find view to a CSV file which you can later on import in CRM 4.0 trhough an update job. So I started playing around with it.</p>

<p>The major issue for me is that with that tool I couldn’t get the lookup field to be populated. I tried a bunch of different things like “account,E52B43A8-5FC6-4934-A5A3-96B2983EE140″ or just the “E52B43A8-5FC6-4934-A5A3-96B2983EE140″ but nothing seemed to work.</p>

<p>So I decided to create a new tool that basically does what i want, without creating an import job. Everything is done through the CRM SDK.</p>

<p>A few things I thought are very cool:
<ul>
    <li>You can save your connection. We are a hosting company and we have 6 different CRM instances on 3 different servers, so this is quite nice.</li>
    <li>One of our clients has 15.000+ records in their contacts. Because CRM returns only 5.000 records for each request, I can’t update them all in one go. This was changed by making multiple requests if necessary.</li>
    <li>Access all the records and all the fields. In the MSCRM 4.0 Bulk Data Export Tool you can only use the tool on Advanced find views. I allow you to use the tool on the main entity. Which is really helpfull in some cases.</li>
    <li>It allows you to choose the Authentication type. You can connect to CRM with Active Directory, SPLA, Passport (this last one I haven’t been able to test so if anybody has a CRM with passport please let me know)</li>
</ul></p>

<p>It is still a work in progress but it does the job quite nice already so try it out.<br>
<a href="http://mscrmbulkupdatetool.codeplex.com/">The CRM Bulk Update / Export Tool</a></p>

<p>I hope it helps some of you in your daily (or not so daily) tasks. <br>I know it saved a colleague of mine about 80% of his time for only one case, and I consider that a big improvement.</p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Fri, 27 Feb 2009 19:54:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Public website for EU Issue Tracker</title><link>http://www.orbitone.com/en/blog/archive/2009/02/27/public-website-for-eu-issue-tracker.aspx</link><guid>/en/blog/archive/2009/02/27/public-website-for-eu-issue-tracker.aspx</guid><description><![CDATA[<div class="ExternalClass9B536B5B2BCD487CB138ABBFFBDBBB72"><div><img alt="EU Issue Tracker" src="http://www.orbitone.com/en/blog/Lists/Photos/screenshot-euissuetracker-website.JPG"></div>
<div> </div>
<div>Today we have launched the new website for EU Issue Tracker, the online service to anticipate, monitor and manage EU Legislation &amp; Policy. </div>
<div> </div>
<div>The site is completely developed using Microsoft SharePoint, and integrates with data from the back-end databases.</div>
<div> </div>
<div><a href="http://www.orbitone.com/en/clients/Pages/eu-issue-tracker.aspx">Have a look</a>!</div>
<div> </div>
<div> </div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Fri, 27 Feb 2009 19:10:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Microsoft TechDays in Belgium, 10-12 March 2009</title><link>http://www.orbitone.com/en/blog/archive/2009/02/16/microsoft-techdays-in-belgium-10-12-march-2009.aspx</link><guid>/en/blog/archive/2009/02/16/microsoft-techdays-in-belgium-10-12-march-2009.aspx</guid><description><![CDATA[<div class="ExternalClassD8AE738E9FBA4EBB93D6A7D3543FB0EA">
<div>
<p class="MsoNormal" style="margin:0cm 0cm 0pt;vertical-align:top;line-height:normal"><span lang="EN-GB" style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'">Almost there... As a yearly habit, we are going to TechDays to meet friends, enjoy the food and shape our knowledge.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 0pt;vertical-align:top;line-height:normal"><span lang="EN-GB" style="font-size:8.5pt;color:black;font-family:'Verdana','sans-serif'">During 3 days, in 60 technical sessions, Microsoft promises a deep-dive on existing and future technologies.</span></p>
<p class="MsoNormal" style="margin:0cm 0cm 10pt"><span lang="EN-GB" style="font-size:8.5pt;color:black;line-height:115%;font-family:'Verdana','sans-serif'">Mel, Tom, Voicu, Wim DC, Wim R, Lieven, Arne and Olivier will be there. See you in Antwerp!</span></p></div>
<div><img alt="TechDays 2009" src="http://www.orbitone.com/en/blog/Lists/Photos/techdays-120x240ani.gif"><br></div>
<div><a href="http://www.microsoft.com/belux/techdays">http://www.microsoft.com/belux/techdays</a></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Mon, 16 Feb 2009 07:50:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/TechDays/default.aspx">TechDays</category></item><item><title>Orbit One @ European SharePoint Best Practices Conference</title><link>http://www.orbitone.com/en/blog/archive/2009/02/11/orbit-one-european-sharepoint-best-practices-conference.aspx</link><guid>/en/blog/archive/2009/02/11/orbit-one-european-sharepoint-best-practices-conference.aspx</guid><description><![CDATA[<div class="ExternalClass0B7CAB2DB3154E9B8AA25025F85384F3"><p>From <strong>6 to 8 April</strong> there is a very interesting <strong>conference in</strong> <strong>London</strong>.</p>
<p><img alt="" src="http://www.orbitone.com/en/blog/Lists/Photos/SharePointBestPractices.jpg"></p>
<p>Some very known speakers will be there: Joel Oleson, Andrew Connell, Ben Curry, Bob Fox, Eric Schupps, John Timney, … </p>
<p>The same conference was organized in San Diego, California begin February 2009.<br><br>They promise it's not a typical &quot;blabla&quot; conference, the point is to go beyond introductions and focus on <strong>best practices gathered by on-the-field experience</strong>. </p>
<p><em>Agenda <a href="http://www.sharepointbestpractices.co.uk/Agenda.html"><font color="#0000cc">http://www.sharepointbestpractices.co.uk/Agenda.html</font></a><br></em></p>
<p>From Joel's blog: </p>
<p><img alt="Joel Oleson" src="http://www.orbitone.com/en/blog/Lists/Photos/Joel%20Oleson.jpg"></p>
<p><em>&quot;I think the main difference that really stands out to me on this conference vs other SharePoint conferences is the prescriptive nature of the content, with the real world, case study and experience based emphasis. Speakers are grilled on making sure you cover the true WHY and not focus so much on HOW TO. The content is scrubbed to encourage depth and thought in WHY something should be done or not done.&quot; </em></p>
<p><span style="font-size:14pt"><strong><font color="#5b5454">Orbit One will be there! </font></strong></span></p>
<p>Viktor, Mel, Rik, Bart and Olivier will join the conference in London. Are you coming too? <br><a href="mailto:olivier@orbitone.com"> Let us know </a> so we can have a beer!<br></p>
<div></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Wed, 11 Feb 2009 13:39:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>New portal www.iec-iab.be has been launched</title><link>http://www.orbitone.com/en/blog/archive/2009/02/27/new-portal-www-iec-iab-be-has-been-launched.aspx</link><guid>/en/blog/archive/2009/02/27/new-portal-www-iec-iab-be-has-been-launched.aspx</guid><description><![CDATA[<div class="ExternalClass613B1F79190F48ADB5E2BA19CA2E4716">
<div><img alt="IAB" src="http://www.orbitone.com/SiteCollectionImages/Project%20Logos/Large/IAB-Big.jpg"></div>
<div> </div>
<div>On February 3rd, 2009 we have proudly launched a new website portal for the Institute of Accountants and Tax Consultants.</div>
<div> </div>
<div>This large SharePoint portal has a public section and a password protected zone with information for the Institute members and internships.</div>
<div> </div>
<div>Microsoft Dynamics CRM 4.0 is used as the central members' directory. It's integrated with SharePoint to provide an automated user account and permission management service.</div>
<div> </div>
<div><a href="http://www.orbitone.com/en/clients/Pages/IEC-IAB.aspx"><strong>Check it out</strong></a>!</div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Wed, 04 Feb 2009 18:55:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.orbitone.com/en/blog/archive/tags/CRM 4.0/default.aspx">CRM 4.0</category></item><item><title>Unit testing SharePoint</title><link>http://www.orbitone.com/en/blog/archive/2008/11/25/unit-testing-sharepoint.aspx</link><guid>/en/blog/archive/2008/11/25/unit-testing-sharepoint.aspx</guid><description><![CDATA[<div class="ExternalClassA768E9533E00415D9B45FABC3B48B197"><p>It was previously impossible to mock/fake a SharePoint server which ruled out a full TDD approach or writing unit tests. </p>
<p>Typemock are offering their new product for <a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;utm_medium=blog_4sp&amp;utm_campaign=sp_bb">unit testing SharePoint</a> called Isolator for SharePoint, for a special introduction price. it is the only tool that allows you to <a href="http://www.elilopian.com/2008/11/24/isolator-for-sharepoint-free-license/">unit test SharePoint</a> without a SharePoint server. To learn more <a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;utm_medium=blog_4sp&amp;utm_campaign=sp_bb">click here</a>.</p>
<p><strong>The first 50 bloggers </strong>who blog this text in their blog and tell us about it, will get a <font color="#ff0000">Full Isolator license, Free</font>. for rules and info <a href="http://www.elilopian.com/2008/11/24/isolator-for-sharepoint-free-license/">click here</a>.</p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Pester</dc:creator><pubDate>Tue, 25 Nov 2008 09:32:00 GMT</pubDate></item><item><title>Windows Vista image deployment</title><link>http://www.orbitone.com/en/blog/archive/2008/11/19/windows-vista-image-deployment.aspx</link><guid>/en/blog/archive/2008/11/19/windows-vista-image-deployment.aspx</guid><description><![CDATA[<div class="ExternalClassF0B302E0FF1F456AA43CE796ED53C1F5">
<div><img alt="Windows Vista" src="http://www.orbitone.com/en/blog/images/windows-vista-logo.jpg"></div>
<div>Migrating an Operating System is a major project that requires careful planning and guidance. To ease the process, Microsoft has provided a number of tools for automating Vista deployments including the Windows Automated Installation Kit (WAIK), the Microsoft Deployment Toolkit 2008 (MDT), Windows Deployment Services (WDS) and the new User State Migration Tool.</div>
<div>There are many guides available on the internet, but we felt they all miss some steps. Therefore we decided to share our internal documentation. The process for our deployment scenario includes: </div>
<ul>
<li>Prepare an USB stick with “Windows PE Boot Disk”</li>
<li>Prepare and capture an image (ImageX)</li>
<li>Manually deploy an image on a single machine (ImageX)</li></ul>
<div>This document does not cover automated deployment of images on multiple computers using tools as ADS.</div>
<div> </div>
<div><a href="http://www.orbitone.com/en/blog/documents/Windows-Vista-Deployment.pdf">download documentation</a> (pdf)<br></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lieven Meys</dc:creator><pubDate>Wed, 19 Nov 2008 09:55:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Vista/default.aspx">Vista</category></item><item><title>jQuery and Microsoft SharePoint</title><link>http://www.orbitone.com/en/blog/archive/2008/11/14/using-jquery-in-sharepoint.aspx</link><guid>/en/blog/archive/2008/11/14/using-jquery-in-sharepoint.aspx</guid><description><![CDATA[<div class="ExternalClass485B4EC24B644B648C157DF712997195">
<p><font size="3"><strong>what is jQuery?</strong></font></p>
<p>jQuery is a lightweight open source JavaScript library (only 15kb in size). </p>
<p>Just recently Microsoft and Nokia announced they will support the JQuery library in their products! Initially they wil integrate it in Visual Studio and use within Microsoft's ASP.NET AJAX framework and ASP.NET MVC Framework. </p>
<p>I'm currently integrating jQuery in MOSS 2007 sites. A first examples is our <a href="http://www.orbitone.com/EN/CLIENTS">client pages</a>. I will soon post some tips.  </p>
<p>
<table style="display:inline;font-size:1em;border-collapse:collapse">
<tbody>
<tr>
<td class="ms-rtetablecells" style="vertical-align:top">
<div><img alt="SharePoint" src="http://www.orbitone.com/en/blog/images/microsoft-office-sharepoint-logo.jpg"></div></td>
<td class="ms-rtetablecells" style="vertical-align:top">
<div><img alt="JQuery" src="http://www.orbitone.com/en/blog/images/jQuery-logo.gif"></div></td></tr></tbody></table></p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bart De Jonge</dc:creator><pubDate>Sun, 16 Nov 2008 17:05:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://www.orbitone.com/en/blog/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>VASCO Digipass and Juniper SSL VPN</title><link>http://www.orbitone.com/en/blog/archive/2008/11/16/vasco-digipass-and-juniper-ssl-vpn.aspx</link><guid>/en/blog/archive/2008/11/16/vasco-digipass-and-juniper-ssl-vpn.aspx</guid><description><![CDATA[<div class="ExternalClass9AC4955B97254F5496B6BE1A27C390C4">
<div>Some weeks ago I planned to add Digipass token authentication to a Juniper SSL VPN appliance. I expected the configuration to be quite simple. But it took me several hours of digging into the VACMAN Middleware guides, and testing several scenario's before I got it right.</div>
<div> </div>
<div><img alt="VASCO Digipass Go 3" src="http://www.orbitone.com/en/blog/Lists/Photos/vasco_digipass.gif"></div>
<div><br>I decided to make it easier for you! This document can help you get your project up-and-running quickly. Remember that I made choices in this document that might not be the best ones for your situation.</div>
<div><br>This step-by-step guide describes how to:</div>
<ul>
<li>Install Vasco Middleware on your server</li>
<li>Assign Digipass tokens</li>
<li>Configure the policies</li>
<li>Configure Juniper Secure Access SSL VPN</li>
<li>Test configuration and troubleshoot</li></ul>
<div>
<p> <a title="" href="http://www.orbitone.com/en/blog/documents/VASCO-Digipass-Configuration-Juniper-SSL-VPN.pdf"><img class="ms-asset-icon" src="http://www.orbitone.com/_layouts/IMAGES/pdf16.gif" border="0"> VASCO-Digipass-Configuration-Juniper-SSL-VPN.pdf</a></p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Olivier Mangelschots</dc:creator><pubDate>Sun, 16 Nov 2008 16:49:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/Digipass/default.aspx">Digipass</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Juniper/default.aspx">Juniper</category></item><item><title>Exchange webservice: Creating a distribution list</title><link>http://www.orbitone.com/en/blog/archive/2008/11/19/Exchange-webservice-Creating-a-distribution-list.aspx</link><guid>/en/blog/archive/2008/11/19/Exchange-webservice-Creating-a-distribution-list.aspx</guid><description><![CDATA[<div class="ExternalClass654285B029E8479CA32ED0A63DAD4DA7">
<p><span>Hello again,<br><br>Today I would like to look into creating a Distribution List through the Exchange Webservice. This is not as straight forward as creating a contact, but it should work none the less. According to <a title="Microsoft Press Inside Microsoft® Exchange Server 2007 Web Services" href="http://safari.oreilly.com/9780735623927/pref02" target="_blank">this book</a> and the documentation found on the internet, it is not possible to accomplish this. But there is a way around. Lets take the scenic route to create a Distribution List J</span> </p>
<p><span>Take a look at the code in the previous post. You can see that - in the method to create the contact - a CreateItemType is instantiated. If you look at the Items property of that variable you can see that the it expects an NonEmptyArrayOfAllItemsType which again has an Items Property. In that property we can store any ItemType we want except a Distribution List, as you can see <a title="CreateItem Operation" href="http://msdn.microsoft.com/en-us/library/aa563797(EXCHG.80).aspx" target="_blank">here</a>. But if we can not insert the DistributionList in a CreateItem, then how the f* are we going to get it to the exchange server. Well we are going to create an ItemType (base class) and use that to set all the properties needed so that exchange and outlook recognizes the Item as a distribution list. Because an ItemType is the base class, it is not provided with any of the properties we need to create a distribution list. That is where the Extended Properties come in handy. Everything needs to be set through those properties.</span> </p>
<p><span>Here are some links with more information on the properties:</span> </p>
<p>
<ul>
<li><a title="MS-OXOCNTC" href="http://msdn.microsoft.com/en-us/library/cc463907(EXCHG.80).aspx" target="_blank">[MS-OXOCNTC]: Contact Object Protocol Specification</a></li>
<li><a title="MS-OXPROPS" href="http://msdn.microsoft.com/en-us/library/cc433490(EXCHG.80).aspx" target="_blank">[MS-OXPROPS]: Exchange Server Protocols Master Property List Specification</a></li></ul>
<p>
<p><span>And you can also still use OutlookSpy which was linked in the previous post.<br>Now for some code.<br>The first thing I'd like to do is declare the path to extended field variables and set them to point to the properties we're going to use. I'll name them all starting with ptef so we can get the quickly through intellisense.</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static </span><span style="color:#2b91af">PathToExtendedFieldType </span><span style="color:black">ptefDisplayName = </span><br><span style="color:blue">   new </span><span style="color:#2b91af">PathToExtendedFieldType</span><br><span style="color:black">{</span><br><span style="color:black">  PropertyTag = </span><span style="color:#a31515">&quot;0x3001&quot;</span><span style="color:black">,</span><br><span style="color:black">  PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.String</span><br><span style="color:black">};</span><br><br><span style="color:blue">private static </span><span style="color:#2b91af">PathToExtendedFieldType </span><span style="color:black">ptefDistributionListName = </span><br><span style="color:blue">   new </span><span style="color:#2b91af">PathToExtendedFieldType</span><br><span style="color:black">{</span><br><span style="color:black">  PropertyId = 0x8053,</span><br><span style="color:black">  PropertyIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  DistinguishedPropertySetId = </span><span style="color:#2b91af">DistinguishedPropertySetType</span><span style="color:black">.Address,</span><br><span style="color:black">  DistinguishedPropertySetIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.String</span><br><span style="color:black">};</span><br><br><span style="color:blue">private static </span><span style="color:#2b91af">PathToExtendedFieldType </span><span style="color:black">ptefFileUnder = </span><br><span style="color:blue">   new </span><span style="color:#2b91af">PathToExtendedFieldType</span><br><span style="color:black">{</span><br><span style="color:black">  PropertyId = 0x8005,</span><br><span style="color:black">  PropertyIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  DistinguishedPropertySetId = </span><span style="color:#2b91af">DistinguishedPropertySetType</span><span style="color:black">.Address,</span><br><span style="color:black">  DistinguishedPropertySetIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.String</span><br><span style="color:black">};</span><br><br><span style="color:blue">private static </span><span style="color:#2b91af">PathToExtendedFieldType </span><span style="color:black">ptefMembers = </span><br><span style="color:blue">   new </span><span style="color:#2b91af">PathToExtendedFieldType</span><br><span style="color:black">  {</span><br><span style="color:black">  PropertyId = 0x8055,</span><br><span style="color:black">  PropertyIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  DistinguishedPropertySetId = </span><span style="color:#2b91af">DistinguishedPropertySetType </span><span style="color:black">.Address,</span><br><span style="color:black">  DistinguishedPropertySetIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.BinaryArray</span><br><span style="color:black">};</span><br><br><span style="color:blue">private static </span><span style="color:#2b91af">PathToExtendedFieldType </span><span style="color:black">ptefOneOffMembers = </span><br><span style="color:blue">   new </span><span style="color:#2b91af">PathToExtendedFieldType </span><br><span style="color:black">{</span><br><span style="color:black">  PropertyId = 0x8054,</span><br><span style="color:black">  PropertyIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  DistinguishedPropertySetId = </span><span style="color:#2b91af">DistinguishedPropertySetType</span><span style="color:black">.Address,</span><br><span style="color:black">  DistinguishedPropertySetIdSpecified = </span><span style="color:blue">true</span><span style="color:black">,</span><br><span style="color:black">  PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.BinaryArray</span><br><span style="color:black">};</span> </span></p>
<p><span>Let's take a look at these PathToExtendedFieldTypes:</span> 
<ul>
<li>ptefDisplayName: The name of the Distribution List</li>
<li>ptefDistributionListName: The name of the Distribution List</li>
<li>ptefFileUnder: Must be the same as the name of the Distribution List</li>
<li>ptefMembers: <span>The members extended property: This i a list of EntryIds of the objects corresponding to the members of the personal distribution list. Members of the personal distribution list can be other distribution lists, electronic addresses contained in a contact, global address list users or distribution lists, or one-off e-mail addresses. The format of each EntryId MUST be either a one-off EntryId or a Wrapped Entry Id. When setting this property, be sure to ensure its total size is less than 15,000 bytes. Since this property is a BinaryArray type it expects a string Array of Base64 strings. More info can be found in the Protocol Specifications on the MSDN site.</span></li>
<li>ptefOneOffMembers: <span>The property specifies the list of one-off EntryIds corresponding to the members of the personal distribution list. These one-off EntryIds encapsulate display names and e-mail addresses of the personal distribution list members. For each entry in this property, there should be an entry in the Members property. The size of this property must also be less than 15,000 bytes. Since this property is a BinaryArray type it expects a string Array of Base64 strings.</span></li></ul><br><span>How the member entry id and the one off member entry id strings are built can also be found in the protocol specifications.<br>I'll show you how I created the Member Entry Id:<br>First off you'll need the ItemType of the contact we created in the previous post. To do that we can use the FindItemMethod or simply return the ItemType in the previous posts CreateContact method. So let us refactor that method a little bit:</span> 
<p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static </span><span style="color:#2b91af">ContactItemType </span><span style="color:black">CreateContact(</span><span style="color:blue">string </span><span style="color:black">pGivenName, </span><span style="color:blue">string </span><span style="color:black">pSurname, </span><span style="color:#2b91af">Gender </span><span style="color:black">pGender, </span><span style="color:blue">string </span><span style="color:black">pTitle)</span><br><span style="color:black">{</span><br><span style="color:#2b91af">  ContactItemType </span><span style="color:black">retval = </span><span style="color:blue">null;</span><br><span style="color:#2b91af">  ContactItemType </span><span style="color:black">contact = </span><span style="color:blue">new </span><span style="color:#2b91af">ContactItemType</span><span style="color:black">();</span><br><span style="color:black">  contact.GivenName = pGivenName;</span><br><span style="color:black">  contact.Surname = pSurname;</span><br><span style="color:black">  contact.DisplayName = contact.Subject = pGivenName + </span><span style="color:#a31515">&quot; &quot;</span><span style="color:black"> + pSurname;</span><br><span style="color:black">  contact.EmailAddresses = </span><span style="color:blue">new </span><span style="color:#2b91af">EmailAddressDictionaryEntryType</span><span style="color:black">[1];</span><br><span style="color:#2b91af">  EmailAddressDictionaryEntryType </span><span style="color:black">email1 = </span><br><span style="color:blue">    new </span><span style="color:#2b91af">EmailAddressDictionaryEntryType</span><span style="color:black">();</span><br><span style="color:black">  email1.Key = </span><span style="color:#2b91af">EmailAddressKeyType</span><span style="color:black">.EmailAddress1;</span><br><span style="color:black">  email1.Value = </span><span style="color:#a31515">&quot;testUser@example.com&quot;</span><span style="color:black">;</span><br><span style="color:black">  contact.EmailAddresses[0] = email1;</span><br><span style="color:black">  contact.ExtendedProperty = </span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">[2];</span><br><span style="color:#2b91af">  ExtendedPropertyType </span><span style="color:black">gender = </span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">();</span><br><span style="color:black">  gender.ExtendedFieldURI = </span><span style="color:blue">new </span><span style="color:#2b91af">PathToExtendedFieldType</span><span style="color:black">();</span><br><span style="color:black">  gender.ExtendedFieldURI.PropertyTag = </span><span style="color:#a31515">&quot;0x3a4d&quot;</span><span style="color:black">;</span><br><span style="color:black">  gender.ExtendedFieldURI.PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.Short;</span><br><span style="color:black">  gender.Item = ((</span><span style="color:blue">int</span><span style="color:black">)pGender).ToString();</span><br><span style="color:#2b91af">  ExtendedPropertyType </span><span style="color:black">title = </span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">();</span><br><span style="color:black">  title.ExtendedFieldURI = </span><span style="color:blue">new </span><span style="color:#2b91af">PathToExtendedFieldType</span><span style="color:black">();</span><br><span style="color:black">  title.ExtendedFieldURI.PropertyTag = </span><span style="color:#a31515">&quot;0x3a45&quot;</span><span style="color:black">;</span><br><span style="color:black">  title.ExtendedFieldURI.PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.String;</span><br><span style="color:black">  title.Item = pTitle;</span><br><span style="color:black">  contact.ExtendedProperty[0] = gender;</span><br><span style="color:black">  contact.ExtendedProperty[1] = title;</span><br><span style="color:#2b91af">  CreateItemType </span><span style="color:black">createItem = </span><span style="color:blue">new </span><span style="color:#2b91af">CreateItemType</span><span style="color:black">();</span><br><span style="color:black">  createItem.Items = </span><span style="color:blue">new </span><span style="color:#2b91af">NonEmptyArrayOfAllItemsType</span><br><span style="color:black">    { <br>      Items = </span><span style="color:blue">new</span><span style="color:black">[] { contact }<br>    };</span><br><span style="color:#2b91af">  DistinguishedFolderIdType </span><span style="color:black">folder = </span><br><span style="color:blue">    new </span><span style="color:#2b91af">DistinguishedFolderIdType</span><span style="color:black">();</span><br><span style="color:black">  folder.Id = </span><span style="color:#2b91af">DistinguishedFolderIdNameType</span><span style="color:black">.contacts;</span><br><span style="color:#2b91af">  TargetFolderIdType </span><span style="color:black">targetFolder = </span><span style="color:blue">new </span><span style="color:#2b91af">TargetFolderIdType</span><span style="color:black">();</span><br><span style="color:black">  targetFolder.Item = folder;</span><br><span style="color:black">  createItem.SavedItemFolderId = targetFolder;</span><br><span style="color:blue">  var </span><span style="color:black">response = esb.CreateItem(createItem);</span><br><span style="color:rgb(0,128,0)">  //There is only one item in the createItem <br>  //so the line below should work in this case</span><br><span style="color:blue">  if </span><span style="color:black">(response.ResponseMessages.Items[0].ResponseClass == </span><br><span style="color:#2b91af">      ResponseClassType</span><span style="color:black">.Success)</span><br><span style="color:black">  {</span><br><span style="color:#2b91af">    ItemInfoResponseMessageType </span><span style="color:black">rmt = <br>      (</span><span style="color:#2b91af">ItemInfoResponseMessageType</span><span style="color:black">)response.ResponseMessages.Items[0];</span><br><span style="color:black">    retval = (</span><span style="color:#2b91af">ContactItemType</span><span style="color:black">)rmt.Items.Items[0];</span><br><span style="color:black">  }</span><br><span style="color:blue">  return </span><span style="color:black">retval;</span><br><span style="color:black">}</span> </span></p>
<p><span>To create a Distribution List with members you will need to find the EntryId when all we have is the ItemId and we want it in a Hex format. To achieve this I want to use the ConvertId Method on the ExchangeServiceBinding. The convertId Method accepts a ConvertIdType as a parameter. The ConvertIdType properties that are used here are the sourceIds and the destinationFormat. They kinda speak for themselves.<br><br>Lets take a look at some code again.</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static string </span><span style="color:black">CreateMemberEntryId(</span><span style="color:#2b91af">ItemType </span><span style="color:black">item)</span><br><span style="color:black">{</span><br><span style="color:blue">  byte</span><span style="color:black">[] retval = </span><span style="color:blue">new byte</span><span style="color:black">[0];</span><br><span style="color:blue">  string </span><span style="color:black">WrappedEntryIDPrefix = </span><br>      <span style="color:#a31515">&quot;00000000C091ADD3519DCF11A4A900AA0047FAA4C3&quot;</span><span style="color:black">;</span><br><span style="color:#2b91af">  ConvertIdType </span><span style="color:black">convertReq = </span><span style="color:blue">new </span><span style="color:#2b91af">ConvertIdType</span><span style="color:black">();</span><br><span style="color:black">  convertReq.DestinationFormat = IdFormatType.HexEntryId;</span><br><span style="color:black">  convertReq.SourceIds = </span><span style="color:blue">new</span><span style="color:black">[]</span><br><span style="color:black">  {</span> <span style="color:blue">     new </span><span style="color:#2b91af">AlternateIdType</span><span style="color:black">()</span><br><span style="color:black">     {</span><br><span style="color:black">        Format = </span><span style="color:#2b91af">IdFormatType</span><span style="color:black">.EntryId,</span><br><span style="color:black">        Id = item.ItemId.Id</span><br><span style="color:black">     }</span><br><span style="color:black">  };</span><br><span style="color:blue">  try</span><br><span style="color:black">  {</span><br><span style="color:#2b91af">    ConvertIdResponseType </span><span style="color:black">response = esb.ConvertId(convertReq);</span><br><span style="color:#2b91af">    ArrayOfResponseMessagesType </span><span style="color:black">aormt = response.ResponseMessages;</span><br><span style="color:#2b91af">    ResponseMessageType</span><span style="color:black">[] rmta = aormt.Items;</span><br><span style="color:blue">    foreach </span><span style="color:black">(</span><span style="color:#2b91af">ConvertIdResponseMessageType </span><span style="color:black">resp </span><span style="color:blue">in </span><span style="color:black">rmta)</span><br><span style="color:black">    {</span><br><span style="color:blue">      if </span><span style="color:black">(resp.ResponseClass == </span><span style="color:#2b91af">ResponseClassType</span><span style="color:black">.Success)</span><br><span style="color:black">      {</span><br><span style="color:#2b91af">        ConvertIdResponseMessageType </span><span style="color:black">cirmt = resp;</span><br><span style="color:#2b91af">        AlternateIdType </span><span style="color:black">myId = (cirmt.AlternateId </span><span style="color:blue">as</span><span style="color:#2b91af"> AlternateIdType</span><span style="color:black">);</span><br><span style="color:blue">        if </span><span style="color:black">(myId != </span><span style="color:blue">null</span><span style="color:black">)</span><br><span style="color:black">        {</span><br><span style="color:rgb(0,128,0)">        //Strip the last 48 bytes (96 chars) <br>        //this is actually the folderId.</span><br><span style="color:rgb(0,128,0)">        //Strip the first 7 bytes.</span><br><span style="color:rgb(0,128,0)">        //then remove 1 byte right after the actual entryId (40 bytes)</span><br><span style="color:rgb(0,128,0)">        //then the ChangeKey follows (in the rest of the string).</span><br><span style="color:#2b91af">           StringBuilder </span><span style="color:black">sb = </span><span style="color:blue">new </span><span style="color:#2b91af">StringBuilder</span><span style="color:black">();</span><br><span style="color:black">           sb.Append(WrappedEntryIDPrefix);</span><br><span style="color:black">           sb.Append(</span><span style="color:#a31515">&quot;00000000&quot;</span><span style="color:black">);</span><br><span style="color:black">           sb.Append(myId.Id.Substring(14, 84));</span><br><span style="color:black">           sb.Append(myId.Id.Substring(100, myId.Id.Length - 196));</span><br><span style="color:black">           retval = sb.ToString().ToByteArray();</span><br><span style="color:black">        }</span><br><span style="color:black">      }</span><br><span style="color:blue">      else if </span><span style="color:black">(resp.ResponseClass == </span><span style="color:#2b91af">ResponseClassType.Error</span><span style="color:black">)</span><br><span style="color:black">      {</span><br><span style="color:rgb(0,128,0)">      //TODO error Logging</span><br><span style="color:black">      }</span><br><span style="color:blue">      else</span><br><span style="color:black">      {</span><br><span style="color:rgb(0,128,0)">      //TODO warning logging</span><br><span style="color:black">      }</span><br><span style="color:black">    }</span><br><span style="color:black">  }</span><br><span style="color:blue">  catch </span><span style="color:black">(</span><span style="color:#2b91af">Exception </span><span style="color:black">e)</span><br><span style="color:black">  {</span><br><span style="color:rgb(0,128,0)">    //TODO error logging</span><br><span style="color:black">  }</span><br><span style="color:blue">  return </span><span style="color:#2b91af">Convert</span><span style="color:black">.ToBase64String(retval);</span><br><span style="color:black">}</span><br></span></p>
<p><span>You can see in previous code block that there is some comment:<br>Strip the last 48 bytes (96 chars) - this is actually the folderId.<br>Strip the first 7 bytes.<br>Then remove 1 byte right after the actual entryId (40 bytes)<br>Then the ChangeKey follows (in the rest of the string).<br><br>Don't pay to much attention to this for the moment. If you want more information about this check out <a title="MS-OXOCNTC" href="http://msdn.microsoft.com/en-us/library/cc463907(EXCHG.80).aspx" target="_blank">[MS-OXOCNTC]: Contact Object Protocol Specification</a>. The WrappedEntryIDPrefix is a fixed string except the last 2 characters. What it stands for you see in the protocol specification but in the MS-OXOMSG pdf.<br><br>They represent a bit settings which specifies what kind of email address the entry id is going to be. So if you change that you could be talking about another distribution list for instance.<br><br>We are going to use this MemberEntryId and Members extended property of a distribution list. As said before we'll need the OneOffMembers entry's also so we can put them in the same position as the MemberEntryId. The OneOffMembers entry is a bit less complicated.</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static string </span><span style="color:black">CreateOneOffMemberEntryId(</span><span style="color:#2b91af">ContactItemType </span><span style="color:black">contact)</span><br><span style="color:black">{</span><br><span style="color:blue">  var </span><span style="color:black">retval = </span><span style="color:blue">new </span><span style="color:#2b91af">List&lt;</span><span style="color:blue">byte</span><span style="color:black">&gt;();</span><br><span style="color:blue">  var </span><span style="color:black">flags = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;&quot;</span><span style="color:black">);</span><br><span style="color:blue">  var </span><span style="color:black">version = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;&quot;</span><span style="color:black">);</span><br><span style="color:blue">  var </span><span style="color:black">pad = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;&quot;</span><span style="color:black">);</span><br><span style="color:blue">  var </span><span style="color:black">muid = </span><span style="color:blue">new byte[]</span><br><span style="color:black">  {</span><br><span style="color:black">    0x81, 0x2b, 0x1f, 0xa4, 0xbe,</span><br><span style="color:black">    0xa3, 0x10, 0x19, 0x9d, 0x6e,</span><br><span style="color:black">    0x00, 0xdd, 0x01, 0x0f, 0x54, 0x02</span><br><span style="color:black">  };</span><br><span style="color:blue">  var </span><span style="color:black">wFlags = </span><span style="color:blue">new byte</span><span style="color:black">[] {0x01, 0x90};</span><br><span style="color:blue">  var </span><span style="color:black">first = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(contact.Subject + </span><span style="color:#a31515">&quot;(&quot; </span><span style="color:black">+ contact.EmailAddresses[0].Value + </span><span style="color:#a31515">&quot;)&quot;</span><span style="color:black">);</span><br><span style="color:blue">  var </span><span style="color:black">middle = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;UNKNOWN&quot;</span><span style="color:black">);</span><br><span style="color:blue">  var </span><span style="color:black">last = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(contact.EmailAddresses[0].Value);</span><br><span style="color:black">  retval.AddRange(flags);</span><br><span style="color:black">  retval.AddRange(muid);</span><br><span style="color:black">  retval.AddRange(version);</span><br><span style="color:black">  retval.AddRange(wFlags);</span><br><span style="color:black">  retval.AddRange(first);</span><br><span style="color:black">  retval.AddRange(pad);</span><br><span style="color:black">  retval.AddRange(middle);</span><br><span style="color:black">  retval.AddRange(pad);</span><br><span style="color:black">  retval.AddRange(last);</span><br><span style="color:black">  retval.AddRange(pad);</span><br><span style="color:blue">  return </span><span style="color:#2b91af">Convert</span><span style="color:black">.ToBase64String(retval.ToArray());</span><br><span style="color:black">}</span><br></span></p>
<p><span>Here we only need some actual strings from the contact to create the One Off Members entry. All the values except for wFlags, first, middle and last have fixed values. The wFlags should be changed to 0x8001 if you want to specify a distribution list. So it should read like this:</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">var </span><span style="color:black">wFlags = </span><span style="color:blue">new byte</span><span style="color:black">[] {0x01, 0x80};</span><br><span style="color:blue">var </span><span style="color:black">first = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(distributionlist.Subject);</span><br><span style="color:blue">var </span><span style="color:black">middle = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;MAPIPDL&quot;</span><span style="color:black">);</span><br><span style="color:blue">var </span><span style="color:black">last = </span><span style="color:#2b91af">Encoding</span><span style="color:black">.Unicode.GetBytes(</span><span style="color:#a31515">&quot;Unknown&quot;</span><span style="color:black">);</span><br></span></p>
<p><span>Now to actually create a distribution list with members we'll need to create an Item that has all the correct Extended Properties:</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static void </span><span style="color:black">CreateDistributionList(</span><span style="color:blue">string </span><span style="color:black">name, </span><span style="color:blue">string </span><span style="color:black">description, </span><span style="color:#2b91af">ContactItemType </span><span style="color:black">contact)</span><br><span style="color:black">{</span><br><span style="color:#2b91af">  ItemType </span><span style="color:black">list = </span><span style="color:blue">new </span><span style="color:#2b91af">ItemType</span><span style="color:black">();</span><br><span style="color:black">  list.ItemClass = </span><span style="color:#a31515">&quot;IPM.DistList&quot;</span><span style="color:black">;</span><br><span style="color:black">  list.Subject = name;</span><br><span style="color:black">  list.Body = </span><span style="color:blue">new </span><span style="color:#2b91af">BodyType </span><br><span style="color:black">   { BodyType1 = </span><span style="color:#2b91af">BodyTypeType</span><span style="color:black">.Text, <br>   Value = description };</span><br><span style="color:#2b91af">  List</span><span style="color:black">&lt;</span><span style="color:blue">string</span><span style="color:black">&gt; members = </span><span style="color:blue">new </span><span style="color:#2b91af">List</span><span style="color:black">&lt;</span><span style="color:blue">string</span><span style="color:black">&gt;();</span><br><span style="color:#2b91af">  List</span><span style="color:black">&lt;</span><span style="color:blue">string</span><span style="color:black">&gt; oneOffMembers = </span><span style="color:blue">new </span><span style="color:#2b91af">List</span><span style="color:black">&lt;</span><span style="color:blue">string</span><span style="color:black">&gt;();</span><br><span style="color:black">  members.Add(CreateMemberEntryId(contact));</span><br><span style="color:black">  members.Add(CreateOneOffMemberEntryId(contact));</span><br><span style="color:#2b91af">  List</span><span style="color:black">&lt;</span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">&gt; eProps = </span><br><span style="color:blue">    new </span><span style="color:#2b91af">List</span><span style="color:black">&lt;</span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">&gt;();</span><br><span style="color:black">  eProps.Add(</span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><br><span style="color:black">  {</span><br><span style="color:black">    ExtendedFieldURI = ptefDisplayName,</span><br><span style="color:black">    Item = name</span><br><span style="color:black">  });</span><br><span style="color:black">  eProps.Add(</span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><br><span style="color:black">  {</span><br><span style="color:black">    ExtendedFieldURI = ptefDistributionListName,</span><br><span style="color:black">    Item = name</span><br><span style="color:black">  });</span><br><span style="color:black">  eProps.Add(</span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><br><span style="color:black">  {</span><br><span style="color:black">    ExtendedFieldURI = ptefFileUnder,</span><br><span style="color:black">    Item = name</span><br><span style="color:black">  });</span><br><span style="color:black">  eProps.Add(</span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><br><span style="color:black">  {</span><br><span style="color:black">    ExtendedFieldURI = ptefMembers,</span><br><span style="color:black">    Item = </span><span style="color:blue">new </span><span style="color:#2b91af">NonEmptyArrayOfPropertyValuesType</span><br><span style="color:black">    {</span><br><span style="color:black">      Items = members.ToArray()</span><br><span style="color:black">    }</span><br><span style="color:black">  });</span><br><span style="color:black">  eProps.Add(</span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><br><span style="color:black">  {</span><br><span style="color:black">    ExtendedFieldURI = ptefOneOffMembers,</span><br><span style="color:black">    Item = </span><span style="color:blue">new </span><span style="color:#2b91af">NonEmptyArrayOfPropertyValuesType</span><br><span style="color:black">  {</span><br><span style="color:black">    Items = oneOffMembers.ToArray()</span><br><span style="color:black">  }</span><br><span style="color:black">  });</span><br><span style="color:black">  list.ExtendedProperty = eProps.ToArray();</span><br><span style="color:black">}</span></span></p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:black"></span><strong><font color="#ff0000">UPDATE</font></strong></span></p>
<p><font color="#000000">I recently noticed that their are some errors in the CreateMemberEntryId. The best method is to retrieve the contact from the exchange store and ask for the entryId in the extended properties. In my experience this has much more performance and the created WrappedEntryId is correct. So the code will be more like following:</font></p>
<div style="font-size:7.5pt;background:white;color:black;font-family:Courier New"><span style="color:blue">private</span> <span style="color:blue">string</span> GetMemberEntryId(<span style="color:#2b91af">ItemType</span> item, <span style="color:#2b91af">EmailAddressKeyType</span> emailAddressKey)<br>    {<br>      <span style="color:blue">if</span> (item == <span style="color:blue">null</span>) <br><span style="color:blue">        throw</span> <span style="color:blue">new</span> <span style="color:#2b91af">ArgumentNullException</span>(<span style="color:#a31515">&quot;item&quot;</span>);<br> <br>      <span style="color:blue">string</span> WrappedEntryIDPrefix = <span style="color:blue">null</span>;<br>      <span style="color:blue">if</span> (item <span style="color:blue">is</span> <span style="color:#2b91af">ContactItemType</span>)<br>      {<br>        <span style="color:blue">switch</span> (emailAddressKey)<br>        {<br>          <span style="color:blue">case</span> <span style="color:#2b91af">EmailAddressKeyType</span>.EmailAddress2:<br>            WrappedEntryIDPrefix = <span style="color:#a31515">&quot;D3&quot;</span>;<br>            <span style="color:blue">break</span>;<br>          <span style="color:blue">case</span> <span style="color:#2b91af">EmailAddressKeyType</span>.EmailAddress3:<br>            WrappedEntryIDPrefix = <span style="color:#a31515">&quot;E3&quot;</span>;<br>            <span style="color:blue">break</span>;<br>          <span style="color:blue">default</span>:<br>            WrappedEntryIDPrefix = <span style="color:#a31515">&quot;C3&quot;</span>;<br>            <span style="color:blue">break</span>;<br>        }<br>      }<br>      <span style="color:blue">if</span> (item <span style="color:blue">is</span> <span style="color:#2b91af">DistributionListType</span>) <br>        WrappedEntryIDPrefix = <span style="color:#a31515">&quot;B4&quot;</span>;<br> <br>      WrappedEntryIDPrefix = <span style="color:#a31515">&quot;00000000C091ADD3519DCF11A4A900AA0047FAA4&quot;</span> + WrappedEntryIDPrefix;<br>      <span style="color:blue">var</span> retval = WrappedEntryIDPrefix + <br>         <span style="color:#2b91af">Convert</span>.FromBase64String(item.ExtendedProperty<br>         [item.ExtendedProperty.Length - 1].Item<br>         .ToString()).ToMyString();<br>      <span style="color:blue">return</span> <span style="color:#2b91af">Convert</span>.ToBase64String(retval.ToByteArray());<br>    }<br></div><br>The ToMyString() extension method: <br>
<div style="font-size:7.5pt;background:white;color:black;font-family:Courier New"><span style="color:blue">public</span> <span style="color:blue">static</span> <span style="color:blue">string</span> ToMyString(<span style="color:blue">this</span> <span style="color:blue">byte</span>[] bytes)<br>    {<br>      <span style="color:#2b91af">StringBuilder</span> sb = <span style="color:blue">new</span> <span style="color:#2b91af">StringBuilder</span>();<br> <br>      bytes.ForEach(b =&gt; sb.Append(b.ToString(<span style="color:#a31515">&quot;X&quot;</span>).PadLeft(2,<span style="color:#a31515">'0'</span>).ToUpper()));<br> <br>      <span style="color:blue">return</span> sb.ToString();<br>    }</div>
<div style="font-size:7.5pt;background:white;color:black;font-family:Courier New"> </div><span>
<p><strong><font color="#ff0000">UPDATE 2:</font></strong></p>
<p><font color="#000000">Microsoft recently released the <a href="http://support.microsoft.com/kb/952580">Update Rollup 4 for Exchange Server 2007 Service Pack 1 </a></font></p>
<p>In this document you will see a link that directs you to the <a href="http://support.microsoft.com/kb/957133/">description of improvements in functionality that occur in Exchange Web Services operations</a></p>
<p>It reads: When you use this operation, it returns items that do not have a strong schema type as &quot;messages&quot; instead of as &quot;items.&quot;</p>
<p>From this we can deduce that the code above has to change a bit. In the createDistributionList we used an ItemType. This has to change to a MessageType. An other thing we need to set is the MessageDispositionType to the CreateItem. This will be SaveOnly in most cases (especially when we are talking about distribution lists).</p>
<p> </p></span>
<p><span>As you can probably see in the code this is not ready to ship...<br><br>There is alot more exception handling to be done and so forth, but in order to keep this document a bit more to the point I've skipped those parts.</span> </p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Mon, 06 Oct 2008 14:50:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Exchange webservice/default.aspx">Exchange webservice</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Visual Studio/default.aspx">Visual Studio</category></item><item><title>Exchange webservice: Adding a contact</title><link>http://www.orbitone.com/en/blog/archive/2008/11/19/Exchange-webservice-adding-a-contact.aspx</link><guid>/en/blog/archive/2008/11/19/Exchange-webservice-adding-a-contact.aspx</guid><description><![CDATA[<div class="ExternalClass76D5FEED3BD14BF09E3C08164FE7A9C9">
<p><span>During the past 2 weeks or so I've been experimenting with the Exchange Webservice (in Exchange 2007 SP1).</span> </p>
<p><span>I've been trying to create a contact in the contacts folder of a user (testuser). I came accross some problems while trying to accomplish this. Specifically when I tried to set properties that are actually used by Outlook (client properties) and which are not necessarily used by Exchange 2007. But you can still access and even create properties all you want. Lets kick this blog off with the basics of working with the ews (Exchange WebService).</span> </p>
<p><span>Some ground work:</span> </p>
<ul>
<li>Create a new console app. 
<li>Add the Web Reference to your Exchange Webservice (eg.: http://myMailServer/ews/Exchange.Asmx) and lets name it ExchangeService.</li>
<li>Add the using to the ExchangeService</li></li></ul>
<p><span>Now we can go and add a private member</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static</span> <span style="color:#2b91af">ExchangeServiceBinding</span> <span style="color:black">esb;</span> </span></p>
<p><span>Initialize the ExchangeServiceBinding. You can insert credentials here in case of a https connection as seen in the example below.</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:black">esb = </span><span style="color:blue">new </span><span style="color:#2b91af">ExchangeServiceBinding</span><br><span style="color:black">{</span><br><span style="color:black">   Credentials = </span><span style="color:blue">new </span><span style="color:#2b91af">NetworkCredential</span><br><span style="color:black">   {</span><br><span style="color:black">      Domain = </span><span style="color:#a31515">&quot;example.com&quot;</span><span style="color:black">,</span><br><span style="color:black">      UserName = </span><span style="color:#a31515">&quot;testUser&quot;</span><span style="color:black">,</span><br><span style="color:black">      Password = </span><span style="color:#a31515">&quot;p455w0rd&quot;</span><br><span style="color:black">   },</span><br><span style="color:black">   Url = </span><span style="color:#a31515">https://192.168.2.143/EWS/Exchange.asmx</span><br><span style="color:black">};</span><br><span style="color:black">esb.RequestServerVersionValue = </span><span style="color:blue">new </span><span style="color:#2b91af">RequestServerVersion</span><span style="color:black">();</span><br><span style="color:black">esb.RequestServerVersionValue.Version = </span><br><span style="color:#2b91af">   ExchangeVersionType</span><span style="color:black">.Exchange2007_SP1;</span> </span></p>
<p><span>As you can see in above code you need to set the server version, please do not ommit these 2 lines. If you do your code probably won't work. In some cases you will get an error like this: </span></p>
<p><span>System.Web.Services.Protocols.SoapException: The request is valid but does not specify the correct server version in the RequestServerVersion SOAP header. Ensure that the RequestServerVersion SOAP header is set with the correct RequestServerVersionValue.</span></p>
<p><span>Now that we have the base of the application we can start concentrating on creating a contact, so we're going to create a method that does just that for us.</span></p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:blue">private static void </span><span style="color:black">CreateContact (</span><span style="color:blue">string </span><span style="color:black">givenName, </span><span style="color:blue">string </span><span style="color:black">surname)</span><br><span style="color:black">{</span><br><span style="color:blue">  var</span><span style="color:black"> contact = </span><span style="color:blue">new </span><span style="color:#2b91af">ContactItemType</span><span style="color:black">();</span><br><span style="color:black">  contact.GivenName = givenName;</span><br><span style="color:black">  contact.Surname = surname;</span><br><span style="color:black">  contact.DisplayName = contact.Subject = givenName + </span><span style="color:#a31515">&quot; &quot;</span><span style="color:black"> + surname;</span><br><span style="color:black">  contact.EmailAddresses = </span><span style="color:blue">new </span><span style="color:#2b91af">EmailAddressDictionaryEntryType</span><span style="color:black">[1];</span><br><span style="color:blue">  var </span><span style="color:black">email1 = </span><span style="color:blue">new </span><span style="color:#2b91af">EmailAddressDictionaryEntryType</span><span style="color:black">();</span><br><span style="color:black">  email1.Key = </span><span style="color:#2b91af">EmailAddressKeyType</span><span style="color:black">.EmailAddress1;</span><br><span style="color:black">  email1.Value = </span><span style="color:#a31515">&quot;testUser@example.com&quot;</span><span style="color:black">;</span><br><span style="color:black">  contact.EmailAddresses[0] = email1;</span><br><span style="color:blue">  var </span><span style="color:black">createItem = </span><span style="color:blue">new </span><span style="color:#2b91af">CreateItemType</span><span style="color:black">();</span><br><span style="color:black">  createItem.Items = </span><span style="color:blue">new </span><span style="color:#2b91af">NonEmptyArrayOfAllItemsType</span><br><span style="color:black">    {</span><br><span style="color:black">       Items = </span><span style="color:blue">new</span><span style="color:black">[] { contact }</span><br><span style="color:black">    };</span><br><span style="color:blue">  var </span><span style="color:black">folder = </span><span style="color:blue">new </span><span style="color:#2b91af">DistinguishedFolderIdType</span><span style="color:black">();</span><br><span style="color:black">  folder.Id = </span><span style="color:#2b91af">DistinguishedFolderIdNameType</span><span style="color:black">.contacts;</span><br><span style="color:blue">  var </span><span style="color:black">targetFolder = </span><span style="color:blue">new </span><span style="color:#2b91af">TargetFolderIdType</span><span style="color:black">();</span><br><span style="color:black">  targetFolder.Item = folder;</span><br><span style="color:black">  createItem.SavedItemFolderId = targetFolder;</span><br><span style="color:blue">  var </span><span style="color:black">response = esb.CreateItem(createItem);</span><br><span style="color:black">}</span> </span></p>
<p><span>You'll see the contact being created in you testUser's contacts folder.<br>If you don't fill out the DisplayName, the contact will complain about it in outlook when you open the contact and then close it without editing anything. Outlook will try to save the contact item although we did not change anything.</span> </p>
<p><span>This was fairly easy to achieve, but just try to fill out all the contact's porperties you need. You'll soon find out that you need to use Extended Properties, because not all the properties are available on the ContactItemType type. I'll show you how to add 2 Extended Properties. Firstly the Gender of the contact and secondly the Title. Insert following somewhere before the instantiation of the CreateItemType createItem.</span> </p>
<p><span style="font-size:7.5pt;font-family:'Courier New'"><span style="color:black">contact.ExtendedProperty = </span><span style="color:black"> </span><span style="color:blue">new</span><span style="color:black"> </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">[2];</span><br><span style="color:blue">var </span><span style="color:black">gender = </span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">();</span><br><span style="color:black">gender.ExtendedFieldURI = </span><span style="color:blue">new </span><span style="color:#2b91af">PathToExtendedFieldType</span><span style="color:black">();</span><br><span style="color:black">gender.ExtendedFieldURI.PropertyTag = </span><span style="color:#a31515">&quot;0x3a4d&quot;</span><span style="color:black">;</span><br><span style="color:black">gender.ExtendedFieldURI.PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.Short;</span><br><span style="color:black">gender.Item = </span><span style="color:#a31515">&quot;1&quot;</span><span style="color:black">;</span><br><span style="color:blue">var </span><span style="color:black">title = </span><span style="color:blue">new </span><span style="color:#2b91af">ExtendedPropertyType</span><span style="color:black">();</span><br><span style="color:black">title.ExtendedFieldURI = </span><span style="color:blue">new </span><span style="color:#2b91af">PathToExtendedFieldType</span><span style="color:black">();</span><br><span style="color:black">title.ExtendedFieldURI.PropertyTag = </span><span style="color:#a31515">&quot;0x3a45&quot;</span><span style="color:black">;</span><br><span style="color:black">title.ExtendedFieldURI.PropertyType = </span><span style="color:#2b91af">MapiPropertyTypeType</span><span style="color:black">.String;</span><br><span style="color:black">title.Item = </span><span style="color:#a31515">&quot;Dr.&quot;</span><span style="color:black">;</span><br><span style="color:black">contact.ExtendedProperty[0] = gender;</span><br><span style="color:black">contact.ExtendedProperty[1] = title;</span><br></span></p>
<p><span>As you can see both these Extended Properties have a PropertyTag. This is not always the case. In other properties you'll need to use the PropertyId and DistinguisedPropertyId, but we'll see samples of that in a later post in which I am going to discuss how you need to create a DistributionList with the contact created here as the only member.</span> </p>
<p><span>The Property Tags and Ids can be found in the pdf's concerning the <a title="exchange protocols on msdn" href="http://msdn.microsoft.com/en-us/library/cc425499(EXCHG.80).aspx" target="_blank">exchange protocol on MSDN</a> or through a nice tool that helped me alot these past weeks: <a title="OutlookSpy" href="http://www.dimastr.com/outspy/" target="_blank">OutlookSpy</a>.</span></p>
<p><span>That's it for now. I hope it was clear and helpfull in some way. If you have questions or remarks, do not hesitate to post a comment.</span> </p></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wim De Coninck</dc:creator><pubDate>Thu, 25 Sep 2008 16:05:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Visual Studio/default.aspx">Visual Studio</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Exchange webservice/default.aspx">Exchange webservice</category></item><item><title>OAuth for authorization</title><link>http://www.orbitone.com/en/blog/archive/2008/07/22/post-5.aspx</link><guid>/en/blog/archive/2008/07/22/post-5.aspx</guid><description><![CDATA[<div class="ExternalClassAB212333502542B195ED23A82A518F9B">
<div>
<p>What OpenID is for authentication is OAuth for authorization. So much for the probably over simplified intro.</p>
<p>The OAuth protocol is getting some momentum but is currently not so &quot;big&quot; as OpenID. Still, it's being mentioned more and more.</p>
<p>A use case scenario :<br>OAuth is defined as a “an open protocol to allow secure API authentication in a simple and standard method”. Don’t be tempted to think that OAuth implies “open authentication”. It doesn’t. It is closer to “open authorization”. Let’s say you are registering as a delegate on a conference website. With OAuth it is possible for the conference website to automatically add the event to your google calendar or yahoo calendar with your consent (assuming google and yahoo support OAuth). How does it work ? Well, once you decide to let the conference website add an event to your google calendar, you get redirected to google. On google , you explicitly authorize the conference website to modify your calendar. After this authorization, the conference website will have permission to modify your calendar data.</p>
<p>More info<br><a href="http://portalzone.blogspot.com/2007/12/openid-oauth-complimentary-or-competing.html">http://portalzone.blogspot.com/2007/12/openid-oauth-complimentary-or-competing.html</a></p>
<p><a href="http://oauth.net/">http://oauth.net</a></p></div></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bart De Jonge</dc:creator><pubDate>Tue, 22 Jul 2008 16:57:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/OpenID/default.aspx">OpenID</category><category domain="http://www.orbitone.com/en/blog/archive/tags/OAuth/default.aspx">OAuth</category></item><item><title>.NET 3.5, Visual Studio and TFS SP1 released</title><link>http://www.orbitone.com/en/blog/archive/2008/07/22/NET-3.5-released.aspx</link><guid>/en/blog/archive/2008/07/22/NET-3.5-released.aspx</guid><description><![CDATA[<div class="ExternalClass21CF9EBDE5EE4E0F97527CDEF8D3C626">
<div>This includes among other things : </div>
<ul>
<li>The Entity Framework </li>
<li>ADO.NET Data Services</li>
<li>Dynamic Data</li></ul>
<div>Good to know : SQL Server 2008 requires VS 2008 SP1 to be installed (if VS is already present on the machine)</div>
<div> </div>
<div>Practical info about the upgrades</div>
<div><a href="http://blogs.msdn.com/bharry/archive/2008/08/11/vs-vsts-tfs-net-3-5-sp1-is-shipping.aspx">http://blogs.msdn.com/bharry/archive/2008/08/11/vs-vsts-tfs-net-3-5-sp1-is-shipping.aspx</a></div>
<div> </div>
<div>More info about what is included in the service pack:</div>
<ul>
<li><a href="http://blogs.msdn.com/webdevtools/archive/2008/08/11/web-development-updates-in-visual-studio-2008-sp1.aspx">http://blogs.msdn.com/webdevtools/archive/2008/08/11/web-development-updates-in-visual-studio-2008-sp1.aspx</a></li>
<li><a href="http://oakleafblog.blogspot.com/2008/08/joys-of-installing-visual-studio-2008.html">http://oakleafblog.blogspot.com/2008/08/joys-of-installing-visual-studio-2008.html</a></li>
<li><a href="http://weblogs.asp.net/guybarrette/archive/2008/08/07/sql-server-2008-requires-vs-20008-sp1.aspx">http://weblogs.asp.net/guybarrette/archive/2008/08/07/sql-server-2008-requires-vs-20008-sp1.aspx</a></li>
<li><a href="http://blogs.msdn.com/scothu/archive/2008/08/11/dynamic-data-rtm-is-released.aspx">http://blogs.msdn.com/scothu/archive/2008/08/11/dynamic-data-rtm-is-released.aspx</a></li>
<li><a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/08/11/Download-VS2008-SP1-Net-Framework-35-SP1.aspx">http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/08/11/Download-VS2008-SP1-Net-Framework-35-SP1.aspx</a></li></ul></div>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bart De Jonge</dc:creator><pubDate>Tue, 22 Jul 2008 16:56:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Team Foundation Server/default.aspx">Team Foundation Server</category><category domain="http://www.orbitone.com/en/blog/archive/tags/Visual Studio/default.aspx">Visual Studio</category></item><item><title>SQL Server 2008 is ready</title><link>http://www.orbitone.com/en/blog/archive/2008/07/22/SQL-Server-2008-is-ready.aspx</link><guid>/en/blog/archive/2008/07/22/SQL-Server-2008-is-ready.aspx</guid><description><![CDATA[<div class="ExternalClass3CC376C38E1F4122AEC623258FB862EB">SLQ Server is RTM = Release To Manufacturing which means only the CD has to be pressed and packaged. It can already be downloaded from MDDN</div>
<div class="ExternalClass3CC376C38E1F4122AEC623258FB862EB"> </div>
<div class="ExternalClass3CC376C38E1F4122AEC623258FB862EB">New features that I think are worth mentioning :</div>
<div class="ExternalClass3CC376C38E1F4122AEC623258FB862EB">
<ul>
<li><strong>Resoure governer<br></strong>Example : users get 70% of the CPU time, the rest 30%. This means that when no users are active the rest gets 100% CPU time. Only when the 2 groups are avtive at the same time Resoure Governer will kick in and devide the CPU time<br></li>
<li><strong>IntelliSense when typing sql<br></strong>... Finaly. <br></li>
<li><strong>Change Tracking<br></strong>Example: An external site wants to subscribe to events. By using Change Tracking you can sent only the updates/delete/creates that happen agter the last synchronisation. In the past you have to program this all yourself, now this is not necessary anymore.</li></ul></div>
<p> </p>]]></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bart De Jonge</dc:creator><pubDate>Tue, 22 Jul 2008 10:29:00 GMT</pubDate><category domain="http://www.orbitone.com/en/blog/archive/tags/SQL Server/default.aspx">SQL Server</category></item></channel></rss>
