tag:blogger.com,1999:blog-42358066793726941462024-03-06T21:01:42.951+01:00Blog technique de Rémi MATAYRONCe blog est entièrement dédié aux technologies Microsoft SharePoint, InfoPath, WF, .Net et bien d'autres!Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.comBlogger218125tag:blogger.com,1999:blog-4235806679372694146.post-90260957468597750592015-11-30T11:30:00.006+01:002015-11-30T11:31:38.430+01:00SHAREPOINT 2013 : Installation sous Windows Server 2012 R2<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Lors de l'installation de SharePoint 2013 sous WS2012R2, vous pouvez rencontrez des soucis dans la phase d'installation des prérequis:<br />"The tool was unable to install Application Server Role, Web Server (IIS) Role"</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms";"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Cette erreur survient avec ou sans l'utilisation de l'AutoSPInstaller.<br />Après quelques recherches, il s'avère que ce problème est plutôt fréquent. Un article a même été mis à disposition par Microsoft: </span><a href="https://support.microsoft.com/en-us/kb/2765260"><span style="font-family: "trebuchet ms" , sans-serif;">https://support.microsoft.com/en-us/kb/2765260</span></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">La première erreur peut survenir du faire que vous ne possèdez pas le fichier "ServerManagerCmd.exe" sur le serveur. Il ne s'agit que d'une copie de l'exécutable "ServerManager.exe".<br />Pour se faire, vous pouvez lancer la commande PowerShell suivante:</span><br />
<blockquote class="tr_bq">
<span style="font-family: "trebuchet ms" , sans-serif; font-size: x-small;"><em>Import-Module ServerManager<br />Copy-Item -Path "$($ENV:SystemRoot)\System32\ServerManager.exe" -Destination "$($ENV:SystemRoot)\System32\ServerManagerCmd.exe" -Force</em></span></blockquote>
<br />
<div style="text-align: justify;">
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">Si le problème persiste, vous pourrez activez manuellement les fonctionnalités nécessaires "Application Server" et "Web Server" via PowerShell:</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;"></span><br />
<blockquote class="tr_bq">
<span style="font-family: "trebuchet ms" , sans-serif; font-size: x-small;"><em>Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45<br />Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer, `<br /> Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing, `<br /> Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext, `<br /> Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor, `<br /> Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering, `<br /> Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression, `<br /> Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server, `<br /> AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation, `<br /> AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model, `<br /> WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation, `<br /> Server-Media-Foundation,Xps-Viewer</em></span></blockquote>
<br />
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Il sera ensuite nécessaire de redémarrer le serveur et le tour est joué.</span></div>
</div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-46224776833647711732015-11-26T08:37:00.002+01:002015-11-26T08:38:33.966+01:00SHAREPOINT : Repackager un WSP manuellement<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Le développement dans SHAREPOINT s'articule autour du déploiement de WSP:</span></div>
<ul>
<li><div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Conception de solutions plus ou moins complexes de type ferme ou Sandbox (WebParts, modèles de sites, timer jobs, types de contenus, pages applicatives métiers),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Enregistrement de sites en tant que modèle (fonctionnalité offerte nativement par SharePoint qui se déploie en tant que Sandbox).</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Dans chacun de ces cas, il peut-être demandé de réaliser des modifications sur des WSP en production alors que les sources ne sont plus disponibles (si si, cela arrive...).</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms";">Si la modification est minime (pas de DLL à modifier), plutôt que de faire du retro engeneering, il peut-être avantageux de simplement modifier un fichier dans le WSP.</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms";"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Pour se faire, il faut tout d'abord comprendre l'architecture qu'un WSP. Il ne s'agit ni plus ni moins qu'un fichier CAB (ou archive) renommé en WSP. Il est donc possible d'extraire le contenu d'un WSP dans un répertoire après l'avoir renommé en CAB ou RAR puis l'avoir décompressé.</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Vous accédez donc à présent à l'ensemble des fonctionnalités comprises dans votre WSP et vous pouvez réaliser les modifications apportées. Mais comment reconcevoir le package une fois modifiée? Ce qui ont travaillé avec des archives CAB connaissent l'outil "MAKECAB" mais il est facile de se retrouver avec un package incorrect.</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;">Pour se faire, SharePoint intégre une méthode qui peut être appelée via le PowerShell pour SharePoint (il faudra être positionné sur un serveur SharePoint):</span></div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms";"></span> </div>
<div style="text-align: justify;">
<em>$destWSPfilename = "C:\TEMP\Repackage\MonNomdeWSP.wsp"</em><br />
<em>$sourceSolutionDir = [System.IO.DirectoryInfo]"C:\TEMP\Repackage\MonArchiveExtraite"</em></div>
<div style="text-align: justify;">
<em> </em></div>
<div style="text-align: justify;">
<em>$a = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")</em><br />
<em>$ctor = $a.GetType("Microsoft.SharePoint.Utilities.Cab.CabinetInfo").GetConstructors("Instance, NonPublic")[0]</em><br />
<em>$cabInf = $ctor.Invoke($destWSPfilename);</em></div>
<div style="text-align: justify;">
<em>$mi = $cabInf.GetType().GetMethods("NonPublic, Instance, DeclaredOnly")</em><br />
<em>$mi2 = $null</em><br />
<em>foreach( $m in $mi ) {</em><br />
<em> if( $m.Name -eq "CompressDirectory" -and $m.GetParameters().Length -eq 4 ) {</em><br />
<em> $mi2 = $m;</em><br />
<em> break;</em><br />
<em> };</em><br />
<em>}</em></div>
<div style="text-align: justify;">
<em>$mi2.Invoke($cabInf, @( $sourceSolutionDir.FullName, $true, -1,$null ));</em></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Il faudra donc uniquement modifier les 2 variables $destWSPFileName (correspondant à l'emplacement de regénrération de votre WSP) et $sourceSolutionDir (correspondant à votre répertoire contenant les fichiers extraits du WSP).</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Et le tour est joué, vous obtenez un magnifique WSP prêt à être déployé!</div>
<div style="text-align: justify;">
<span style="font-family: "trebuchet ms" , sans-serif;"> </span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-26015369682365120392015-10-03T10:37:00.002+02:002015-10-03T10:38:33.909+02:00MICROSOFT : Fin de l'aventure MVP<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">C'est avec regret que j'ai appris lors de ces derniers jours mon non-renouvellement en tant que MVP (Microsoft Most Valuable Professional). </span><span style="font-family: Trebuchet MS;">C'est donc la fin d'une belle aventure après 4 ans de bons et loyaux services au sein de ce programme. </span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">L</span><span style="font-family: Trebuchet MS;">'expertise "InfoPath" est supprimée du programme MVP étant donné que le produit est arrivé au terme de son cycle de vie.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Mais pour rappel, InfoPath sera supporté jusqu'en 2023 (10 ans après la dernière sortie du produit) et sera toujours disponible dans SharePoint 2016 via Forms Services.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Je continuerai donc malgré tout à poster des articles autour des technologies SharePoint et InfoPath avec un recentrage vers mon cœur de métier qui reste SharePoint.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-51626372582020334892015-09-07T16:28:00.003+02:002015-09-07T16:29:39.717+02:00SharePoint 2013 : Cache de sortie<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Un des axes d'amélioration des performances de SharePoint reste l'utilisation de mécanismes de cache. Outre le cache pouvant être mis en place sur les développements (côté client ou serveur), il existe un mécanisme natif de SharePoint nommé "Output Cache" (ou cache de sortie en bon français).</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour l'activer, il sera tout d'abord nécessaire de l'activer au niveau du web.config de chaque application web concernée. Pour cela, se positionner sur le tag nommé "BlobCache" dans le fichier de configuration. </span><span style="font-family: "Trebuchet MS", sans-serif;">Il faudra préciser l'attribut "Enabled=True" et spécifier les types de fichiers pouvant être mis en cache localement sur le serveur.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Par la suite, il est possible de le configurer au niveau du Back-Office de votre site SharePoint en se positionnant sur "Configure output cache settings".<br />Il est de même possible de réaliser ceci par modèle objet SharePoint si vous souhaitez l'activer lors du provisioning de votre site.<br />Pour se faire, il faudra utiliser le code managé suivant:</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<blockquote class="tr_bq">
<span style="font-size: x-small;">// Enable output cache<br /> SiteCacheSettingsWriter cacheSettingsWriter = new SiteCacheSettingsWriter(site);<br /> cacheSettingsWriter.EnableCache = true;<br /> // Set Public internet (purely anonymous) for anonymous page<br /> cacheSettingsWriter.SetAnonymousPageCacheProfileId(site, 2);<br /> // Set profile Intranet (collaboration site) for authenticated page<br /> cacheSettingsWriter.SetAuthenticatedPageCacheProfileId(site, 4);<br /> cacheSettingsWriter.Update();</span></blockquote>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">A présent, votre cache est à présent activé et vous pourrez noter l'amélioration des performances sur votre site SharePoint:</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypyMFRqLB-oACyYBsQO2xz4LDWiMwBqyFSpMaMNxasX3i3jOlEbSxPWDsj-xFyAS6MdMs69UZ0a6tOzpzbOk0-jPfWis6eTx7jsQK3UBlAmL__Qw50pz44M7rrOq0fVyv2ZMgrpu2Ntk/s1600/SP_OutputCache.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgypyMFRqLB-oACyYBsQO2xz4LDWiMwBqyFSpMaMNxasX3i3jOlEbSxPWDsj-xFyAS6MdMs69UZ0a6tOzpzbOk0-jPfWis6eTx7jsQK3UBlAmL__Qw50pz44M7rrOq0fVyv2ZMgrpu2Ntk/s400/SP_OutputCache.PNG" width="400" /></a></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com1tag:blogger.com,1999:blog-4235806679372694146.post-62636910556920814722015-08-19T14:44:00.001+02:002015-08-19T14:44:40.569+02:00Office 365 ProPlus : Mise à jour Office<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">La sortie de Windows 10 étant à présent officielle, il était temps de faire un refresh de mon PC vers le nouvel OS Microsoft.<br />La qualité de celui-ci est une bonne surprise : pas de problème de mise à jour à déplorer, la plupart des logiciels est compatible, interface conviviale et performante.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Après l'installation de Office 365 ProPlus (version Office Click to run), quelle ne fut pas ma surprise de revoir apparaître un logiciel nommé "Lync" (remplacé en début d'année Skype for Business).</span></div>
<div style="text-align: justify;">
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">J'ai donc lancé une mise à jour de mon PC via Windows Update afin de corriger ceci, mais "Lync" était toujours présent. En fait, le problème ne vient pas de Windows mais d'un changement de mode de mise à jour des versions Office 365.</span></div>
<div style="text-align: justify;">
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Il s'avère que sur une installation click to run de Office 2013, les mises à jour Office ne descendent plus par Windows Update comme précédemment. Pour procéder à la mise à jour, il est nécessaire d'ouvrir un logiciel Office (Word,Excel,...) puis d'aller dans "Fichiers"/"Compte office" et sélectionner "Mise à jour"...</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9pl-_yxEo6retf_7UHAiL9LgOnMJOIgqQtsLZ9W3REHu_HcBe606hZCqAfqxAELxgIKSDTOETS01Lo-wfmAvBXqSmIz2tlHc_SsQGXwpQFVXQFyYdBqGHumPQcjYiN7YoP6JACHopD5k/s1600/Office+for+Office365+update.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9pl-_yxEo6retf_7UHAiL9LgOnMJOIgqQtsLZ9W3REHu_HcBe606hZCqAfqxAELxgIKSDTOETS01Lo-wfmAvBXqSmIz2tlHc_SsQGXwpQFVXQFyYdBqGHumPQcjYiN7YoP6JACHopD5k/s320/Office+for+Office365+update.PNG" width="320" /></a></div>
<br />
<span style="font-family: "Trebuchet MS", sans-serif;"><br />
</span><div style="text-align: justify;">
<br /></div>
<span style="font-family: "Trebuchet MS", sans-serif;">
</span><br />
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com1tag:blogger.com,1999:blog-4235806679372694146.post-45217996417961154872015-08-11T19:59:00.001+02:002015-08-11T19:59:42.819+02:00INFOPATH : Vider le cache<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lors de l'utilisation de formulaires InfoPath (en mode client lourd), stockés dans SharePoint, il peut arriver que le formulaire n'ouvre pas la dernière version du modèle de formulaire.<br />Ce problème provient du fait que le modèle de formulaire est stocké en cache localement sur votre machine.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour utiliser la dernière version du modèle, il suffit d'utiliser la commande suivante permettant de vider le cache d'InfoPath de votre PC:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lancer une fenêtre "Run" sur votre ordinateur (Windows + R),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Taper la commande "Infopath /cache clearall" et appuyer sur "OK",</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">InfoPath s'ouvrira sur votre machine et vous vous apercevrez que l'historique des modèles de formulaire aura disparu.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le tour est joué, vous pourrez à présent utiliser la dernière version du formulaire.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-86173669752630965662015-08-10T21:56:00.001+02:002015-08-10T21:56:38.839+02:00SHAREPOINT 2013 : Contrôle des développements<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">L'utilisation massive de SharePoint dans les entreprises impose aux sociétés de s'assurer de la bonne santé de leur environnement SharePoint 2013.<br />Cela commence par une infrastructure qui tient la route, une topologie adaptée mais aussi et surtout par un contrôle des développements réalisés.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">En effet 90% des dégradations des performances sur des environnements SharePoint proviennent de développements ne respectant pas les guidelines et bonnes pratiques de Microsoft (objets SP non disposés, requêtes CAML sans RowLimit,...).</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />Après l'essai de divers outils du marché, il me semble que l'outil "SPCAF" (SharePoint Code Analysis Framework) est parfaitement adapté à ce genre de besoins. Le site de l'éditeur est disponible à l'adresse suivante : <a href="http://www.spcaf.com/">http://www.spcaf.com/</a></span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Cet outil se décompose en 2 axes principaux : </span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Une application cliente permettant d'inspecter un WSP. Cette partie est plutôt orienté chef de projet avant livraison ou client final, </span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Un add-in pour Visual Studio permettant de contrôler le code tout au long de la phase de conception de la solution VS. Cette partie est donc plutôt orientée développeur SP.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Les contrôles de qualité sont réalisés selon diverses catégories : bonnes pratiques, sécurité, design, déploiement, ressources, interface utilisateur. Les règles sont prédéfinies mais peuvent être étendues si besoin. Après utilisation, je peux vous assurer que les règles natives sont très largement suffisantes!<br />Chacun des éléments remontés par l'analyse sont classés selon leur criticité : critique, sévérité haute, sévérité moyenne, sévérité faible.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour compléter le tout, ce produit permet aussi de générer:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">des métriques de code (XML, ASPX, HTML, CSS, JS),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">des inventaires (champs, types de contenus, définitions de listes, WebParts),</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Il est très rare de faire de la promotion pour des outils commerciaux mais la qualité de ce produit en fait un élément incontournable dans la trousse à outils SharePoint!</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-45422016747639753912015-07-28T22:51:00.001+02:002015-07-28T22:51:32.727+02:00WINDOWS SERVER 2012 : Référencer une dll manuellement<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">L'installation d'une dll dans le GAC d'un serveur Windows Server 2012 peut-être réalisée via PowerShell.<br />Windows Server 2012 ne présente pas de commande "GACUTIL" par défaut et il n'est pas possible de réaliser un drag and drop dans le catalogue des assembly comme sur les anciennes versions.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour enregistrer une dll, il suffit d'utiliser les commandes PowerShell suivantes:</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<blockquote class="tr_bq">
<em>Set-location "c:\dlltemprepository"<br /> [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")<br /> $publish = New-Object System.EnterpriseServices.Internal.Publish<br /> $publish.GacInstall("c:\dlltemprepository\dllName.dll")<br /> iisreset</em></blockquote>
<br />
<br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour supprimer la dll, il suffit d'utiliser les commandes PowerShell suivantes:</span><blockquote class="tr_bq">
<span style="font-family: "Trebuchet MS", sans-serif;"> <span style="font-family: inherit;"><em>Set-location "c:\dlltemprepository"<br /> [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")<br /> $publish = New-Object System.EnterpriseServices.Internal.Publish<br /> $publish.GacRemove("c:\dlltemprepository\dllName.dll")<br /> iisreset</em></span></span></blockquote>
<span style="font-family: "Trebuchet MS", sans-serif;"><br /></span><br /></div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-4115190959501087512015-07-15T18:36:00.005+02:002015-07-15T18:49:59.034+02:00SHAREPOINT 2013 : Work management service<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Aujourd'hui un article sur un service applicatif souvent méconnu dans SharePoint : "Work management service". </span><span style="font-family: "Trebuchet MS", sans-serif;">Ce service a fait son apparition dans la version SP2013 et répond à un problème souvent rencontré par les utilisateurs de SharePoint : Comment centraliser les tâches d'un utilisateur dans un seul espace!</span><br />
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span><br />
<div>
<span style="font-family: "Trebuchet MS", sans-serif;">Dans les versions précédentes du produit, certains éditeurs s'étaient engoufrés dans le besoin afin de répondre au besoin. </span><span style="font-family: "Trebuchet MS", sans-serif;">Pour combler le manque de solution natives, Microsoft à mis au point ce service qui s'appuie nativement sur des tâches de type:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">SharePoint : Tâches associées aux types de contenus "TasksWithTimelineAndHierarchy", "Task", "GanttTasks",</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Project server (si installé et configuré),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Exchange server (uniquement pour SharePoint Server).</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Custom provider : Il est en effet possible d'étendre les capacités de ce service en connectant d'autres systèmes de tâches (tâches TFS,...) via un custom provider.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le principe de fonctionnement du service pour les tâches de type SharePoint est le suivant:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Un élément est rajouté dans une liste de tâche SharePoint 2013,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le moteur de recherche indexe le contenu de ma web application (dont ma tâche),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lorsque du rafraichissement de la liste des tâches du site personnel, une interrogation au moteur de recherche permet d'agréger la liste des tâches personnelles de l'utilisateur saisies à cet emplacement avec la liste des tâches disponibles sur les différents environnements (certaines informations telles que les projets sont conservées en cache). Les tâches seront groupées par projet afin d'obtenir une information de qualité.</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Des notifications d'affectation de tâches apparaissent pour avertir l'utilisateur.</span></div>
</li>
</ul>
<div style="text-align: justify;">
</div>
</div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-17392203550003517772015-07-07T11:07:00.001+02:002015-07-07T11:07:36.235+02:00SHAREPOINT 2013 : Test-SPContentDatabase<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Un axe de gouvernance des fermes SharePoint reste la vérification de vos sources de contenus.</span><br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour se faire, il existe la commande "Test-SPContentDatabase" qui est souvent utilisée dans le cas des migrations avant de lancer un "Mount" de cette base.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Dans le cadre de migration, elle permet de détecter les différence de configuration entre vos fermes sources et de destinations et permet de s'assurer qu'aucune personnalisation ne soit oubliée:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Missing Assembly,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Missing SetupFile,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Missing Feature,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Missing WebPart,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Claims configuration,</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span><br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Mais cette commande peut très bien être utilisée en dehors d'un scénario de migration afin de vérifier l'intégrité de vos bases SharePoint. </span><span style="font-family: "Trebuchet MS", sans-serif;">Il peut devenir un outil de gouvernance révélateur de la bonne santé de vos bases de données de contenus.</span><br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Voici un petit script PowerShell permettant de scruter la totalité des bases de contenus de votre ferme SharePoint (avec enregistrement des résultats dans un fichier CSV par base):</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>Add-PSSnapin Microsoft.SharePoint.PowerShell</em></span><br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>$SaveFolder = "C:\TEMP\"</em></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>Foreach ($DBContent in Get-SPContentDatabase)</em></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>{</em></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em> Write-Host "Testing Web Application -" $DBContent.WebApplication.DisplayName -ForegroundColor Green ;</em></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em> Test-SPContentDatabase -Name $DBContent.Name -WebApplication $DBContent.WebApplication.Url -ServerInstance $DBContent.Server | ConvertTo-Csv | Out-File -Encoding default -FilePath $($SaveFolder + $DBContent.Name + ".csv")</em></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>}</em></span></div>
</div>
</div>
</div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-85932755211229469562015-06-24T08:43:00.000+02:002015-06-24T08:44:22.736+02:00SHAREPOINT 2013 : Personnalisation du suitebar<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lorsque vous administrez de nombreuses fermes SharePoint (Développement, Test, UAT, Production, Fermes de services, ...) , il est vite arrivé de confondre les environnements.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />Outre la technique de modification du thème de l'administration centrale pour les distinguer rapidement, il peut être intéressant de disposer d'une présentation de la ferme (agrémenté de sa version de patch par exemple).</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour se faire, il est possible de personnaliser le "suitebar" de l'administration centrale pour insérer ces informations. Il suffit d'ouvrir un éditeur PowerShell pour SharePoint et de lancer les commandes suivantes :</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<blockquote class="tr_bq">
<span style="font-family: Trebuchet MS; font-size: x-small;">$ca = Get-SPWebApplication -IncludeCentralAdministration | ?{$_.IsAdministrationWebApplication -eq $true}<br />$ca.SuiteBarBrandingElementHtml = "</span><span style="font-family: Trebuchet MS; font-size: x-small;">SP2013 - Ferme de développement - Build May 2015 CU (15.0.4719.1000)</span><span style="font-family: Trebuchet MS; font-size: x-small;">"<br />$ca.Update()</span><br />
</blockquote>
</div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Voici le rendu :</span> </div>
<div style="text-align: justify;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Yi7UzFXQHC5gbUE5xDtCkibXAieXxEb-sowSbC4x4rgn5aqEYz9HS_svqzIboUBVRr9ELjT2IgxKnJl95pllVva4qKiFrNYYRR7DG1_lAc6apeApkN0T0gAEWaZ6ZokYRxHiPzdH9D8/s1600/SP_SuiteBar.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Yi7UzFXQHC5gbUE5xDtCkibXAieXxEb-sowSbC4x4rgn5aqEYz9HS_svqzIboUBVRr9ELjT2IgxKnJl95pllVva4qKiFrNYYRR7DG1_lAc6apeApkN0T0gAEWaZ6ZokYRxHiPzdH9D8/s400/SP_SuiteBar.PNG" width="400" /></a></div>
<div style="text-align: justify;">
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-66904859536566645862015-06-05T18:57:00.002+02:002015-06-05T18:57:35.381+02:00SHAREPOINT : Lenteur people picker<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Petit retour d'expérience sur un incident rencontré sur une ferme SharePoint d'un client : Le sélecteur de personnes de SharePoint prenait subitement énormément de temps à résoudre les utilisateurs.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le case était le suivant:</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lorsque l'on saisi le nom de l'utilisateur exact et que l'on valide, la résolution de l'utilisateur est réalisée rapidement. Par contre, lors de la recherche de l'utilisateur via le dictionnaire, le temps de recherche dépasse plus de 20 secondes.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Comme cela est souvent le cas, il s'agit d'un problème de firewall. Ceci étant vérifiable grâce à des captures NetMon ou Wireshark.</span><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> <div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Après aprofondissement, il est conseillé de disposer de l'ouverture des ports et protocoles suivants pour le bon fonctionnement de votre people picker SharePoint:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP/UDP 135, 137, 138, 139 (RPC),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP/UDP (défaut : 389) (LDAP),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP (défaut : 636) (LDAP SSL),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP 3268 (LDAP GC),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP 3269 (LDAP GC SSL),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP/UDP 53 (DNS),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP/UDP 88 (Kerberos),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">TCP/UDP 445 (Directory Services)</span></div>
</li>
</ul>
<span style="font-family: "Trebuchet MS", sans-serif;"><div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
</span></div>
</div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-77751179278315879702015-06-03T15:25:00.002+02:002015-06-03T15:25:34.066+02:00SHAREPOINT 2013 : The Managed Metadata Service or Connection is currently not available<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Lors de l'administration de vos fermes SharePoint, il peut arriver de rencontrer cette erreur sur le service de métadonnées gérées (qui fonctionnait parfaitement la veille).</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbF_ZtAQJulxJEgQdxZKQ_E-zTfKtiIJJBt7y6bpEeJJbrQNO3ZFOJ7SBroS_4CUUD73KHvjcICdWxum5KXl20QmCrcgkNp7m_C6vrojEqd5S1fiV3wNgCBoyiE6AOd-SnkAu0L-LoEA/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbF_ZtAQJulxJEgQdxZKQ_E-zTfKtiIJJBt7y6bpEeJJbrQNO3ZFOJ7SBroS_4CUUD73KHvjcICdWxum5KXl20QmCrcgkNp7m_C6vrojEqd5S1fiV3wNgCBoyiE6AOd-SnkAu0L-LoEA/s640/Capture.PNG" width="640" /></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">L'erreur disponible dans les logs ULS n'est généralement pas très parlante:</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif; font-size: x-small;"><em>Failed to get term store for proxy ‘Managed Metadata Service’. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.</em></span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Après les vérifications d'usage, il est possible de réaliser les étapes suivantes pour essayer de corriger le dysfonctionnement:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Redémarrer le service métadonnées géréees sur la ferme (depuis "manage services on server"),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Vérifier que les autorisations et permissions sont correctement positionnées sur le service de métadonnées.</span></div>
</li>
</ul>
<span style="font-family: "Trebuchet MS", sans-serif;"><div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Si cela ne fonctionne pas suite à ces modifications, il est possible de réaliser la modification suivante pour remettre le service en état actif:</div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
Cliquer sur "Propriétés" sur le service de métadonnées gérées (depuis "Manage service applications"),</div>
</li>
<li><div style="text-align: justify;">
Modifier le nom de la base de données associée au service, ainsi une nouvelle base de données sera créée sur le serveur (par exemple "SP13_MMS_TEMP"),</div>
</li>
<li><div style="text-align: justify;">
Suite à cette manipulation, vérifier que le service s'ouvre correctement (il n'affichera pas de données car la base créée précédemment est vierge),</div>
</li>
<li><div style="text-align: justify;">
Repositionner l'ancien nom de la base de données de métadonnées (avant le renommage en "SP13_MMS_TEMP"),</div>
</li>
<li><div style="text-align: justify;">
Vérifier que votre service de métadonnées gérées est à présent opérationnel.</div>
</li>
</ul>
<div style="text-align: justify;">
</div>
<br />
<br />
</span> </div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-24789053112001369852015-05-26T09:50:00.001+02:002015-05-26T09:50:14.691+02:00SHAREPOINT 2013 : Filtrer une vue par format date et heure<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Aujourd'hui, un retour sur un besoin simple : Comment filtrer une vue SharePoint selon un format date/heure?<br />Nativement, via l'interface de conception de vue SharePoint, il n'est pas possible de filtrer sur autre chose qu'une date (le format heure n'est pas pris en compte et vous empêchera de valider vote filtre : "Le format de date de la valeur de filtre n'est pas pris en charge").</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour réaliser ce besoin, il sera nécessaire d'utiliser du PowerShell afin de modifier la requête CAML permettant de filtrer la vue. La solution réside dans l'utilisation de l'attribut "IncludeTimeValue" qui permet d'utiliser des filtres sur les dates et heures:</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<blockquote class="tr_bq" style="text-align: justify;">
<div style="text-align: left;">
$web = get-spweb "<a href="http://spdemolab/">http://spdemolab/</a>"<br />$list = $web.Lists["ListeAModifier"]<br />$view = $list.Views["Tous les éléments"]<br />$view.Query = "<orderby><fieldref name="FileLeafRef"></fieldref></orderby><where><gt><fieldref name="Created"><value includetimevalue="True" type="DateTime">2015-05-22T19:40:00Z</value></fieldref></gt></where>"<br />$view.Update()<br />$web.Dispose()</div>
</blockquote>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le principe est donc une modification de la vue via son attribut "Query" puis une mise à jour de celles-ci.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-69767942267057062562015-05-12T20:06:00.004+02:002015-05-12T20:06:47.160+02:00MS IGNITE Chicago : Sessions<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">La semaine dernière a eu lieu le MS Ignite à Chicago.<br />Le but de cette grande messe est de remonter toutes les informations sur les futures orientations, les nouveaux produits et innovations de Microsoft.</span><span style="font-family: "Trebuchet MS", sans-serif;">Les sessions parlent donc essentiellement de Windows 10, SharePoint 2016, Yammer, Azure, ASP.Net vNext et bien d’autres…</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Il est possible de récupérer en local toutes les sessions en utilisant le script PowerShell fourni par Vlad Catrinescu:</span><a href="http://absolute-sharepoint.com/2015/05/the-ultimate-script-to-download-microsoft-ignite-videos-and-slides.html"><span style="font-family: "Trebuchet MS", sans-serif;">http://absolute-sharepoint.com/2015/05/the-ultimate-script-to-download-microsoft-ignite-videos-and-slides.html</span></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour récupérer ces vidéos, il suffira de lancer le script en ayant modifié au préalable l’adresse d’enregistrement sur votre PC grâce à la variable : $downloadlocation<br />Il est même prévu de filtrer sur les thématiques qui vous intéresse en passant un paramètre keyword lors de l’appel.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Enjoy!</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-38703104898443214552015-05-05T08:58:00.001+02:002015-05-05T09:05:57.327+02:00SHAREPOINT 2013 : Supprimer les pages systèmes des résultats de recherche<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Une remarque récurrente des clients lors de l'utilisation du moteur de recherche SharePoint par les clients est la remontée des pages systèmes dans les résultats.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Nous pouvons citer par exemple les pages allitems.aspx (associées aux vues), les "thumbnail.aspx" (pour les images), les pages situées dans le répertoire forms (excepté le dispform.aspx).</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"> </span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour supprimer ces résultats, il existe deux façons:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: left;">
<span style="font-family: "Trebuchet MS", sans-serif;">Vue une crawl rule (Règle d'analyse) dans le moteur de recherche de l'administration centrale. Dans "Chemin", entrer la valeur </span><a href="http://*/allitems.aspx"><span style="font-family: "Trebuchet MS", sans-serif;">http://*/allitems.aspx</span></a><span style="font-family: "Trebuchet MS", sans-serif;"> puis sélectionner exclure dans la "analyser la configuration" associée:</span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8A-2sVU_vMh71h2TjbfI0QoRumFgjf7D0xVhq-OVIY1-vq5kxIhMsT_ptVh5S6mgJMO_lul3XI4IHA-mL11kGmLvijAroehdPYTIcF0MVtTlpGK4-SpPs90DG22TAqdtRzYL8Xb3u7Zs/s1600/Crawlrule.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8A-2sVU_vMh71h2TjbfI0QoRumFgjf7D0xVhq-OVIY1-vq5kxIhMsT_ptVh5S6mgJMO_lul3XI4IHA-mL11kGmLvijAroehdPYTIcF0MVtTlpGK4-SpPs90DG22TAqdtRzYL8Xb3u7Zs/s400/Crawlrule.PNG" width="400" /></a><br />
<span style="font-family: "Trebuchet MS", sans-serif;"><br />En utilisant cette technique, le nombre d'éléments dans le crawl va grandement décroitre (cf dans la copie d'écran ci-dessous, nous passons de 182 à 46):</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibS2mrNLmCqgT7L9gGCA9eti6qlasxF3JJ155xPR9VEhrF5PgrFrXZ_sA6yC9mYBFrbW6_gvd38grTJYLLTUrnbxgZiIRHw4hP3yYZEsmP3pa3GBB4-EFNJ66DIDzI-eKlx-Ch3HAFqNE/s1600/CrawlResultat.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibS2mrNLmCqgT7L9gGCA9eti6qlasxF3JJ155xPR9VEhrF5PgrFrXZ_sA6yC9mYBFrbW6_gvd38grTJYLLTUrnbxgZiIRHw4hP3yYZEsmP3pa3GBB4-EFNJ66DIDzI-eKlx-Ch3HAFqNE/s400/CrawlResultat.PNG" width="400" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"> </span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">En modifiant la requête sur chaque page de recherche. Il faudra alors ajouter la partie de requête suivante : "-filename:allitems.aspx" à la suite de l'habituel {searchTerms}. Le signe "-" permet de supprimer l'élément des résultats de recherche.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">La deuxième solution reste plus fine et n'impactera pas tous les résultats de votre ferme SharePoint. Je pense notamment qu'elle pourrait s'appliquer à certaines pages de recherches spécifiques mais vous pourrez toujours renvoyer les bibliothèques et listes dans vos résultats de recherche sur les autres pages.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-59465477241350049792015-04-23T09:00:00.002+02:002015-04-23T09:21:16.915+02:00SHAREPOINT 2013 : Vérifier page en mode édition<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<br />
<span style="font-family: Verdana, sans-serif;">Aujourd'hui un petit post sur la détection en JavaScript du mode édition sur une page SharePoint.<br />Sur une page de publication, il suffit d'interroger la valeur d'une variable existante:</span><br />
<span style="font-family: Verdana;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1BN-QqiMmu6ra5NuI0rFGJ3d34gjzWSKuXr_9tZVuj4xUliLcGO3o5heuJ_YamonKQdJbCrwgSrN0sWY63InKlwSPqknvsmDRWewas86QNol89iC_F1HTU1wX1oQiDGYkP6UQXZ7mz9k/s1600/ImagePublishing2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1BN-QqiMmu6ra5NuI0rFGJ3d34gjzWSKuXr_9tZVuj4xUliLcGO3o5heuJ_YamonKQdJbCrwgSrN0sWY63InKlwSPqknvsmDRWewas86QNol89iC_F1HTU1wX1oQiDGYkP6UQXZ7mz9k/s1600/ImagePublishing2.PNG" height="123" width="320" /></a></div>
<span style="font-family: Verdana, sans-serif;"><br />Il est de même possible d'utiliser les modifications suivantes dans la page maitre sur un site de publication:</span></div>
<br />
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkI4OcPbGZxTMVR6OVBeSRTAYAzqap4nFIHRWWw3v0k-kq1QExceSQvNWCXWfLxV4X9LJMJbsn6xyApk04L3Yo9rqerpoYrkrZQb82ICaaxZuOcZzT0KXzS_0WHOEAIjF5JFtWEPAy1Sg/s1600/ImagePublishing.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkI4OcPbGZxTMVR6OVBeSRTAYAzqap4nFIHRWWw3v0k-kq1QExceSQvNWCXWfLxV4X9LJMJbsn6xyApk04L3Yo9rqerpoYrkrZQb82ICaaxZuOcZzT0KXzS_0WHOEAIjF5JFtWEPAy1Sg/s1600/ImagePublishing.PNG" height="91" width="400" /></a><em><span style="font-family: Trebuchet MS; font-size: x-small;"><br /><script type="text/javascript"><br /> IsEditMode = true;<br /> </script></span></em></div>
</div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"></span><br />
<span style="font-family: Verdana, sans-serif;">Il suffira à présent d'utiliser la variable "IsEditMode" pour tester que la page est bien en mode édition.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Mais ce serait trop simple si tous les cas étaient traités avec cette simple manipulation. Sur les pages Wiki, il faudra ajouter le script suivant pour détecter le mode édition:</span><br />
<span style="font-family: Verdana;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm7DbOCIpXTe7c844j-sc8wvq1Wdj4BI6nKAeKUBsetfOc4VWmBX_FjthBXC7PdVBOPqHlZLqHWbkAUxIgT7bL4XThdjy61WzHBlXlYb-ORkXJy7k-8dDKSqC_Asrhkogju8rw1i0IPBs/s1600/ImagePublishingWiki.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm7DbOCIpXTe7c844j-sc8wvq1Wdj4BI6nKAeKUBsetfOc4VWmBX_FjthBXC7PdVBOPqHlZLqHWbkAUxIgT7bL4XThdjy61WzHBlXlYb-ORkXJy7k-8dDKSqC_Asrhkogju8rw1i0IPBs/s1600/ImagePublishingWiki.PNG" height="111" width="400" /></a></div>
<br />
<br />
<span style="font-family: "Trebuchet MS", sans-serif;">Pour les pages de WebPart, il faudra utiliser le script suivant:</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2WdDpcYFkvVdJWBITg6jy7zPjHUtt_6V-2SSRd36nzhfBgIJpc4qDhyzH0X5IykJHCSCZXewjxmqqNoZ6bt5x2Qe20NaS44h8KZPpFZ79pDAU031PgMh9TK6UqX1JrnyCJBcb7ny0gw4/s1600/ImagePublishingWebPart2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2WdDpcYFkvVdJWBITg6jy7zPjHUtt_6V-2SSRd36nzhfBgIJpc4qDhyzH0X5IykJHCSCZXewjxmqqNoZ6bt5x2Qe20NaS44h8KZPpFZ79pDAU031PgMh9TK6UqX1JrnyCJBcb7ny0gw4/s1600/ImagePublishingWebPart2.PNG" height="98" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Il sera tout de même nécessaire de tester sur les 2 derniers scripts que les valeurs ne sont pas nulles avant d'accéder à la propriété value: </span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">(typeof document.forms[MSOWebPartPageFormName]._wikiPageMode != 'undefined'</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">(typeof document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode!= 'undefined'</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-29403394023062417482015-04-17T20:28:00.000+02:002015-04-17T20:28:45.512+02:00SHAREPOINT 2013 : Mapper propriété UPS sur attribut AD<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le service de profil utilisateur de SharePoint 2013 met à disposition des propriétés utilisateurs pouvant être utilisées dans vos applications. Dans ce contexte, il peut être intéressant de mapper ces propriétés sur des attributs de l'Active Directory.</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour se faire, il peut être intéressant d'utiliser un script PowerShell (l'avantage est qu'il permet un déploiement uniforme entre les divers environnements).</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />Le script suivant permet de parcourir chacune de vos connexions AD définies dans l'UPS et d'ajouter le mappage de la propriété AD "mail" sur la propriété utilisateur "WorkEmail".</span></div>
<div>
</div>
<blockquote class="tr_bq">
# Récupération du UPS associé au site sharepointsite<br />
$site = New-Object Microsoft.SharePoint.SPSite "<a href="http://sharepointsite/">http://Sharepointsite</a>"<br />
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($site)<br />
$configManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager $context<br />
# Parcours de toutes les connexions AD définies dans l'UPS<br />
foreach ($ADConnection in $configManager.ConnectionManager)<br />
{<br />
Write-Host $ADConnection.DisplayName -foregroundcolor blue<br />
# Ajout du mappage de la propriété "WorkEmail" sur l'attribut AD nommé "mail"<br />
Write-Host $ADConnection.DisplayName "- Workemail" -foregroundcolor green<br />
$ADConnection.PropertyMapping.AddNewMapping([Microsoft.Office.Server.UserProfiles.ProfileType]::User,"WorkEmail","mail")<br />
...<br />
}</blockquote>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-39475785748437830512015-04-12T10:54:00.001+02:002015-04-12T10:58:00.829+02:00SHAREPOINT 2013 : Liste des collections de sites<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "Trebuchet MS", sans-serif;">Aujourd'hui, une petite commande PowerShell utile pour tout administrateur SharePoint.</span><br />
<span style="font-family: "Trebuchet MS", sans-serif;">En effet, certaines interfaces de l'administration centrale de SharePoint ne sont pas conçues pour synthétiser l'information, il est donc nécessaire de réaliser des extractions ou des audits via les applets de commandes PowerShell pour SharePoint.</span><br />
<br />
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span><span style="font-family: "Trebuchet MS", sans-serif;">La commande ci-dessous permet</span><span style="font-family: "Trebuchet MS", sans-serif;"> de d'obtenir la liste des collections de sites présentes sur une ferme SharePoint ou sur une application web spécifique.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><em>Get-SPWebApplication -Limit All | Get-SPSite | Format-Table -Property URL,ContentDatabase</em>, Owner, SecondaryOwner</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour expliquer le fonctionnement:</span></div>
<ul>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Get-SPWebApplication récupère une collection d'applications web. Le paramètre -Limit All permet de ramener toutes les applications web de la ferme SP. Il serait possible de spécifier une application web particulière en précisant l'url,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Get-SPSite : Récupère la liste des collections de sites associées à la (ou les) application(s) web SharePoint.</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Format-Table : Affiche les données en renvoyant les propriétés sélectionnées.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Tout cela en une seule ligne, merci Powershell! Réaliser la même chose en code managé aurait pris au moins une vingtaine de lignes. </span><br />
<span style="font-family: "Trebuchet MS", sans-serif;">L'utilisation de PowerShell pour administrer et auditer SharePoint doit être un reflexe.</span><br />
<span style="font-family: Trebuchet MS;"></span> </div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com2tag:blogger.com,1999:blog-4235806679372694146.post-20756002562145637932015-03-23T19:34:00.004+01:002015-03-23T19:34:47.171+01:00WAC : Vérifier la version de votre serveur Offce Web Apps<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Sur un serveur WAC (Office Web Apps 2013), il n'existe pas d'interface déportée, comme l'administration centrale de SharePoint, permettant de trouver votre niveau de version.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Si vous allez dans les programmes installés sur le serveur, vous n'obtiendrez que la version classique (RTM, SP1,...) mais pas plus. </span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Comme dans SharePoint, il n'est pas possible de déterminer la CU ou le patch de sécurité installé via cet écran.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour se faire, il suffit de se connecter de vous connecter sur votre serveur Office Web Apps et de lancer la commande PowerShell suivante:</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">
</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: justify; text-indent: 35.4pt; vertical-align: middle;">
<span style="font-family: "Trebuchet MS", sans-serif;"><strong><span lang="EN" style="font-family: "Calibri",sans-serif; mso-ansi-language: EN;">get-content
C:\ProgramData\Microsoft\OfficeWebApps\Data\local\OfficeVersion.inc</span></strong><span lang="EN-US" style="color: black; mso-ansi-language: EN-US;"><o:p></o:p></span></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">
</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Le résultat sera le suivant:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBCcj_uRk_vAhX3lc40AIwqM7g-iQwc0edrvIpvpIGhYOonJeKX8DhSrh81zGAHvuXMxHFRH7xntYsk8lw0z3apUD79ES8b8d-XDqo9R9nixZFJadBJMj5O3CVWCjoX9hshqN-8OACHLQ/s1600/WAC_Version.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBCcj_uRk_vAhX3lc40AIwqM7g-iQwc0edrvIpvpIGhYOonJeKX8DhSrh81zGAHvuXMxHFRH7xntYsk8lw0z3apUD79ES8b8d-XDqo9R9nixZFJadBJMj5O3CVWCjoX9hshqN-8OACHLQ/s1600/WAC_Version.PNG" /></a></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Par exemple ici, il s'agit de la build 15.0.4701.1000 correspondant au patch de sécurité "Mars 2015".</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-70876898044438510402015-03-17T09:31:00.002+01:002015-03-17T09:31:33.709+01:00SHAREPOINT 2013 : Envoi de mail sur liste de tâche<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Aujourd'hui, une petite astuce lors de la conception de modèle de listes basés sur le modèle "Tâches" de SharePoint 2013. </span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Le fonctionnement natif est l'envoi automatique d'un mail lorsqu'une tâche est affectée à l'utilisateur. </span><span style="font-family: "Trebuchet MS", sans-serif;">Cette option est visible dans les paramètres avancés de la liste de tâches, puis "Email notification option":</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrbhZ5BfNNzWHGiXN1RC1IAlcoTWeFHhTqPXv-LARB2-G12DcBP31ah187IqElRdwPkXaHqoz8MCGSk9YXFm9qQZywL8SFjrOOvVHewqmUX1XqgmZqzTRzjMEXjpGHCWjrwrX-8bjTdks/s1600/SharePoint_EmailOwnerShip.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrbhZ5BfNNzWHGiXN1RC1IAlcoTWeFHhTqPXv-LARB2-G12DcBP31ah187IqElRdwPkXaHqoz8MCGSk9YXFm9qQZywL8SFjrOOvVHewqmUX1XqgmZqzTRzjMEXjpGHCWjrwrX-8bjTdks/s1600/SharePoint_EmailOwnerShip.PNG" height="87" width="400" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Mais comment intégrer automatiquement cette option dans un modèle de liste?</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Pour se faire, il faut rajouter l'attribut "<span class="atn">EmailAssignTo" dans la définition de votre modèle de liste (sur le nœud "List"):</span></span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><span class="atn"></span></span> </div>
<span style="font-family: "Trebuchet MS", sans-serif;"><span class="atn"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><</span></span></span><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;"><span style="color: #a31515; font-family: Consolas; font-size: x-small;">List</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"> </span></span></span><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;">xmlns:ows</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">=</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">Microsoft SharePoint</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"> </span></span></span><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;">Title</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">=</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">MyTask</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"> </span></span></span><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;">Name</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">=</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">MyTask</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"> <span style="color: black;">...</span> </span></span></span><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;"><span style="color: red; font-family: Consolas; font-size: x-small;">EmailAssignTo</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">=</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">TRUE</span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;">"</span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"> </span></span></span><span style="font-family: Consolas; font-size: x-small;"><span style="font-family: Consolas; font-size: x-small;"><span style="color: black; font-family: Consolas; font-size: x-small;">...</span></span></span><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;"><span style="color: blue; font-family: Consolas; font-size: x-small;">></span></span></span></span></span></span></span></span><div style="text-align: justify;">
<span class="atn"><span style="font-family: "Trebuchet MS", sans-serif;"></span></span> </div>
<div style="text-align: justify;">
<span class="atn"><span style="font-family: Trebuchet MS;"></span></span> </div>
<div style="text-align: justify;">
<span class="atn"><span style="font-family: "Trebuchet MS", sans-serif;">Cette propriété n'est actuellement pas documentée sur le MSDN : </span><a href="https://msdn.microsoft.com/en-us/library/ms415091.aspx"><span style="font-family: "Trebuchet MS", sans-serif;">https://msdn.microsoft.com/en-us/library/ms415091.aspx</span></a><span style="font-family: "Trebuchet MS", sans-serif;"> . </span></span><span class="atn"><span style="font-family: Trebuchet MS;">Malgré tout, cela fonctionne correctement.</span></span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-80299427647987424852015-03-03T18:45:00.004+01:002015-03-03T18:46:30.658+01:00SharePoint 2013 : Envoi d'un mail via l'API REST<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">L'ouverture de SharePoint 2013 vers le modèle client (notamment grâce aux API Rest ou au JSOM : JavaScript Model Object) ouvre désormais de nouvelles possibilités dans les développements sur cette plateforme.<br />Pour illustrer ce propos, prenons un "use case" simple : Développer une fonctionnalité "Need Help" permettant de saisir quelques informations puis d'envoyer un mail à un destinataire (spécifique ou non) lors du clic sur un bouton.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />La méthode généralement employée dans ce genre de cas était la conception d'une WebPart (en code managée ou CSOM) ou la conception d'un flux de travail d'envoi de mail déclenché lors de l'enregistrement des informations dans une listes.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">A présent, il n''est plus nécessaire de disposer de Visual Studio pour réaliser ce genre de besoins simple. Il peut être réalisé en réalisant un vulgaire formulaire HTML utilisant du JavaScript.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Voici l'exemple d'une fonction JavaScript permettant l'envoi du mail via la fonctionnalité offerte par SharePoint (en pouvant définir l'adresse de provenance, les destinataires, sujets, corps des mails) :</span></div>
<blockquote class="tr_bq">
<em>function sendEmail(from, to, body, subject) {<br /> var urlSendMailRest = _spPageContextInfo.webServerRelativeUrl + "/_api/SP.Utilities.Utility.SendEmail";<br /> $.ajax({<br /> contentType: 'application/json',<br /> url: urlSendMailRest,<br /> type: "POST",<br /> data: JSON.stringify({<br /> 'properties': {<br /> '__metadata': { 'type': 'SP.Utilities.EmailProperties' },<br /> 'From': from,<br /> 'To': { 'results': ['to'] },<br /> 'Body': body,<br /> 'Subject': subject<br /> }<br /> }),<br /> headers: {<br /> "Accept": "application/json;odata=verbose",<br /> "content-type": "application/json;odata=verbose",<br /> "X-RequestDigest": $("#__REQUESTDIGEST").val()<br /> },<br /> success: function (data) {<br /> alert("Mail envoyé");<br /> },<br /> error: function (err) {<br /> alert(JSON.stringify(err));<br /> }<br /> });<br />}</em></blockquote>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Et voila, le tour est joué! Vous avez conçu votre premier formulaire permettant d'envoyer des mails à vos utilisateurs SP sans ouvrir un IDE.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0tag:blogger.com,1999:blog-4235806679372694146.post-10346686225014828632015-02-25T19:45:00.003+01:002015-02-25T19:45:34.289+01:00SHAREPOINT 2013 : Vérouillage des autorisations<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Aujourd'hui, un article sur une nouvelle fonctionnalité souvent méconnue de SharePoint 2013 nommée "<em>Limited-access user permission lockdown mode</em>". Ce qui signifie en bon français : "<em>Mode de verrouillage des autorisations d'utilisateur ayant un accès limité</em>".</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />La description du feature dans SharePoint 2013 est la suivante : "<em>Lorsque cette fonctionnalité est activée, les autorisations des utilisateurs au niveau Accès limité (tels que les utilisateurs anonymes) sont réduites, ce qui les empêche d'accéder aux pages des applications</em>."</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Cette fonctionnalité est activée ou non selon le type de site:</span></div>
<ul>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Désactivée sur un site d'équipe,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Activée sur un site de publication.</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Elle permet de refuser l'accès d'un utilisateur pour un container (liste ou bibliothèque) sur lesquels il possède uniquement l'autorisalition "Accès limité". Concrètement cela signifie que si l'utilisateur dispose de droits uniquement sur un document mais pas sur la bibliothèque, il ne pourra pas accèder à la bibliothèque pour accèder à ce document. Il ne pourra le faire que si quelqu'un lui envoie un lien vers le document ou qu'il utilise le moteur de recherche.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">En fait, la question se pose aussi sur des sites anonymes. Si vous souhaitez que les utilisateurs puissent accèder aux bibliothèques, il faudra impérativement désactiver cette fonctionnalité (après avoir positionné "Anonymous users" dans les permissions du site).</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com1tag:blogger.com,1999:blog-4235806679372694146.post-75436434694004429682015-02-09T19:40:00.001+01:002015-02-09T19:40:28.003+01:00INFOPATH : Prochaine version de SharePoint<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">La bonne nouvelle du jour nous provient du blog Office qui confirme qu'InfoPath sera toujours présent dans SharePoint vNext (Aka SharePoint 2016). Il sera de même toujours disponible dans Office 365.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Voici l'article officiel:</span></div>
<div style="text-align: justify;">
<a href="http://blogs.office.com/2014/01/31/update-on-infopath-and-sharepoint-forms/"><span style="font-family: "Trebuchet MS", sans-serif;">http://blogs.office.com/2014/01/31/update-on-infopath-and-sharepoint-forms/</span></a></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Il faut voir dans cette annonce un retard (voir un abandon) dans la solution alternative proposée par Microsoft lors de la SharePoint Conference nommée "FoSL" (Form on SharePoint List).</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Ceci a été confirmé dans la roadmap d'Office 365 fournie par MS:</span></div>
<div style="text-align: justify;">
<a href="http://roadmap.office.com/en-us#C-164-5095"><span style="font-family: "Trebuchet MS", sans-serif;">http://roadmap.office.com/en-us#C-164-5095</span></a></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Microsoft souhaite proposer une réelle alternative à InfoPath dans SharePoint. En effet, il est utilisé par la plupart des entreprises disposant de la CAL entreprise de SharePoint. </span><span style="font-family: "Trebuchet MS", sans-serif;">De plus, la possibilité depuis SP2010 de personnaliser les formulaires de listes a accru ce succès. </span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Il faudra donc encore attendre un peu de temps afin de disposer d'un outil permettant de migrer ces formulaire vers une nouvelle technologie.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">En revanche, InfoPath 2013 restera bien la dernière version du produit et sera donc compatible avec SP2016.</span></div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com1tag:blogger.com,1999:blog-4235806679372694146.post-84530532572858014242015-02-08T11:07:00.001+01:002015-02-08T11:12:14.750+01:00INFOPATH 2013 : Rediriger un formulaire<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Une demande récurrente dans la conception des formulaires InfoPath Forms Services est la possibilité de rediriger le formulaire vers une URL spécifique lors de l'enregistrement, la fermeture ou l'annulation du formulaire.</span></div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Il existe une méthode "classique" qui consiste à modifier l'adresse dans le paramètre "Source" de l'url du formulaire. Lorsque le formulaire se ferme, vous êtes automatiquement redirigé vers la valeur précisée dans le paramètre source. </span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Cette technique fonctionne très bien uniquement lorsque que vous restez sur votre tenant SharePoint.</span></div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><br />Si vous devez préciser une URL externe, il sera nécessaire de passer par une page intermédiaire stockée dans SP. </span><span style="font-family: "Trebuchet MS", sans-serif;">Afin de contourner le problème de limitation d'une redirection vers une url externe, vous pouvez suivre les étapes suivantes:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;">Créer un fichier ".aspx" sur votre PC,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Dans ce fichier, insérer uniquement une balise JavaScript et insérer le code de redirection suivant : "window.location="monurl":</span></div>
</li>
</ul>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2XqDofnFMV2rPL2y5MPfuFURCbhl5gUL_VCH702vbT_T9iKilFrKvnE02FJMpkWUhGVdjBNBSUQplOCsGIbZgo5CWUWn_8kHAtPmftsKK0M_iFTMSnLNRQGhiO0jd503eR8aKaBfgIYs/s1600/Redirection.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2XqDofnFMV2rPL2y5MPfuFURCbhl5gUL_VCH702vbT_T9iKilFrKvnE02FJMpkWUhGVdjBNBSUQplOCsGIbZgo5CWUWn_8kHAtPmftsKK0M_iFTMSnLNRQGhiO0jd503eR8aKaBfgIYs/s1600/Redirection.PNG" height="75" width="320" /></a></div>
<br />
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Télécharger ce fichier dans une bibliothèque SharePoint en l'approuvant ou le publiant si nécessaire,</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Faire pointer le paramètre "Source" de l'url de votre formulaire vers l'adresse de ce fichier. </span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;"></span> </div>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"><strong>Note</strong> : Si vous concevez un fichier HTML (à la place d'une page ASPX), celui-ci ne sera pas être ouvert directement par SharePoint et il vous sera demandé de le télécharger. Ce comportement reste tout de même modifiable en changeant le mode de sécurité de l'application web de 'Strict' à 'Permissif' (attention cette option n'est pas disponible sur Office 365).</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">Ceci est une version basique fonctionnant sur SharePoint 2013 et Office 365. Il serait possible d'être plus intelligent et dynamique en réalisant des redirections en fonction:</span></div>
<ul style="text-align: left;">
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">de valeurs du formulaire (interrogation via JSOM),</span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">du type de formulaires, </span></div>
</li>
<li><div style="text-align: justify;">
<span style="font-family: Trebuchet MS;">du type d'utilisateurs,...</span></div>
</li>
</ul>
<div style="text-align: justify;">
<span style="font-family: "Trebuchet MS", sans-serif;"></span><br />
<span style="font-family: "Trebuchet MS", sans-serif;">Pour cela, il suffira uniquement de passer les paramètres souhaités à la page de redirection qui comprendra l'intelligence métier.</span></div>
</div>
</div>
Rémi MATAYRONhttp://www.blogger.com/profile/10146978268402354542noreply@blogger.com0