tag:blogger.com,1999:blog-71251857580967571752024-03-13T18:50:10.935+01:00Around Sharepoint - Alexandre Joly's Blog12 years of work within the Sharepoint world : let's talk about technical and functional thoughts around Sharepoint. Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-7125185758096757175.post-48716855402586382222017-03-02T15:20:00.001+01:002017-03-02T15:20:05.756+01:00Bye bye - English Blog... (Re)bonjour le français!<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Trebuchet MS, sans-serif;">Hi all, </span><br />
<span style="font-family: Trebuchet MS, sans-serif;">it's been a while that I haven't published anything on this blog and that will sadly be the last time, I'm publishing something ... in english...</span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;">The reason is simple. </span><br />
<span style="font-family: Trebuchet MS, sans-serif;">In France, we have a really proud culture and our language is part of this pride. Our business is mainly done in French, and many people don't want or can't speak english. </span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;">Studies have showed that a french person who don't speak perfectly english won't spend a lot of time to read an article in english UNLESS... he reallly needs it! </span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;">My goals now, will really be to help the french market to rise on some problematic, I'm meeting in my professional life, and along with my role as a technical evangelist @ Nintex. I realize that there are not many serious articles on some topics in french, and that should be my role to fill the gap. Sharepoint, O365, workflow, processes, forms... eveything is going to be in french now :)</span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;">But you can still learn french, it will be easier that understanding a french who tries to speak english!</span><br />
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span>
<span style="font-family: Trebuchet MS, sans-serif;"><br /></span></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-27210035286766288822015-02-26T12:21:00.001+01:002015-02-26T16:30:23.379+01:00Integrate AzureDataMarket API inside your Nintex workflow using JSON service.<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<br />
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Last week, I wanted to integrate more services in a demo Nintex workflow.There are a lot of services already existing, but obviously it was too easy to use what already exists. It is more fun to try to use what hasn't been done before!</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""></span></span></div>
<h1 style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Nintex Live Catalog</span></span></h1>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Nintex Live natively provide a huge set of actions (around 150 at this date) from a large range of services providers including: </span></span></div>
<ul style="text-align: left;">
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Twitter</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Facebook</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Office 365</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Sharepoint</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Yammer</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">WordPress</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">DropBox</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Bing services (Translate, search, directions…)</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Docusign</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Dynamics CRM</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Salesforce</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Google Drive</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Linkedin</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">MailChimp</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Azure</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">OneDrive</span></span></li>
<li><div>
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">…</span></span></div>
<span style="font-family: "Trebuchet MS",sans-serif;"></span></li>
</ul>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">That usually fits most of your need. But what if you need more than that? What if you have identified a service somewhere that you have to consume that is not yet available on the Nintex Catalog?</span></span></div>
<div style="text-align: left;">
<br /></div>
<h1 style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">User Defined Actions</span></span></h1>
<div style="text-align: left;">
<a href="http://4.bp.blogspot.com/-9u4m0t-6Eu0/VO8P0Wt_46I/AAAAAAAALA4/gugg3jiHDtQ/s1600/NintexWorfklowUDASettingMenu.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-9u4m0t-6Eu0/VO8P0Wt_46I/AAAAAAAALA4/gugg3jiHDtQ/s1600/NintexWorfklowUDASettingMenu.png" height="200" width="191" /></a><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">To make the things simple, you will have to design your own UDA (User Defined Actions) on Nintex. The UDA are a super easy way of creating a packaged features based on simple Nintex set of actions. </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Inside the Site <b>Setting <i>page</i></b> of your site, under the <b><i>Nintex Workflow</i></b> menu, you will find the <b>Manage User Defined Actions. </b>From there you will be able to create your own. </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">You will be able to define input parameters and output parameters. The user who will use your action will only see those parameters and not the logic that is embedded inside.</span></span></div>
<div style="text-align: left;">
<a href="http://4.bp.blogspot.com/-WEbkNRuHRow/VO8PzgNfPcI/AAAAAAAALA0/47RSurJXtjc/s1600/NWFActions.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://4.bp.blogspot.com/-WEbkNRuHRow/VO8PzgNfPcI/AAAAAAAALA0/47RSurJXtjc/s1600/NWFActions.png" height="320" width="168" /></a><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Once you have created an UDA, you just have to publish it to your site. It will then be available to all your workflows (there is a section called User Defined Actions in your Nintex actions panel). </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">If you develop your UDA on your own development environment, you can export the entire UDA (it will generate an .uda file that you can reimport on another environment).</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">When you plan to create your UDAs, note that you can't have an UDA embedded in another UDA. </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">The UDA feature is actually only available on the On-Premise version of Nintex Workflow. Nevertheless, it will be available later this year for the O365 version.</span></span></div>
<div style="text-align: center;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> </span></span></div>
<div style="text-align: left;">
<br /></div>
<h1 style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Azure Marketplace</span></span></h1>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">The Azure DataMarket's marketplace exposes data using Odata feeds. The Open Data Protocol (ODate) helps you unsiloting your data. On the platform you have access to hundreds of different services. What you need to access it? Just an account. </span></span></div>
<ol style="text-align: left;">
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b>Create an account on</b><br /> <a href="https://datamarket.azure.com/">https://datamarket.azure.com/</a>.</span></span></li>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Ok now you have an account, and what? Just parse all the possibility of the marketplace! But how to embed those data and services in your Nintex workflow?</span></span></div>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b>Subscribe to a service or an application </b></span></span></li>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">In the Azure Datamarket, find the application that suits you. You have application for everything. </span></span></div>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b>Register your application on the datamarket</b></span></span></li>
</ol>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Why would you need to register your application? Because you want to get some specific credentials for your application. You have two ways of authenticating your application HTTP basic/OAuth. In this case, we will use the OAuth. Llearn more: <a href="https://msdn.microsoft.com/en-gb/library/azure/gg193415.aspx">everything on the authentication</a> and <a href="https://msdn.microsoft.com/en-gb/library/azure/gg193416.aspx">implement OAuth in your marketplace app</a>.</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">From there, you will have to register your application using this link <a href="https://datamarket.azure.com/developer/applications">https://datamarket.azure.com/developer/applications</a>, reaching the following page: </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b><br /> </b></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-0tetPbW3iBE/VO8QVs7DTII/AAAAAAAALBM/1_ESrETOBEg/s1600/DatamarketRegister.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-0tetPbW3iBE/VO8QVs7DTII/AAAAAAAALBM/1_ESrETOBEg/s1600/DatamarketRegister.png" height="198" width="320" /></a></div>
<div style="margin-left: 36pt; text-align: center;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b><br /> </b></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Registering your application will allow you to retrieve two really important information: <i>ClientID</i> and <i>ClientSecret</i>. They are the user/password to authenticate on the service. When authenticated you will retrieve your <i>access_token</i> that you will need for accessing the service itself.</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Now you have everything to start!</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">You will find here <a href="https://msdn.microsoft.com/en-us/library/gg193414.aspx">https://msdn.microsoft.com/en-us/library/gg193414.aspx</a> everything you need to know about the datasets queries on the market place.</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> </span></span></div>
<h1 style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Using JSON service on Nintex</span></span></h1>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">From the previous chapter you have now your ClientID and ClientSecret, so now what should you do with it? Just call the authentication web service and retrieve your access_token!</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">That seems easy to do... The only problem is that Nintex "W<i>eb request"</i> action doesn't handle the JSON! This is actually the entire topic of this article! Let's build a JSON parser inside an UDA!</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">This is how we gonna do it:</span></span><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> </span></span></div>
<ol style="text-align: left;">
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">Build your workflow, and add a <i>Web Request </i>action into it.</span></span></li>
<ul style="margin-left: 40px; text-align: left;">
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">The authentication service URL is : <a href="https://datamarket.accesscontrol.windows.net/v2/OAuth2-13">https://datamarket.accesscontrol.windows.net/v2/OAuth2-13</a><br /> </span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">No UserName/password</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><span style="text-decoration: underline;">Content type</span>: application/x-www-form-urlencoded</span></span></li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><span style="text-decoration: underline;">Header: </span><i>grant_type=client_credentials&client_id={WorkflowVariable:ClientID}&client_secret={WorkflowVariable:ClientSecret}&scope=XXXXXXXXXXXXXXXXXX</i></span></span></li>
</ul>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">(in this case I admit that you have created 2 workflow cariables : ClientID and ClientSecret and that you have put the value to the value of your registered application)</span></span></div>
<br /><div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> You will obtain something like : </span></span></div>
<div style="text-align: center;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-nNE6YH1209E/VO8PzuetPsI/AAAAAAAALBE/yPT4D7E0lDY/s1600/NWF_WebServiceOAuth.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-nNE6YH1209E/VO8PzuetPsI/AAAAAAAALBE/yPT4D7E0lDY/s1600/NWF_WebServiceOAuth.png" height="400" width="392" /></a></div>
<div style="margin-left: 36pt; text-align: center;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""></span></span></div>
<div style="margin-left: 36pt; text-align: left;">
<br /></div>
<div style="margin-left: 36pt; text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">The problem is now you will have to handle the results in order to retrieve the <i>access_token</i>.</span></span></div>
<br />
<br />
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">For this example I have used the bing translation API. Here is what the answer will look like : </span></span></li>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> </span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">{"token_type":"<a href="http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0">http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0</a>","access_token":"http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=XXXXXXXX&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&Audience=http%3a%2f%2fapi.microsofttranslator.com&ExpiresOn=1424878406&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=WM6JE6HyhxZXV0ICcfaWVzDUIyEe78VuPnoN92HHIrY%3d","expires_in":"600","scope":"<a href="http://api.microsofttranslator.com/">http://api.microsofttranslator.com</a>"}</span></span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><br /> The format of the JSON is {"key":"value","key2":"value2"}.</span></span><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> </span></span></div>
<br />
<br />
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">I could have done it on a single UDA but the purpose of an UDA is to be reusable, and because there could be other usage for them, I have split in two separated UDA.</span></span></li>
<br />
<ul style="margin-left: 40px; text-align: left;">
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b>JSON_Stream_parser.uda : </b> this one takes a stream as an input and provides as an output two collections : the keys, and the values </span></span><br />
<b>Download the nwf file : </b>
<iframe frameborder="0" height="120" scrolling="no" src="https://onedrive.live.com/embed?cid=2114F501EA1BF84C&resid=2114F501EA1BF84C%2173877&authkey=AMuSb4TrbrI9l_I" width="98"></iframe><br />
</li>
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""><b>KeyCollection_search.uda : </b>This one takes two collections in input (in our case they will be the output of the previous UDA) and a "KeyToFind" and will output the value.<b></b></span></span><span style="font-family: "Trebuchet MS",sans-serif;"></span><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> </span></span><br />
<b>Download the nwf file : </b>
<iframe frameborder="0" height="120" scrolling="no" src="https://onedrive.live.com/embed?cid=2114F501EA1BF84C&resid=2114F501EA1BF84C%2173890&authkey=ALMH1h52o7qGmYY" width="98"></iframe><br />
<b>Download the nwf file : </b><iframe frameborder="0" height="120" scrolling="no" src="https://onedrive.live.com/embed?cid=2114F501EA1BF84C&resid=2114F501EA1BF84C%2173921&authkey=AH0-DS08RYnyEpc" width="98"></iframe></li>
</ul>
<br />
<br />
<li><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns="">From the last KeyCollection_search, I search <i>access_token. </i>When you get this you have to add "Bearer :" before the access_token (don't forget the spaces!) and then add it in the header of the webservice call as "authorization". In my Bing translation API case, I will call</span></span><span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> <br /><i>http://api.microsofttranslator.com/v2/Http.svc/Translate?text=<a href="javascript:void(0);"><span style="color: red;">TextToTranslate</span></a>&from=<a href="javascript:void(0);"><span style="color: red;">SourceLanguage</span></a>&to=<a href="javascript:void(0);"><span style="color: red;">TargetLanguage</span></a> </i>and add an "Authorization" Header and set it with this access_token<i></i></span></span><div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-NMI4RqqmSCU/VO8P0EMHDGI/AAAAAAAALA8/yuUUaJy6ODE/s1600/NWF_WebServiceTranslate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-NMI4RqqmSCU/VO8P0EMHDGI/AAAAAAAALA8/yuUUaJy6ODE/s1600/NWF_WebServiceTranslate.png" height="395" width="400" /></a></div>
</li>
<li><div style="text-align: center;">
<span style="font-family: "Trebuchet MS",sans-serif;"><span xmlns=""> </span></span><span style="font-family: "Trebuchet MS",sans-serif;">Finally here is what the (simplified) version of the workflow looks like</span><br />
<br />
<a href="http://4.bp.blogspot.com/-HEqxyXROhB4/VO8Pzu7LpJI/AAAAAAAALAw/uoeVDtOtGRc/s1600/NWFTranslate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-HEqxyXROhB4/VO8Pzu7LpJI/AAAAAAAALAw/uoeVDtOtGRc/s1600/NWFTranslate.png" height="320" width="99" /> </a><br />
<br />
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;">As a conclusion, I would just add that my example using Bing translation won't help you because , there is nativelly a Nintex action that allows you to translate using Bing!</span></div>
<div style="text-align: left;">
<span style="font-family: "Trebuchet MS",sans-serif;">You should check on the Datamarket, there are plenty of examples that you will love to implement! </span></div>
</div>
</li>
</ol>
</div>
</div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-35758947965952431522013-04-03T23:07:00.002+02:002013-04-03T23:16:30.934+02:00Office 365 - Site MailBox in replacement to Document Library incoming Mail?<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">I have to say that I have underestimated the site MailBox feature of Office 365.</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;">As explained on the blog of Benoit Hamet <a href="http://blog.hametbenoit.info/Lists/Posts/Post.aspx?ID=484,this">http://blog.hametbenoit.info/Lists/Posts/Post.aspx?ID=484,this</a> feature gives a lot of new capabilities, but it comes with its lot of missing features!</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">After having activating the web scoped feature "Site Mail Box", I have first been surprised in a wrong way by this feature :</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">It creates an exchange mail box that can be accessed via the interface and where all the members of your site can pick documents and mails. Isn't it great that only by activating a feature it creates you a exchange mail box for your site? After the excitment, come the questions..</span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">With my local Sharepoint 2007-2010-2013 I can configure my library to receive emails and to store documents. With some mix of Rules/workflows/taxonomy/Item receivers I can even create a string redirection system. can I do that with MailBox? apparently no...</span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">Apparently!</span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">I have then configure my Outlook 2013 in order to get my personal Office365 emails offline. And looking inside the menus (I'm curious) I have found this item "Manage All site mailboxes" on the contextual menu of my personal mailbox. (sorry if I don't put screenshots, but mine is in french!)</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;">The first time I clicked on it, nothing was displayed. The basic reason is that office 365 tries to see whether you are in the member/owner group of the site and if not it doesn't provide you the access to the mailbox (even if you are farm admin like I was). Second Try after having added me in the site owner group. The mail box is displayed and it comes up inside outlook with all the document libraries of the site!</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;">You can apply outlook rules on this mail box! So basically, I can redirect whatever I want using those rules!</span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;"></span><br />
<span style="font-family: Trebuchet MS; font-size: x-small;">Play well!</span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><u>Other sources : </u></span><br />
<a href="http://blogs.technet.com/b/exchange/archive/2012/08/22/site-mailboxes-in-the-new-office.aspx"><span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">http://blogs.technet.com/b/exchange/archive/2012/08/22/site-mailboxes-in-the-new-office.aspx</span></a><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;">or/and (french)</span><br />
<a href="http://spasipe.wordpress.com/2013/03/07/sharepoint-2013-les-site-mailboxes-14-configuration/">http://spasipe.wordpress.com/2013/03/07/sharepoint-2013-les-site-mailboxes-14-configuration/</a><br />
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"></span> </div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com1tag:blogger.com,1999:blog-7125185758096757175.post-14940947339482894272013-03-25T18:23:00.000+01:002013-04-03T23:16:55.203+02:00Create a new Community Template - Discussion/category Product bug<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: x-small;"><span style="font-family: "Trebuchet MS",sans-serif;">I'm actually working on a office 365 Social network project. Really interesting by the way.</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Trebuchet MS",sans-serif;">I just lost two days believing that I had done something bad when I found on my newly created community (and actually all others) that the discussion board weren't linked correctly to my discussion board categories. Note that my community template is not the basic one but a slightly customised one...</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Trebuchet MS",sans-serif;"><br /></span></span>
<span style="font-size: x-small;"><span style="font-family: "Trebuchet MS",sans-serif;">So, I have started everything again... and again the same mistake...</span></span><br />
<span style="font-size: x-small;"><br /><span style="font-family: Trebuchet MS;">So, I have tried a really basic test : I did the same test with the standard community template and I expected it to work, but there is the same problem with the standard template!</span><br />
<span style="font-family: Trebuchet MS;">I tested it as well on my local environment the problem is exactly the same.Let's correct it!</span><br />
</span><br />
<span style="font-size: x-small;"></span><br />
<span style="font-size: x-small;"><ol>
<li><span style="font-family: Trebuchet MS;">Open you newly created category.aspx page</span></li>
<li><span style="font-family: Trebuchet MS;">Open the two problematic webpart's property panel</span></li>
<li><span style="font-family: Trebuchet MS;">Change the view :</span></li>
<ol>
<li><span style="font-family: Trebuchet MS;">for the proposed discussion webpart, set it to "Proposed discussion"</span></li>
<li><span style="font-family: Trebuchet MS;">for the other one, set it to "subject"</span></li>
</ol>
<li><span style="font-family: Trebuchet MS;">From now, once you validate your page, you will have everything almost working, the only left problem is that you don't see the discussions according to the category of the page. let's continue.</span></li>
<li><span style="font-family: Trebuchet MS;">Open two instances of Sharepoint Designer 2013. One on the source site, and one on the target site. On both open category.aspx page</span></li>
<li><span style="font-family: Trebuchet MS;">On the target page, in all the xsltlistviewwebpart's parameterbinding, there is binding missing, you have to add it! <em><strong><parameterbinding defaultvalue="" location="QueryString(CategoryID)" name="CategoryID"></parameterbinding></strong></em></span></li>
<li><span style="font-family: Trebuchet MS;">Almost at the end of page of your source page, locate the <em><strong><eq><fieldref lookupid="TRUE" name="CategoriesLookup"><value type="Number">{CategoryID}</value></fieldref></eq></strong></em>, you will have to place it exactly at the same place on your target page. </span></li>
<li><span style="font-family: Trebuchet MS;">Save it.</span></li>
<li><span style="font-family: Trebuchet MS;">Test it & pray !</span></li>
</ol>
<br />
<span style="font-family: Trebuchet MS;"></span></span><br /></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-82000673952429682292012-11-22T10:21:00.002+01:002012-11-22T10:22:02.124+01:00Yammer For free with sharepoint Online<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: x-small;">Announced at the Sharepoint conference 2012, and posted on the sharepoint Blog </span><br />
<a href="http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=1049"><span style="font-size: x-small;">http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=1049</span></a><br />
<em><span style="font-size: x-small;"></span></em><br />
<em><span style="font-size: x-small;">"Beginning March 1, 2013, Yammer will be available to Microsoft Enterprise
Agreement customers. Enterprise Agreement customers will be able to purchase
Yammer Enterprise via Microsoft volume licensing. Microsoft has also created a
set of combo SKUs for SharePoint Online (Plan 1 and Plan 2) + Yammer Enterprise.
SharePoint Online + Yammer provides customers with a world-class collaboration
platform and enterprise social capabilities.</span></em><br />
<em><span style="font-size: x-small;">
</span></em><br />
<em><span style="font-size: x-small;">Yammer Enterprise will also ship with Office 365 for enterprises (Office 365
E Plans 1–4). Office 365 customers will have rights to run Office 365 for
access to email, calendars, Office Web Apps, instant messaging, and file sharing
and will have Yammer Enterprise for social.</span></em><br />
<em><span style="font-size: x-small;">
</span></em><br />
<em><span style="font-size: x-small;">Along with shipping Yammer with some of our most popular services, we will
also be lowering the price for Yammer Enterprise standalone. Yammer Enterprise
standalone will be available for $3 per user/per month (vs. the original price
of $15 per user/per month). Yammer Basic standalone will also continue to be
offered for free.</span></em><br />
<em><span style="font-size: x-small;">
</span></em><br />
<em><span style="font-size: x-small;">Beginning March 1, 2013:</span></em><br />
<em><span style="font-size: x-small;">
</span></em><br />
<ul><em><span style="font-size: x-small;">
</span></em>
<li><em><span style="font-size: x-small;">Yammer Basic standalone: $0
</span></em></li>
<em><span style="font-size: x-small;">
</span></em>
<li><em><span style="font-size: x-small;">Yammer Enterprise standalone: $3 per
user/per month</span></em></li>
<em><span style="font-size: x-small;">
</span></em>
<li><em><span style="font-size: x-small;">New! SharePoint Online (Plan 1) + Yammer Enterprise $4 per user/per
month</span></em></li>
<em><span style="font-size: x-small;">
</span></em>
<li><em><span style="font-size: x-small;">New! SharePoint Online (Plan 2) + Yammer Enterprise $8 per user/per
month</span></em></li>
<em><span style="font-size: x-small;">
</span></em>
<li><em><span style="font-size: x-small;">Office 365 E Plans 1–4 + Yammer Enterprise $8–$22 per
user/per month</span></em></li>
</ul>
<em><span style="font-size: x-small;">
</span></em><br />
<em><span style="font-size: x-small;">(all pricing in USD)</span></em><br />
<em><span style="font-size: x-small;">
</span></em><br />
<em><span style="font-size: x-small;">Visit the Yammer pricing page to learn more. Stay tuned for more information
in the coming months as we add more buying plans!</span></em><br />
<em><span style="font-size: x-small;">"</span></em></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-29179981683450330092012-11-09T17:52:00.001+01:002012-11-14T14:06:50.100+01:00Sharepoint 2013 Newsfeed Vs Office 365 newsfeed<div dir="ltr" style="text-align: left;" trbidi="on">
You have liked the newsfeed of Office 365 giving the capability to display videos and images directly on the newsfeed... Your enthousiasm will fall down when you open the newsfeed of Sharepoint 2013...<br />
<br />
The videos and photos display simply disappears.<br />
<br />
So far, the problem has been mentionned several times on posts <br />
<a href="http://community.office365.com/en-us/preview/forums/717/p/72621/273783.aspx">http://community.office365.com/en-us/preview/forums/717/p/72621/273783.aspx</a><br />
or <br />
<a href="http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/1c57452a-12c0-4e11-aa59-f3bc7900d7a7" style="color: #0000cc; text-decoration: underline;">http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/1c57452a-12c0-4e11-aa59-f3bc7900d7a7</a><br />
<br />
UPDATE : 14/11/2012<br />
My mistake (I don't erase the current post because the mistake can have been done by others) !!<br />
<br />
In fact on the communities sites, the discussion list created as default on the community sites is not displayed on the Office 365 community site. On those sites the site collection feature "Site Feed" is activated and it is the newsfeed that is displayed as main page. There you have the preview displayed and you can embbed photos and videos!<br />
<br />
<br />
<br />
<br />
<br />
<br /><br />
<br /></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-84323998886971166442012-11-09T10:36:00.005+01:002012-11-09T11:07:05.071+01:00Sharepoint 2013 - Add Geolocation Field in the display view of a discussion List<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Imagine the scenario : You 'are on a community, you want to be able to post your position on a post to show the other users your localization. (FB like).</span><br />
<br />
<span style="font-family: Verdana; font-size: x-small;">The idea WOULD be : </span><br />
<ul>
<li><span style="font-family: Verdana; font-size: x-small;">Add a geolocation field</span></li>
<li><span style="font-family: Verdana; font-size: x-small;">Add the field to the display</span></li>
<li><span style="font-family: Verdana; font-size: x-small;">TADAAM it works...</span></li>
</ul>
<span style="font-family: Verdana; font-size: x-small;">Well obviously, it doesn't!</span><br />
<br />
<span style="font-family: Verdana; font-size: x-small;">The method is a bit more complicated. We've worked on it with Laurent Fauret (also from Sogeti) who made the js updates :</span><br />
<br />
<span style="font-family: Verdana;"><strong>Step 1 : Create a site Column Geolocation field</strong></span><br />
<span style="font-family: Verdana;"><span style="font-family: Verdana; font-size: x-small;">The geolocation fields can't be created manually. So you have to create them using A <a href="http://blog.entos.at/Lists/Posts/Post.aspx?ID=7">powershell script</a> or Using <a href="http://code.msdn.microsoft.com/office/SharePoint-2013-Create-eb30a620#content">Create Geolocation field projet on Code.msdn.microsoft</a>. Add a field in yor discussion list.</span><br /><span style="font-size: x-small;"></span><br /><span style="font-family: Verdana;"><strong>Step 2 : Update the discussion display file</strong></span><br /><span style="font-size: x-small;">The problem is that you never open the <em>viewItems.aspx</em> form when you navigate inside a discussion, you are always on a custom view, so the field you have added on your list, will never show up! So, it means that you have to modify the display js file!</span><br /><br /><span style="font-size: x-small;"><strong>This is not a good way of doing but it's a fast one! </strong>You should never touch the standard file of sharepoint, but instead create your owns specific but in this case we will do it for demo purpose (the good way would be to create a discussion list type based on the new display js file!)</span><br /><br /><span style="font-size: x-small;">So you have to modify the sp.ui.discussions.js located in the 15/TEMPLATE/Layouts. It manages the display of the discussion list. (use the sp.ui.discussions.debug.js to have the indented version).</span><br /><br /><ul style="text-align: left;">
<li><span style="font-size: x-small;">Add your field in the viewfields list in the function </span></li>
</ul>
<span style="font-size: x-small;"><em><span style="font-family: "Courier New", Courier, monospace;"> SP.UI.Discussions.Helpers.$1f = function (m, i) </span></em></span><br /><ul style="text-align: left;">
<li><span style="font-size: x-small;">Change the<span style="font-family: "Courier New", Courier, monospace;"> </span><em><span style="font-family: "Courier New", Courier, monospace;">$2u_0: function (a, d)</span> </em></span><em><span style="font-size: x-small;">to </span></em></li>
</ul>
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"> $2u_0: function (a, d) {<br /> ULS06I:;<br /> this.populateFolderMetalineItems(d);<br /> a.addCssClass("ms-comm-metalineList ms-noList");</span><br /><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"> a.renderBeginTag("ul");<br /> if (this.jsonItem["My_x0020_Location"]) {<br /> a.addCssClass("ms-comm-metalineItemSeparator");<br /> a.addCssClass("ms-comm-metalineItem");<br /> a.renderBeginTag("li");<br /> a.write(spMgr.RenderFieldByName(this.$0_0, "My_x0020_Location", this.jsonItem, this.$0_0.ListSchema))<br /> a.renderEndTag()<br /> }<br /> for (var b = 0, c = this.$R_0.length; b < c; b++) {<br /> b !== c - 1 && a.addCssClass("ms-comm-metalineItemSeparator");<br /> a.addCssClass("ms-comm-metalineItem");<br /> a.renderBeginTag("li");<br /> a.write(this.$R_0[b]);<br /> a.renderEndTag()<br /> }<br /> a.renderEndTag()</span><br /><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"> },</span><br /><br /><ul style="text-align: left;">
<li><span style="font-size: x-small;">Change the<em> </em><span style="font-family: "Courier New", Courier, monospace;"><em>$2y_0: function (a) {</em> to</span></span><span style="font-family: "Courier New", Courier, monospace; font-size: x-small;">$2y_0: function (a) {<br /> ULS06I:;<br /> var loc = spMgr.RenderFieldByName(this.$0_0, "My_x0020_Location", this.jsonItem, this.$0_0.ListSchema);<br /> if (loc) {<br /> a.addCssClass("ms-metadata");<br /> a.addCssClass("ms-comm-cmdSpaceListItem");<br /> a.renderBeginTag("span");<br /> a.write(loc);<br /> a.renderEndTag();<br /> }</span></li>
</ul>
<span style="font-family: "Courier New", Courier, monospace; font-size: x-small;"> a.addCssClass("ms-metadata");<br /> a.addCssClass("ms-comm-cmdSpaceListItem");<br /> a.renderBeginTag("span");<br /> var b = spMgr.RenderFieldByName(this.$0_0, "Created", this.jsonItem, this.$0_0.ListSchema);<br /> a.write(b);<br /> a.renderEndTag()<br /> },</span><br /><br /><br /><span style="font-size: x-small;">Note :We have called our column "My Location".</span><br /><br /><br /><br /><span style="font-size: x-small;"></span><strong>Step 3 : Test</strong><br /><span style="font-size: x-small;">It works only on your /discussion%20List/forms/allitems.aspx ... but it f you want to see it working on your site homepage (where the discussion list is already put), you have to revalidate the "subject" view on the discussion list Webpart for the view to be updated with your new field.</span><br />
<span style="font-size: x-small;">An now you will see your GeoLoc picto on your discussion!</span><br /><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-s_otyvDYwV0/UJzMt232ZlI/AAAAAAAAKt0/UivheDUGW1Y/s1600/geoloc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="50" rea="true" src="http://2.bp.blogspot.com/-s_otyvDYwV0/UJzMt232ZlI/AAAAAAAAKt0/UivheDUGW1Y/s320/geoloc.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: x-small;">And on the click</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-NeR0vogtsII/UJzNJ7nwZuI/AAAAAAAAKt8/FyNOwXjFzAg/s1600/geoloc2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" rea="true" src="http://4.bp.blogspot.com/-NeR0vogtsII/UJzNJ7nwZuI/AAAAAAAAKt8/FyNOwXjFzAg/s320/geoloc2.png" width="320" /></a></div>
<div style="text-align: left;">
</div>
</span></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com5tag:blogger.com,1999:blog-7125185758096757175.post-88040047365608108342012-11-08T15:36:00.002+01:002012-11-09T10:37:03.416+01:00Sharepoint 2013 Communities - Create an "Associated Communities" fonction<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">We are actually building a Social network based on Sharepoint 2013 for a Huge Airways company.</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: x-small;">One need was to be able to associate communities together in order to ease the navigation between communities.</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: x-small;">To do so, we have used the super powerfull search engine!!</span><br />
<br />
<strong><span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 1 : Create a new Display template </span></strong><br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif; font-size: x-small;">on your Site collection go to the masterpage catalog (_catalogs/masterpage/Display Templates/Search) and copy the <em>Item_Community.html </em>file.</span></li>
<li><span style="font-family: Verdana; font-size: x-small;">Modify it (For our needs I wanted to display the sitelogo, and change some display). QUite easy to do. It's only manipulating JS and HTML. </span></li>
<li><span style="font-family: Verdana; font-size: x-small;">Post your newly renamed HTML in the same folder and it will automatically create the associated js.</span></li>
</ul>
<span style="font-family: Verdana; font-size: x-small;"><strong>Step 2 : Set a parameter in the propertybag of your site</strong></span><br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana, sans-serif; font-size: x-small;">I have added a new property "AssociatedCommunities" on the community using a simple aspx page. The code is simply :</span></li>
<ul>
<li><em><span style="font-family: Verdana, sans-serif; font-size: xx-small;">Web.AllProperties["AssociatedCommunities"] = "URLCOmmunity1;URLCOmmunity2;URLCommunity3;"</span></em></li>
</ul>
</ul>
<span style="font-family: Verdana; font-size: x-small;"><strong>Step 3 : Create a new managed metadata based on your property </strong></span><br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana; font-size: x-small;">Do a full crawl on your content source to make your property available for your search service.</span></li>
<li><span style="font-family: Verdana; font-size: x-small;">In the search service, create a new managed metadata that you will Set as Searchable and Queriable, and then map it on your propertybag property.</span></li>
</ul>
<strong><span style="font-family: Verdana; font-size: x-small;">Step 4 : Add a search result webpart on your community page</span></strong><br />
<ul style="text-align: left;">
<li><span style="font-family: Verdana; font-size: x-small;">Set the following query : </span></li>
<ul>
<li><span style="font-family: Verdana; font-size: xx-small;"><em>WebTemplate:Community AssociatedCommunities:{SiteCollection.URL}</em></span></li>
</ul>
<li><span style="font-family: Verdana;"><span id="goog_1645055672"></span><span id="goog_1645055673"><span style="font-family: Verdana, sans-serif; font-size: x-small;">In the "Display template" section put "<em>Use a single template to display items"</em> and set your display template</span></span></span></li>
<li><span style="font-family: Verdana;"><span style="font-size: x-small;">I personnaly removed all the options (but the "ranked results" one).</span></span></li>
</ul>
<span style="font-size: x-small;"><strong>Step 5 : Pray for the search of having done correctly its work!! :)</strong></span><br />
<br />
<br />
<br />
<br />
<br />
<span style="font-size: x-small;"></span><br />
<strong><br /><span style="font-size: x-small;"></span></strong><span style="font-size: x-small;"></span></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-6973089299520753092012-10-25T16:53:00.001+02:002012-10-25T16:54:11.988+02:00Can't add an oinline Apps on your newly created Sharepoint 2013 farm?<div dir="ltr" style="text-align: left;" trbidi="on">
So excited with my new toy...<br />
I have found on the Office online app store (<a href="http://office.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx">http://office.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx</a>) a Chat app that I wanted to add.<br />
<br />
So, on my newly created site, I went to Add an app, I tried to reach my store (easy!) but once arrived on the page of my desired app, I found an unpleasant message "App are not allowed on your Server ...blablablabla..."<br />
<br />
After having tried to activate some services manually, trying to reach the "configure App URL", I checked online and finally found this :<br />
<a href="http://sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx">http://sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx</a><br />
and I finally went there :<br />
<a href="http://msdn.microsoft.com/en-us/library/fp179923(v=office.15">http://msdn.microsoft.com/en-us/library/fp179923(v=office.15</a>)<br />
<br />
I performed all the steps mentionned on the msdn. It simply worked! So. Forget the easy configuration of SP 2010. <br />
<br />
Now you have to create your app store using your powershell interface!<br />
<br /></div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-56120949999258217332012-10-24T18:27:00.000+02:002012-10-24T18:33:07.448+02:00Sharepoint 2013 RTM for MSDN Subscribers!<div dir="ltr" style="text-align: left;" trbidi="on">
We are actually working on the Enterprise Social Network of a big company. We plan the migration on Sharepoint 2013. So I was about to test the migration using the RC (Waiting for the RTM then...)<br />
<br />
Today, I was looking on my MSDN (ultimate) Account, to retrieve the product key for the RC version... the one I found on the MSDN didn't work on my installation... WHY doing that to me?<br />
<br />
simply because today... the version changed to RTM (also did Office 2013!) and so: new product = new Key!<br />
<br />
YEAAAHHH :)<br />
<br />
<br />
<br />
</div>
Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-56710899825904779372011-12-16T09:48:00.000+01:002011-12-16T10:07:48.957+01:00Custom Form deployment in sharepoint 2007I have faced a problem today... FOr a customer I 'm actually working on sharepoint 2007 (sigh)...<br /><br />I have to customize fully a huge form (that contains 200 fields) by adding tabs. It's not the topic but I'm doing it doing jquery (and that rocks). <br /><br />In order to do it,you just have to open your editform.aspx newform.aspx and dispform.aspx, and to replace it with new forms using a feature that copy the new form in the list form folder. The topic of this blog is the content of those aspx file.<br /><br />To create it, I have simply copied the content of my old EditForm . I have erased everything contained in the <em>PlaceHolderMain</em> .<br /><br />And I have (in sharepoint Designer) inserted the form content using :<br />insert > Sharepoint Control > Customize a list form and I have selected my list...<br /><br />NOW ...THE PROBLEM ...<br />I have added my tabs, everything works fine on sharepoitn designer but...mmm I want to deploy it on 100 sites containing the same list... <br />Should I do it manually? obviously no... But if you try to do it directly you will face a bug saying<br /> <strong><em>"Unable to display this Web Part. To troubleshoot the problem, open this Web page in a Windows SharePoint Services-compatible HTML editor such as Microsoft Office SharePoint Designer. If the problem persists, contact your Web server administrator. "</em></strong> <br /><br />If you look inside your form you will find : <br /> <em><ParameterBinding Name="ListID" Location="None" DefaultValue="{ID OF YOUR LIST}"/></em>That you have to replace by<br /> <em><ParameterBinding Name="ListName" Location="None" DefaultValue="NAME OF YOUR LIST"/> </em> <br />AND <br /><em><br /><WebPartPages:DataFormParameter ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{IDOFYOURLIST}" Name="ListID"></WebPartPages:DataFormParameter><br /></em><br /> that you have to replace (4times) by<br /><br /><em><br /><WebPartPages:DataFormParameter ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="{Name of your list}" Name="ListID"></WebPartPages:DataFormParameter><br /></em><br /><br />And because now you can deploy it manually (because there is no more reference to the list ID (that is different in every site)Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-62944655950072911312011-11-17T10:28:00.001+01:002011-11-17T10:41:55.187+01:00I'm a .net Ranger by Sogeti!<span style="font-family:verdana;font-size:85%;">I'm glad to tell you that I have joined the .net Rangers community at Sogeti.</span><br /><br /><span style="font-family:verdana;font-size:85%;">The .net Rangers community is a small amount of Sogeti's Microsoft oriented experts .</span><br /><br /><span style="font-family:Verdana;font-size:85%;"><strong>Follow us : </strong></span><br /><br /><strong><span style="font-family:Verdana;font-size:85%;"><a href="http://www.dotnetrangers.net/">http://www.dotnetrangers.net/</a></span></strong><br /><br /><a href="http://twitter.com/dotnetrangers"><img style="WIDTH: 26px; HEIGHT: 27px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5675896141039879458" border="0" alt="" src="http://3.bp.blogspot.com/-KYjPCnEeYdA/TsTVd9SxRSI/AAAAAAAAKqE/V2gEahqXdwA/s200/Twitter.png" /></a><br /><br /><a href="http://www.facebook.com/pages/Dot-Net-Rangers/111705968884757"><img style=" WIDTH: 28px; HEIGHT: 28px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5675896134642270962" border="0" alt="" src="http://2.bp.blogspot.com/-Q59Vw85Kuik/TsTVdlddgvI/AAAAAAAAKp4/LbySAx3nDKU/s200/facebook.png" /></a>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-31974404488185317222011-11-17T10:21:00.000+01:002012-01-30T14:48:41.669+01:00ListViewWebpart and XsltListViewWebPartI have a colleague (Nicolas Corchia - Sogeti) who came into my office with a migration 2007>2010 problem.<br /><br />The 2007 Codes analysed a webpartpage in order to find the ListViewWebpart included in it in order to modify them...<br />Well... after the migration...no more listViewWebpart were found... He came out with the fact that sharepoint automatically changed the listviewPart by the new XsltListViewWebPart class.<br /><br />Because nicolas is a good developer ;-) he found out that the problem was wimply a casting problem obliging him to recast the webparts in the code itself!<br /><br />Find more in : <a href="http://msdn.microsoft.com/fr-fr/library/ff806162.aspx">http://msdn.microsoft.com/fr-fr/library/ff806162.aspx</a><br /><br /><br /><br /><br />Thanks to a problem raised by Nicolas Corchia (Sogeti),Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-79592318007638572252011-01-27T12:01:00.000+01:002011-01-27T12:25:19.137+01:00Workflow Action : Attach Document to ListItem<span style=";font-family:verdana;font-size:85%;" >I have been really disapointed </span><span style="font-size:85%;"><span style="font-family:verdana;">when realizing that I couldn't Attach a document to an item when I designed a workflow. So, to me this action was definitly missing. I needed it in a document library list with incoming email feature activated in order to be able to send emails to this library and those emails to be managed to be linked automatically to other items in other lists... For this custom activity, I have been assisted a member of my team: Yassine Hachime.<br /><br /><br />I won't explain here The principle on How to create Custom Activity on Sharepoint 2010, this topic has already been explained several times on the web :<br /><br /><a href="http://www.chaholl.com/archive/2010/03/13/make-a-custom-activity-available-to-sharepoint-designer-2010.aspx">http://www.chaholl.com/archive/2010/03/13/make-a-custom-activity-available-to-sharepoint-designer-2010.aspx</a> or<br /><a href="http://social.msdn.microsoft.com/Forums/en/sharepointworkflow/thread/4e7a77f4-c29b-47b2-a1de-79470f0bb1c9">http://social.msdn.microsoft.com/Forums/en/sharepointworkflow/thread/4e7a77f4-c29b-47b2-a1de-79470f0bb1c9<br /></a><br /><br />My plan is just to give you one more action to add to your SPD.<br />I will just provide you the code for the action file and the bin. I'll leave you the rest of the job.<br /><br /><br />Here is the action file :<br /><br /><!-- code formatted by http://manoli.net/csharpformat/ --><br /><pre class="csharpcode"><br /><span class="kwrd"><?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">="1.0"</span> <span class="attr">encoding</span><span class="kwrd">="utf-8"</span>?<span class="kwrd">></span><br /><br /><span class="kwrd"><</span><span class="html">WorkflowInfo</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">Actions</span> <span class="attr">Sequential</span><span class="kwrd">="then"</span> <span class="attr">Parallel</span><span class="kwrd">="and"</span><span class="kwrd">></span><br /><span class="kwrd"><</span><span class="html">Action</span> <span class="attr">Name</span><span class="kwrd">="Attach Doc to Item"</span><br /> <span class="attr">ClassName</span><span class="kwrd">="AttachMailWFActivity.AttachDocToItem"</span><br /> <span class="attr">Assembly</span><span class="kwrd">="AttachMailWFActivity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=46f60639ee1bfb57"</span><br /> <span class="attr">AppliesTo</span><span class="kwrd">="all"</span> <span class="attr">Category</span><span class="kwrd">="List Actions"</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">RuleDesigner</span> <span class="attr">Sentence</span><span class="kwrd">="Attach %1 to %2"</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">FieldBind</span> <span class="attr">Text</span><span class="kwrd">="this document"</span> <span class="attr">Field</span><span class="kwrd">="LibId,DocItem"</span> <span class="attr">DesignerType</span><span class="kwrd">="ChooseDoclibItem"</span> <span class="attr">Id</span><span class="kwrd">="1"</span> <span class="kwrd">/></span><br /> <span class="kwrd"><</span><span class="html">FieldBind</span> <span class="attr">Text</span><span class="kwrd">="this item"</span> <span class="attr">Field</span><span class="kwrd">="ListId,ListItem"</span> <span class="attr">DesignerType</span><span class="kwrd">="ChooseListItem"</span> <span class="attr">Id</span><span class="kwrd">="2"</span><span class="kwrd">/></span> <br /> <span class="kwrd"></</span><span class="html">RuleDesigner</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">Parameters</span><span class="kwrd">></span><br /> <span class="kwrd"><</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">="__Context"</span> <span class="attr">Type</span><span class="kwrd">="Microsoft.SharePoint.WorkflowActions.WorkflowContext, Microsoft.SharePoint.WorkflowActions"</span> <span class="attr">Direction</span><span class="kwrd">="In"</span> <span class="kwrd">/></span><br /> <span class="kwrd"><</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">="LibId"</span> <span class="attr">Type</span><span class="kwrd">="System.String, mscorlib"</span> <span class="attr">Direction</span><span class="kwrd">="In"</span> <span class="attr">InitialBinding</span><span class="kwrd">="__list"</span><span class="kwrd">/></span><br /> <span class="kwrd"><</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">="DocItem"</span> <span class="attr">Type</span><span class="kwrd">="System.Int32, mscorlib"</span> <span class="attr">Direction</span><span class="kwrd">="In"</span> <span class="attr">InitialBinding</span><span class="kwrd">="__item"</span> <span class="attr">DesignerType</span><span class="kwrd">="ListItem"</span> <span class="attr">Description</span><span class="kwrd">="ID of the list item used by this action."</span> <span class="kwrd">/></span><br /> <span class="kwrd"><</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">="ListId"</span> <span class="attr">Type</span><span class="kwrd">="System.String, mscorlib"</span> <span class="attr">Direction</span><span class="kwrd">="In"</span><span class="kwrd">/></span><br /> <span class="kwrd"><</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">="ListItem"</span> <span class="attr">Type</span><span class="kwrd">="System.Int32, mscorlib"</span> <span class="attr">Direction</span><span class="kwrd">="In"</span> <span class="attr">DesignerType</span><span class="kwrd">="ListItem"</span> <span class="attr">Description</span><span class="kwrd">="ID of the list item used by this action."</span> <span class="kwrd">/></span><br /><br /> <span class="kwrd"></</span><span class="html">Parameters</span><span class="kwrd">></span><br /><span class="kwrd"></</span><span class="html">Action</span><span class="kwrd">></span><br /><br /><span class="kwrd"></</span><span class="html">Actions</span><span class="kwrd">></span><br /><br /><span class="kwrd"></</span><span class="html">WorkflowInfo</span><span class="kwrd">></span><br /></pre><br /><br /><br />And the code of the </span></span><span style="font-size:85%;"><span style="font-family:verdana;">AttachMailWFActivity.AttachDocToItem assembly is :<br /><br /><!-- code formatted by http://manoli.net/csharpformat/ --><br /><pre class="csharpcode"><br /><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.ComponentModel;<br /><span class="kwrd">using</span> System.ComponentModel.Design;<br /><span class="kwrd">using</span> System.Collections;<br /><span class="kwrd">using</span> System.Linq;<br /><span class="kwrd">using</span> System.IO;<br /><span class="kwrd">using</span> Microsoft.SharePoint;<br /><span class="kwrd">using</span> System.Workflow.ComponentModel.Compiler;<br /><span class="kwrd">using</span> System.Workflow.ComponentModel.Serialization;<br /><span class="kwrd">using</span> System.Workflow.ComponentModel;<br /><span class="kwrd">using</span> System.Workflow.ComponentModel.Design;<br /><span class="kwrd">using</span> System.Workflow.Runtime;<br /><span class="kwrd">using</span> System.Workflow.Activities;<br /><span class="kwrd">using</span> Microsoft.SharePoint.WorkflowActions;<br /><span class="kwrd">using</span> System.Workflow.Activities.Rules;<br /><br /><span class="kwrd">namespace</span> TSP.AttachMailWFActivity<br />{<br /><span class="kwrd">public</span> <span class="kwrd">partial</span> <span class="kwrd">class</span> AttachDocToItem : Activity<br /><br />{<br /><br /> <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty LibIdProperty = DependencyProperty.Register(<span class="str">"LibId"</span>, <span class="kwrd">typeof</span>(<span class="kwrd">string</span>), <span class="kwrd">typeof</span>(AttachDocToItem));<br /> <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty ListIdProperty = DependencyProperty.Register(<span class="str">"ListId"</span>, <span class="kwrd">typeof</span>(<span class="kwrd">string</span>), <span class="kwrd">typeof</span>(AttachDocToItem));<br /> <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty DocItemProperty = DependencyProperty.Register(<span class="str">"DocItem"</span>, <span class="kwrd">typeof</span>(Int32), <span class="kwrd">typeof</span>(AttachDocToItem));<br /> <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty ListItemProperty = DependencyProperty.Register(<span class="str">"ListItem"</span>, <span class="kwrd">typeof</span>(Int32), <span class="kwrd">typeof</span>(AttachDocToItem));<br /> <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty __ContextProperty = DependencyProperty.Register(<span class="str">"__Context"</span>, <span class="kwrd">typeof</span>(WorkflowContext), <span class="kwrd">typeof</span>(AttachDocToItem));<br /><br /> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]<br /> [ValidationOption(ValidationOption.Required)]<br /> [Browsable(<span class="kwrd">true</span>)]<br /> [Description(<span class="str">"ID of the document library storing the doc that will be attached to the item"</span>)]<br /> <span class="kwrd">public</span> <span class="kwrd">string</span> LibId<br /> {<br /> get { <span class="kwrd">return</span> ((<span class="kwrd">string</span>)(<span class="kwrd">base</span>.GetValue(AttachDocToItem.LibIdProperty))); }<br /> set { <span class="kwrd">base</span>.SetValue(AttachDocToItem.LibIdProperty, <span class="kwrd">value</span>); }<br /> }<br /><br /> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]<br /> [ValidationOption(ValidationOption.Required)]<br /> [Browsable(<span class="kwrd">true</span>)]<br /> [Description(<span class="str">"ID of the list keeping the item to which the document will be attached to"</span>)]<br /> <span class="kwrd">public</span> <span class="kwrd">string</span> ListId<br /> {<br /> get { <span class="kwrd">return</span> ((<span class="kwrd">string</span>)(<span class="kwrd">base</span>.GetValue(AttachDocToItem.ListIdProperty))); }<br /> set { <span class="kwrd">base</span>.SetValue(AttachDocToItem.ListIdProperty, <span class="kwrd">value</span>); }<br /> }<br /><br /> [Description(<span class="str">"ID of the list item to which the document will be attached to"</span>)]<br /> [ValidationOption(ValidationOption.Required)]<br /> [Browsable(<span class="kwrd">true</span>)]<br /> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]<br /> <span class="kwrd">public</span> Int32 ListItem<br /> {<br /> get { <span class="kwrd">return</span> ((Int32)(<span class="kwrd">base</span>.GetValue(AttachDocToItem.ListItemProperty))); }<br /> set { <span class="kwrd">base</span>.SetValue(AttachDocToItem.ListItemProperty, <span class="kwrd">value</span>); }<br /> }<br /><br /> [Description(<span class="str">"ID of the document item to which the document will be attached to"</span>)]<br /> [ValidationOption(ValidationOption.Required)]<br /> [Browsable(<span class="kwrd">true</span>)]<br /> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]<br /> <span class="kwrd">public</span> Int32 DocItem<br /> {<br /> get { <span class="kwrd">return</span> ((Int32)(<span class="kwrd">base</span>.GetValue(AttachDocToItem.DocItemProperty))); }<br /> set { <span class="kwrd">base</span>.SetValue(AttachDocToItem.DocItemProperty, <span class="kwrd">value</span>); }<br /> }<br /><br /> [Description(<span class="str">"Context"</span>)]<br /> [ValidationOption(ValidationOption.Required)]<br /> [Browsable(<span class="kwrd">true</span>)]<br /> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]<br /> <span class="kwrd">public</span> WorkflowContext __Context<br /> {<br /> get { <span class="kwrd">return</span> ((WorkflowContext)(<span class="kwrd">base</span>.GetValue(__ContextProperty))); }<br /> set { <span class="kwrd">base</span>.SetValue(__ContextProperty, <span class="kwrd">value</span>); }<br /> }<br /><br /><br /> <span class="kwrd">protected</span> <span class="kwrd">override</span> ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)<br /> {<br /> <span class="kwrd">try</span><br /> {<br /> <br /> __Context.Web.AllowUnsafeUpdates = <span class="kwrd">true</span>;<br /> <br /> Guid id = <span class="kwrd">new</span> Guid(ListId);<br /> SPList list = __Context.Web.Lists[id];<br /> Guid did = <span class="kwrd">new</span> Guid(LibId);<br /> SPList docLib = __Context.Web.Lists[did];<br /> SPListItem sourceItem = docLib.GetItemById(DocItem);<br /> SPFile sourceDoc = sourceItem.File;<br /> <span class="kwrd">byte</span>[] fichierbyte = sourceDoc.OpenBinary();<br /><br /> SPListItem destinationItem = list.GetItemById(ListItem);<br /> destinationItem.Attachments.Add(sourceItem.Name, fichierbyte);<br /> destinationItem.Update(); <br /> <span class="kwrd">return</span> ActivityExecutionStatus.Closed;<br /> <br /> }<br /> <span class="kwrd">catch</span> (Exception Ex)<br /> {<br /> <br /> <span class="kwrd">return</span> ActivityExecutionStatus.Faulting;<br /> <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(Ex.Message + <span class="str">"&&&&"</span> + Ex.StackTrace);<br /> <br /> }<br /> <span class="kwrd">finally</span><br /> {<br /> <br /> }<br /> <span class="kwrd">return</span> ActivityExecutionStatus.Closed;<br /> }<br /><br /> <span class="kwrd">public</span> AttachDocToItem()<br /> {<br /> InitializeComponent();<br /> }<br />}<br />}<br /></pre><br /><br /><br /><br />Now you've got that.<br />Just :<br />- Create a sharepoint 2010 empty project<br />- Create a class and copy the code<br />- Create an action file and copy the code<br />- Sign your assembly<br />- Package your wsp<br />- Install the wsp on you WFE. Deploy it.<br />- Add the correct line in the AuthorizedType tag of your web.config.<br /><br /><br /><span style="font-size:100%;"><span style="font-weight: bold;">The result :</span></span><br /><br /></span></span><img src="file:///C:/Users/ALEXAN%7E1.JOL/AppData/Local/Temp/moz-screenshot.png" alt="" /><span style="font-size:85%;"><span style="font-family:verdana;"><a href="http://4.bp.blogspot.com/_5ZHthH0hyu0/TUFUcZozfgI/AAAAAAAAKmU/lQLx_uMzZX8/s1600/attachdoctoitem.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 271px; height: 320px;" src="http://4.bp.blogspot.com/_5ZHthH0hyu0/TUFUcZozfgI/AAAAAAAAKmU/lQLx_uMzZX8/s320/attachdoctoitem.png" alt="" id="BLOGGER_PHOTO_ID_5566823461301747202" border="0" /></a></span></span><br /><a href="http://2.bp.blogspot.com/_5ZHthH0hyu0/TUFU5XFp-EI/AAAAAAAAKmc/MGp82ngyIKs/s1600/attachdoctoitem2.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 26px;" src="http://2.bp.blogspot.com/_5ZHthH0hyu0/TUFU5XFp-EI/AAAAAAAAKmc/MGp82ngyIKs/s320/attachdoctoitem2.png" alt="" id="BLOGGER_PHOTO_ID_5566823958833657922" border="0" /></a><br /><span style=";font-family:verdana;font-size:85%;" >(for the capture... it's because my SPD Is in french</span>)<br /><span style="font-size:85%;"><span style="font-family:verdana;"><br /><br />I hope it helps.<br />Don't hesitate to contact me whether you are in trouble using it !!!<br /><br /></span></span><span style="font-size:85%;"><span style="font-family:verdana;"><br /></span></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com3tag:blogger.com,1999:blog-7125185758096757175.post-36272688729215923822011-01-27T10:34:00.000+01:002011-01-27T12:22:51.437+01:00Item Created Workflow won't start with incoming email document uploaded<span style="font-size:85%;"><span style="font-family:verdana;">Hello,</span><br /><br />It's been a while since my last post.<br />I was not in the mood ;) (or overloaded with work)... I have a few post to write... I hope it will be done in the few next days. I'm planning to explain the last SPD WF Action I have written (Attach Document to Item)....<br /><br />But right now my post just describes a problem with the library with incoming email feature activated. When you send an email to the library, the automatic workflow launched at item created are simply not raised. It works for the items you add normally though.<br /><br />Workaround?<br />Yeess. I found this post <a href="http://social.msdn.microsoft.com/Forums/en/sharepointworkflow/thread/810d0273-06f3-4815-b690-86d0fc880919">http://social.msdn.microsoft.com/Forums/en/sharepointworkflow/thread/810d0273-06f3-4815-b690-86d0fc880919</a><br /><br />So, you just have to run this command line :<br /><br /><span style="font-weight: bold;font-family:verdana;" >Stsadm -o setproperty -pn declarativeworkflowautostartonemailenabled -pv true</span></span><br /><span style="font-size:85%;"><br />It worked for me !!!<br /></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-2091272245911198452010-12-23T14:34:00.000+01:002010-12-23T15:11:33.383+01:00Display an exchange public calendar inside sharepointTo display an Exchange public calendar inside a sharepoint page use a pageviewer webpart, and choose the url this way<br /><a href="https://your_exchange_server/owa/?cmd=contents&module=PublicFolders&f=Calendar">https://your_exchange_server/owa/?cmd=contents&module=PublicFolders&f=Calendar</a><br />(don't use that kind of url , <a href="https://your_exchange_server/public/Calendar/?view=monthly">https://your_exchange_server/public/Calendar/?view=monthly</a>, you may have <em>access is denied</em> error )Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-56972593175590278972010-07-30T10:55:00.000+02:002010-07-30T11:54:04.199+02:00Sharepoint 2010 - Create an Audience based ACL<span style="font-family:verdana;font-size:85%;">I have been asked to manage the security of an application according to the user profile organization's property.... Well obviously, sharepoint is not designed like that. So, how to ?</span><br /><span style="font-family:verdana;font-size:85%;"></span><br /><span style="font-family:verdana;font-size:85%;">My solution is the following :</span><br /><ul><li><span style="font-family:verdana;font-size:85%;">Fill the organization property on each of the profile</span></li><li><span style="font-family:verdana;font-size:85%;">Create one audience per organization based on this property</span></li><li><span style="font-family:verdana;font-size:85%;">Synchronize the audiences with Sharepoint groups using a timer job (that's the main part of the article)</span></li></ul><span style="font-family:verdana;font-size:85%;">I won't explain the two first points, I guess you already know how to create and compile audiences, else go back to the root first !</span><br /><span style="font-family:verdana;font-size:85%;"></span><br /><span style="font-family:verdana;font-size:85%;">The principle of my timer job is simple. It is activated using a feature that is scoped webapplication. The execute method parses all the sites of the applications, and the audiences of the platform. It thus verify that a group with the same name exists on the site. If not, it creates the groups, If it does exist, it just adds the users in the group.</span><br /><span style="font-family:verdana;font-size:85%;">So at the end I have on all my sites, the same groups with the same users and everything is based on the audiences that are based on the user profile properties ... Quod Erat Demonstratum.</span><br /><span style="font-family:verdana;font-size:85%;"></span><br /><span style="font-family:verdana;font-size:85%;">Below the execute Method of the Timer job:</span><br /><span style="font-family:Verdana;font-size:85%;"></span><br /><span style="font-family:courier new;font-size:85%;">try<br />{<br />SPWebApplication webApplication = this.Parent as SPWebApplication;<br />AudienceManager audManager = new AudienceManager(SPServiceContext.GetContext(webApplication.Sites[0]));<br />foreach (SPSite site in webApplication.Sites)<br />{<br />foreach (Audience au in audManager.Audiences)<br />{<br />try<br />{<br />if (site.RootWeb.SiteGroups[au.AudienceName] == null)<br />{<br />}<br />}<br />catch (Exception exx)<br />{<br />SPUser oUser = site.RootWeb.Users.GetByEmail("alexandre.joly@toto.com");<br />SPMember oMember = site.RootWeb.Users.GetByEmail("alexandre.joly@toto.com");<br />site.RootWeb.SiteGroups.Add(au.AudienceName, oMember, oUser, "Group synchronized on existing audience");<br /><br />}<br />SPGroup group = site.RootWeb.SiteGroups[au.AudienceName];<br />ArrayList members = au.GetMembership();<br />if (members != null)<br />{<br />foreach (UserInfo userInfo in members)<br />{<br />group.Users.Add(userInfo.NTName, userInfo.Email, userInfo.PreferredName, "");<br />}<br />}<br />}<br />}<br /><br />}<br />catch (Exception exc)<br />{<br /><br />}<br /></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-86816282834214097482010-06-24T10:29:00.000+02:002010-06-24T10:40:25.017+02:00Migrating Sharepoint 2010 Beta to RTM<span style="font-size:85%;"><span style="font-family:verdana;">As most of you may have seen... migrating Beta to RTM </span><span style="font-weight: bold;font-family:verdana;" >is not</span><span style="font-family:verdana;"> something supported by MS. Of course, we all understand that the corrected bug of the beta may cause problem on you newly installed flashy RTM Platform... BUT... some of us (at least me) have been asked to put in production a beta platform... and now.. with 10000 items in a list... what can I do ? hiring 100 persons to recreate my items ... obviously not So let's find a way..</span><br /><br /></span><ol style="font-family:verdana;"><li><span style="font-size:85%;">Using the Backup site collection feature in the central admin on your beta platform, back up the entire site collection that contain you web or you list (dont try to' export only list or webs using powershell commands, it simply doesn't work (version conflicts).</span></li><li><span style="font-size:85%;">Using the restore-spsite powershell command to restore your site collection on your new platform...</span></li><li><span style="font-size:85%;">Yessss! Now you have you data on you new platform.. YESSSSS, it feels already better... (OOOH Damned.. I have lost my term store connection, arrrg)</span></li><li><span style="font-size:85%;">use the <a href="http://spdeploymentwizard.codeplex.com/">Content deployment wizard tool </a>of Cris O Brien (Sharepoint MVP) to migrate content from your site collection to your new site. In my case I only had to migrate 3 big lists with content types.</span></li></ol><span style="font-size:85%;"><span style="font-family:verdana;">in my case, I had to launch several other scripts to resolve my term store connection problem (I parse my old list to find the termstores values and I pars my new list to put back those values....)</span><br /><span style="font-family:verdana;">I'm sure it can work without doing that but I didn't find the way !</span><br /><br /><br /><span style="font-family:verdana;">Good luck</span><br /></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-25186755745372553452010-03-01T14:42:00.000+01:002010-03-02T10:13:01.280+01:00Sharepoit 2010 - Search service application<span style="font-family:verdana;">One of the multiple evolutions of the last version of Sharepoint upon the last one is how Sharepoint manages the different services.<br /><br />Bye bye Shared Service Provider (SSP), Hello the Services applications.<br /><br />The management of those applications is accessible via the "manage Service applications" of the central admin page.<br />Yesterday I had a super search app that was working fine with all my scopes and metadatas. Sounded good, no?<br />Obviously, it's when things go the best that some ununderstandable sh.t happens... In my event viewer, from yesterday nigth til now and every minutes, I had a message saying that my crawl DB wasn't accessible. Damned What have I done??<br />So as a solution I tried to reset all my indexes... Nope..<br />I then tried to detach and attach the Search App db... Nope...<br />I finally decided to save all my settings and to delete my search application (and all the DBs and to recreate it (I'd rather take 1h to do this instead of asking myself the all day "what the fuck wht the fuck"<br /><br />Here I am now... I can't create a search application : the form opens asking me the app pools and the account , and after a minute and 31 seconds... I have this error<br /><br />"<span style="font-size:85%;"><br /></span></span><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_mainMessage" style="font-family:courier new;font-size:85%;">Errors were encountered during the configuration of the Search Service Application.</span><span style="font-size:85%;"><br /></span><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_TextInPlaceHolderMain" style="font-family:courier new;font-size:85%;">System.Data.SqlClient.SqlException: User does not have permission to perform this action. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command) at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user) at Microsoft.Office.Server.Search.Administration.SearchDatabase.GrantAccess(String username, String role) at Microsoft.Office.Server.Search.Administration.SearchDatabase.SynchronizeAccessRules(SearchServiceApplication searchApp) at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.SynchronizeDatabases() at Microsoft.Office.Server.Search.Administration.SearchServiceApplication.Provision() at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.<createsearchapp>b__22() at Microsoft.Office.Server.Search.Administration.SearchAdminUtils.UpdateIgnoreSPUpdatedConcurrencyException(String description, SearchAdminUtilsUpdateDelegate updateDelegate, SearchAdminUtilsRefreshObjectDelegate refreshObjectDelegate) at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.CreateSearchApp() at Microsoft.Office.Server.Search.Administration.SearchConfigWizard.ProvisionSearchServiceApplication() at Microsoft.Office.Server.Search.Administration.SearchConfigurationJobDefinition.ExecuteTimerJob()</createsearchapp></span><span style="font-size:85%;"><br /></span><span style="font-family:verdana;">"<br /><br />Ooupppppps, so... so far.... no search service for my users :-/<br /><br />Mmmm, let's check what could have happened ...<br />This line is interesting "</span><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_TextInPlaceHolderMain" style="font-family:courier new;"> <span style="font-size:85%;">Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command) at Microsoft.Office.Server.Data.SqlServerManager.GrantLogin(String user) </span>"<br /><br />Am I having SQLServer secrutiy troubles??<br />If I check the security settings in SQL Server on my staging environment and on my production environment I notice that my service account on my production environment doesn't have the "SecurityAdmin" right ... DAMNED ! I GOT YOUUUUUUU !!<br /><br />Retry...<br />YESSSSSSSSSS !<br /><br /></span><span style="font-family:verdana;"><br /></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com11tag:blogger.com,1999:blog-7125185758096757175.post-6923607998389051532010-01-27T11:07:00.000+01:002010-01-27T11:15:34.188+01:00Term Store and views<span style="font-size:85%;"><span style="font-family: verdana;">After a 2 months using sharepoint 2010 every days, I have extracted in this new version a wonderfull feature : the term store. It allowed us to simplify a lot the architecture.</span><br /><br /><span style="font-family: verdana;">Now, the list of customers and projects to which the data is linked all around the information system is tagged using termsets. Easy to create, easy to maintin. </span><br /><br /><span style="font-family: verdana;">Before I had to create linked list to simulate the hierarchy... now, everything is done my itself.</span><br /><br />I won't make a all blog on this feature, some other blogs already did it :<br /><a href="http://www.wssdemo.com/Blog/Lists/Posts/Post.aspx?List=b853926a-b04e-4620-94e4-88a5d56cb262&ID=494&Web=d47402ad-1767-42ba-a072-133479a9bb5a">http://www.wssdemo.com/Blog/Lists/Posts/Post.aspx?List=b853926a-b04e-4620-94e4-88a5d56cb262&ID=494&Web=d47402ad-1767-42ba-a072-133479a9bb5a</a><br />or<a href="http://www.cmswire.com/cms/document-management/overview-sharepoint-2010-metadata-and-taxonomy-management-006015.php"><br />http://www.cmswire.com/cms/document-management/overview-sharepoint-2010-metadata-and-taxonomy-management-006015.php</a><br /><br /><span style="font-family: verdana;">One bad point though... This morning I wanted to create views grouped by my customer column (which is a managed metadata column), How disappointing it was when I noticed that It was simply impossible :( Those kind of column don't appear in the list.</span><br /><br /><span style="font-family: verdana;">So be aware that grouping and sorting is not available for Managed metadata columns. </span><br /></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-79155398581585713802009-12-18T11:33:00.000+01:002009-12-18T11:35:07.984+01:00SharePoint 2010 Beta Documentation<span style="font-size:85%;"><span style="font-family: verdana;">For some weeks, I have been looking around for help on sharepoint 2010... hard to find, we are almost all at the same level.</span><br /><br /><span style="font-family: verdana;">I have found this doc published a few days ago on technet :</span><br /><a style="font-family: verdana;" href="http://technet.microsoft.com/en-us/library/cc303422%28office.14%29.aspx">http://technet.microsoft.com/en-us/library/cc303422%28office.14%29.aspx</a><br /><br /><span style="font-family: verdana;">That's a good starting point !!!</span></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-79971746710329279652009-12-18T11:24:00.000+01:002009-12-18T11:36:58.568+01:00SharePoint 2010, and InfoPath 2010 for Form customization<span style="font-size:85%;"><span style="font-family:verdana;">It's been a while sinc my last post. for a month I have been working fully on the Sharepoint 2010 Beta.</span><br /><span style="font-family:verdana;">I have a really good feeling with the product that has some really good improvment :</span><br /></span><ul style="font-family:verdana;"><li><span style="font-size:85%;">I love the taxonomy system</span></li><li><span style="font-size:85%;">I love the ribbon<br /></span></li><li><span style="font-size:85%;">I love the form displayed on a layer (finally!!!)</span></li><li><span style="font-size:85%;">I love the performance services...</span></li></ul><span style="font-size:85%;"><span style="font-family:verdana;">...But there is something I have been Hating those last 2 days...</span><br /><br /><span style="font-family:verdana;">I have a VS2010 Solution containing new types (Located in 14/templates/XML/fldTypes_xxx.xml) that have a custom rendering (let's say two texteboxes). Those types are used in a content type I have developped too. This content type is used in a list.</span><br /><span style="font-family:verdana;">Because it makes a big form, I have tried the form customization feature with Infopath...</span><br /><span style="font-family:verdana;">I have been a bit disapointed...</span><br /><br /><span style="font-family:verdana;">All my custom fields that have a non standard type cannot be added on the infopath form (it mentions that when infopath is starting). So it means that I can customize my form but only without thos fields.. Useless for me... Sh**</span><br /><br /><span style="font-family:verdana;">I'm trying to find a way to integrate thos types in infopath 2010.. So far.. nothing...</span></span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-51168617371442567932009-11-18T21:27:00.000+01:002009-11-18T21:35:57.418+01:00Sharepoint 2010 Beta Download from today!!<span style="font-family: verdana;">Here it is. I have been to geneva last week for the club meeting #14 of the Swiss Sharepoint Club where the speakers have confirmed the release date of the Beta version. (great presentation ans workshops anyway). I thought I would receive early in the morning the link. It just came two hours ago.</span><br /><br /><a style="font-family: verdana;" href="http://technet.microsoft.com/en-gb/evalcenter/ee388573.aspx">Download SharePoint Beta 2010 (on the Technet site)</a>.<br /><br /><span style="font-family: verdana;">I'll install it tomorrow...</span>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-60039971217489594812009-08-21T10:13:00.000+02:002009-08-21T10:21:26.069+02:00Coachs SharePointI love it!!<br /><br />How many time I have been asked to create a document to explain how to do this or that to begginer developper.<br /><br />I have been waiting for a good and complete document for a while. On the msdn site, a really good one has been posted this spring (Yeah, I know I'm a bit late, but it's still a good thing to reference such a good link).<br /><br />It is composed by 4 workshops. They are well made, and contain essential tips<br />Try it on <a href="http://msdn.microsoft.com/fr-fr/office/msdn.coach.sharepoint.aspx">http://msdn.microsoft.com/fr-fr/office/msdn.coach.sharepoint.aspx</a>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com0tag:blogger.com,1999:blog-7125185758096757175.post-4993309545486807852009-07-21T10:02:00.000+02:002009-07-22T10:08:58.938+02:00SharePoint 2010 is comingAn overview video has been posted recently on the new SharePoint 2010 highligths :<div><br /></div><div>For overview:<br /><div><a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Overview-Video.aspx">http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Overview-Video.aspx</a></div><div><br /></div><div>For ITs:</div><div><a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/IT-Pro-Video.aspx">http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/IT-Pro-Video.aspx</a></div><div><br /></div><div>For developers :</div><div><a href="http://sharepoint.microsoft.com/2010/SNEAK_PEEK/Pages/Developer-Video.aspx">http://sharepoint.microsoft.com/2010/SNEAK_PEEK/Pages/Developer-Video.aspx</a></div><div><br /></div><div>It's a great one! Can't wait!!</div><div><br /></div></div>Alexawayhttp://www.blogger.com/profile/01573723261228535911noreply@blogger.com1