Jeu de mot facile mais Onetastic c’est Fantastique 

C’est de la dynamite 
Bon ok, la blague est faite mais plus sérieusement, si vous êtes un utilisateur assidu et forcené de Onenote, ce plug in vas bien vous aider.
>>> Ce plugin a été développé par un des membres du Team Onenote, donc qualité assurée (si si)
Voici un petit détail rapide :

Soit :
- des raccourcis directes depuis le bureau
- une gestion de style personnalisable
- une gestion plus fine des images (enfin) avec
- et surtout la vue calendar !

Une vue tout simplement génial pour votre suivi de note multi saisie …
Bref, à télécharger en urgence en attendant Onenote 2013 bien sur
Renaud Comte aka TheMit (Onenote Fan 4ever)
Member of WygTeam
http://www.wygwam.com Mots clés Technorati :
Onenote,
onetatic,
plugin
/ 
Certes, le moteur de variation de SharePoint 2010 est riche de nouvelle fonctionnalité avec ses nouveaux timers jobs, son mode manuel et semi auto, il fait presque tout
La navigation multilingue ne concerne pas juste la navigation entre différentes langue d’un site mais aussi la navigation entre les différentes variations de la même page.
Pratique, pour finaliser une navigation contextualisée, des pieds de pages paramétrables ou autres sujets très sensible en multilingue ! Surtout avec le nouveau mode manuel et non automatique, ou certaines pages n’ont que certaines variations …
Soit trouver la version FR de http://monsite/US/Team/pages/welcome.aspx qui devrait être http://monsite/fr/equipe/pages/bienvenue.aspx
A noté, pour rappel !
Donc pour continuer sur le sujet, Comment retrouver sa navigation entre page (voir en créer une “sur mesure”)
Plusieurs approches
- Roots de chez roots
- vous pouvez naviguer et chercher directement dans la liste de management des urls, la fameuse liste cachée : /Relationships%20List/ se trouvant en racine
- la vous pouvez requêter sur les id de pages et faire la corrélation avec les ID de vos page
- Utiliser l’OM de Microsoft.SharePoint.Publishing (+1)
- Plus simple, mais il faut connaitre les quelques propriétés intéressantes à utiliser
- Surtout, vous construire un helper pour des méthodes plus simple d’accés : exemple
- Sinon :
if (PublishingPage.IsPublishingPage(SPContext.Current.ListItem))
{
PublishingPage page = PublishingPage.GetPublishingPage(SPContext.Current.ListItem);
StringCollection peerUrls = page.VariationPageUrls;
foreach (var peerUrl in peerUrls)
{
}
}
}
- Pour retrouver la variantes dans une langue précise : PublishingPage.GetVariation
- il vous suffit de passer en paramètre le label qui vous intéresse
- “Pages” en anglais, c’est “Pages” mais en Allemand, c’est “Seiten”
Conclusion
2 leçons à retenir :
- SharePoint est toujours aussi riche : il faut vraiment explorer l’OM pour trouver les bonnes méthodes mais souvent, elles sont logiques …
- SharePoint s’utilise lui même pour sa propre gestion : PropertieBag, Reference list, …
Cependant, même si l’utilisation de l’OM, la version “roots” par exploration de sa propre liste de référence n’est pas à négliger !!!
Pourquoi ?
hum hum, disons que de temps à autre, elle peut être la seule alternative à des soucis de contexte non prévus par Microsoft
Genre : développez des Event Receivers sur vos bibliothèques de publishing
>>> http://www.akshaykoul.com/blog/Home/tabid/40/EntryId/17/Variation-Labels-for-a-site-collection.aspx
Soit la leçon 3 : toujours comprendre comme SharePoint fonctionne en interne !
Bon courage / Good luck / Viel Glück
Renaud Comte aka TheMit ( pas de soucis, juste trop de solution)
Member of WygTeam
http://www.wygwam.com
En rentrant de congés (fini en dépanneuse d’ailleurs), j’ai eu la joie de découvrir 2 choses
- l’arrivée de mon nouveau monster laptop
- la sortie publique de Office 2013 et SharePoint Preview

Ah ah, les affaires sérieuses vont enfin commencer. Après des semaines à jouer sur du JS, Jquery et le CSOM, on vas pouvoir évaluer tout cela sur une plateforme plus “stable”.
Pour une fois, j’ai décidé de vérifier plusieurs types d’installation, le tout sous Hyper V . Et histoire de revivre la folle aventure de SP2010 et 2007, je monte tout en beta : Win 2012 SRV et SQL 2012 SP1 CTP3 sur Win 8 CP
(courageux ET téméraire )
En résumé, je vais tester sur Hyper V
- AD + SPF 15 Stand Alone
- AD + SQL + SPS 15
- AD + SPS 15 Stand Alone
- AD + SPS 15 (SQL dessus)
Soit une “simili” prod de dev
Merci le SSD pour les temps d’install et de reboot d’ailleurs
A priori pas de grand soucis mais quelques messages d’erreur bien énervant qu’il faut traiter
Si vous voulez éviter bien des crises, je ne saurais trop vous conseiller les lectures des posts suivants:
SharePoint George
-
Configuring Active Directory (AD DS) in Windows Server 2012
-
Installing SharePoint 2013 Preview on Windows 2012 Server with SQL 2012-Part 1
- Installing SharePoint 2013 Preview on Windows 2012 Server with SQL 2012-Part 2
- Create a Web Application and Site Collection in SharePoint 2013 Preview
Pour la partie réseau :
TechEd 2011 demo install step-by-step (Hyper-V, AD, DNS, iSCSI Target, File Server Cluster, SQL Server over SMB2)
Malgré tout, j’ai vécu quelques soucis bien embêtants et avec des solutions bien souvent
- AD, AD, AD : cette version preview vit très mal sans AD !
- créer un AD, utilisez la “dynamic memory”, il ne pèsera jamais plus que 512 meg en mémoire et plus de soucis
- certes des posts vous conseillent de désactiver certains services comme AppFactory mais vous perdrez aussi des fonctionnalités
- Pensez en plusieurs comptes de services
Attention, même pour une machine de Dev, Microsoft a durci son install : http://msdn.microsoft.com/en-us/library/ee554869(v=office.15)
The installation wizard will ask for a SQL Server admin account and password. This account will become the Farm Account and services such as the Timer Service will run under that identity. This account must be different from the account that you will use for developing and installing apps on your SharePoint 2013 Preview installation. The SQL Server account can be a local account if the database is installed locally. It must be a domain account if the database runs on other computers. SharePoint 2013 Preview will not allow your apps to install if the SQL Server admin account and the account that you use for installing apps for SharePoint are the same.
L’installation de VS 2012 RC n’est pas sans surprise : surtout pour obtenir les “compléments O2013”
soit bien pensez à votre accès Web virtuel pour obtenir le Web Platform Installer 4.0 RC

Mais sinon, tout vas 
je complèterais ce post, fur à mesure de mes “trouvailles”, sinon
http://office.microsoft.com/en-us/help/sharepoint-server-2013-known-issues-HA102919021.aspx#_SharePoint_Server
Bon testing !
Renaud Comte aka TheMit (rah que j’aime une install qui rerereplante)
Member of WygTeam
http://www.wygwam.com
Ces derniers temps, je vois une recrudescence des soucis d’alerte sous SharePoint.

Effet de mode ou autre ? Ce n’est pas la vrai question. Le technicien que je suis et resterais se demande déjà : comment ca marche et comment on répare ? (puis gouvernance oblige, comment le pérenniser une bonne fois pour toute)
Le fonctionnement des alertes, avouons le, est plus clair pour les utilisateurs que pour les administrateurs.
Mais que faire quand les alertes ne partent pas ?
- Est ce un soucis de SMTP, load balancing, AD, … ?
- Est un paramétrage SharePoint, Exchange, Firewall … ?
- Est un soucis infra, sécurité, patch, … ?
- Est ce le Timer Job, le compte de service, un mail externe … ?
- …
- …
Comme vous le voyez le cheminement de résolution est plus que complexe, riche voir rébarbatif.
Après bien des recherches et de vécu, voici la liste de mes favoris, ma boite à outil personnelle (des liens surtout basés sur de l’opérationnel )
Bref, de la gestion du “Troubleshooting” des alertes
Troubleshooting SharePoint Alerts
http://sharepointalert.info/troubleshooting-sharepoint-alerts/
Ce post explique simplement et graphiquement le cheminement de problème d’une alerte

Et bien sur, les résolutions possibles !
Sachant qu’elle peuvent varier de la simple erreur d’adresse ou du soucis de mise à jour des url en cas de migration de votre contenu …
Cependant, je ne saurais trop vous conseiller de le compléter avec le feedback de Steve Chen [MSFT] Support Escalation Engineer
Clairement, cette personne connait son sujet et surtout le pratique vu qu’il assure le support des bugs bloquant à impossible sur SharePoint.
Soit en pratique le TOC correspondant
Alerts in SharePoint 2007 The typical issue Examples of common issues Alerts are not working ... General troubleshooting steps Additional Links and related resources Some technical details Immediate Alerts Scheduled Alerts Database tables How to troubleshoot alerts? Troubleshooting steps Le fonctionnement avec Timer Jobs des alertes entre 2007 et 2010 restant similaire, ses analyses sont toujours fiables et recommandés !!!
Eh oui, l’investigation du problème des alertes peut être aussi simple que difficile vue que vous devez identifier en premier la “zone d’erreur”
Est ce SharePoint ou le SMTP voir le serveur de messagerie … voir le SPAM de votre client de messagerie (si si j’ai eu le cas ou un utilisateur avait des règles vraiment trop exigeante )
Mais des fois le soucis peut être vraiment caché, bien caché, vous risquez de devoir attaquer l’analyse avec des outils plus direct
- Powershell pour mettre à jour et contrôler/tester (évite les sempiternels clics … )
- Session Telnet pour vérifier le SMTP

- Netmon pour vérifier l’envoie depuis SP

- SQL Query Analyzer pour vérifier le fonctionnement interne
En résumé, pas de panique, mais rapprochez vous de votre équipe IT rapidement
Bon courage
Renaud Comte aka TheMit (après un tel post, vous arriverez sans peine à convaincre les gens d’utiliser le RSS !!!)
Member of WygTeam
http://www.wygwam.com
Un sujet qui revient souvent dans le monde SharePoint mais bizarrement moins depuis la version 14 alors que très à la mode sous 2003 et 2007.
Le Code Access Security : CAS et la problématique des stratégie de contrainte ..

Référence MSDN (très bonne d’ailleurs)
http://msdn.microsoft.com/en-us/library/cc768613.aspx ou http://msdn.microsoft.com/fr-fr/library/cc768613.aspx
Introduction : “Comment gérer le modèle d’exécution de vos composants sous SharePoint 2010 ?“
Il est vrai que sous SP14, il existe 3 modèles
- Full trust : déploiement GAC ou Farm Global
- avantage : pleine puissance
- inconvénient : disponible de maniére transverse dans toutes les Web Apps de votre ferme
- Bin/CAS : déploiement en Bin de vos sites IIS SharePoint
- avantage : des droits dépendants de vos CAS et composants disponibles uniquement sur les Web App ciblés
- inconvénient : rédiger les dites CAS
- SandBox : déploiement dans la gallerie de solution de votre Site Collection
- avantage : isolation assuré par le déploiement par collection avec CAS spéciale
- inconvénient : aucune ouverture sauf si utilisation des sandbox proxy
Rappel sur les modèles d’exécution:
Certes, Microsoft encourage fortement le développement Sandbox, mais bien souvent, sur des problématiques plus complexes (avec des WS, des appels cross collections, …) le modèle Farm est nécessaire, et je ne vous parle pas de certaines problématiques de maintenance de sandbox
Et la ce pose la question du déploiement Web App ou Global, pardon, ferme ou bin
>>> bien souvent, la plupart des développeurs utilise le développement global car simple et TRES efficace
Le soucis, vos composants deviennent transverses à la ferme et si vous hébergez plusieurs intranets SharePoint, vous vous retrouvez avec une maelstrom de feature toute mélangé (genre l’intranet, le collaboratif, la gestion de projet les blogs) alors que les composants sont fonctionnellement différents …
D’un point de vue Gouvernance (hello Christian), clairement, il faut mieux travailler en silo et isoler les composants au plus proche de leur application. Donc travailler avec des solutions avec CAS en BIN
Et d’un point de vue sécurité … vous évitez aussi d’avoir des dll en GAC qui ont … tout pouvoirs soit dit en passant …
Mais comment déployer en Bin ?
Les développeurs SP12 connaissent bien la méthode et surtout WSPBuilder mais sous VS 2010 c’est différent. Il suffit de modifier les propriétés de votre projet

Mais par contre, vous devez au préalable, préparez les références de CAS … C’est la que le problème devient épineux
je vous renvoie dans un premier temps sur le MSDN pour que vous puissiez mieux comprendre, découvrir, approfondir le concept qui est pur .Net et non SharePoint, d’ailleurs
http://msdn.microsoft.com/en-us/library/cc768613.aspx

Cet ancien article du MSDN sur une WebPart WSS 3 de feu Patrick Tisseghem est d’ailleurs toujours une référence, surtout le dernier chapitre sur Code Access Security and Web Part Solutions
En pratique, vous devez recenser les permissions minimales pour l’exécution de votre code sous ce format
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet class="NamedPermissionSet" version="1">
<IPermission class="SecurityPermission" version="1" Flags="Execution" />
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" />
</PermissionSet>
<Assemblies>
<Assembly Name="$SharePoint.Project.AssemblyName$"
Version="$SharePoint.Project.AssemblyVersion$"
PublicKeyBlob="$SharePoint.Project.AssemblyPublicKeyBlob$"/>
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
Par défaut SharePoint fonctionne avec la policy WSS_minimal qui ne vous laisse même pas utiliser le modèle objet, c’est dire … Il faut donc préciser les CAS (ou modifier le Trust du Web.config de SharePoint mais je ne préfère pas vous parler de cette option, pas vraiment à conseiller sous 2010)
Si vous oubliez, SharePoint vous le rappellera sans politesse

…
Mais bien souvent, vos WebParts et autres développement se ressemblent souvent, vous pouvez donc partir du modèle précédent et le réutiliser à travers vos différents projets. Et surtout l’adaptez à vos besoins 
Merci à Waldek pour son template de base très utile
Liens pratiques :
Ainsi, dans Visual Studio, la démarche n’est pas si compliqué
- Modifier les propriétés de déploiement
- Ajoutez le CAS dans le designer de package
- Rajouter le tag [assembly: AllowPartiallyTrustedCallers()] dans AssemblyInfo.cs
Et voila, enfin presque, il existe un bug bien embêtant qui bloque le déploiement depuis VS2010, à priori, un bug est passé à travers la matrice de test de la RTM … mais la KB donne un fix très efficace :
http://social.msdn.microsoft.com/Forums/en-US/vssharepointdevelopment/thread/eaa2077a-b86b-42c0-9dfd-491c37a1b35e
>>> http://support.microsoft.com/kb/2022463
Il reste cependant une dernière question : Mais comment identifier les bonnes IPermissions de votre CAS ?
C’est effectivement le point le plus compliqué car il peut dépendre de votre connaissance pleine du fonctionnement de .Net …
Et si vous en oubliez une, la sanction est sans appel

Vous remarquerez que l’erreur vous donne de bonne indications sur la permission manquante d’ailleurs 
A noter que vous pouvez les retrouver aussi via une petite introspection via Reflector
Mais vous pouvez aussi le chercher via une simple gestion d’erreur et votre débuggeur VS2010. Il vous suffit de traquer une exception de type SecurityException et de cherchez ex.m_demanded
Waldek (encore lui) a découvert cette astuce

Au final, rien de bien compliqué, non ?
Mais bon courage quand même
Avant de partir, je vous laisse avec un petit dilemme
"Untrusted solutions – Deploying custom code in bin folders can cause slow server performance. Every time a page containing untrusted code is requested, SharePoint Server 2010 must perform security checks before the page can be loaded.Unless there is a specific reason to deploy untrusted code, you should install custom assemblies in the GAC to avoid unnecessary security checking."
http://technet.microsoft.com/en-us/library/ff758647.aspx
Mais la sécurité n’a pas de prix, à moins de pouvoir l’évaluer dans votre contexte projet
Renaud Comte aka TheMit (“Waldek fan 4 ever” comme beaucoup d’ailleurs)
Member of WygTeam
http://www.wygwam.com
il faut savoir se méfier de ces vieux réflexes et souvent les mettre en doute pour justement progresser.
C’est d’autant plus vrai avec des outils qui évoluent de version en version
- de nouvelles fonctionnalités apparaissent
- des corrections sont apportés
- les développeurs et les clients sont écoutés (vraiment)
Prenons le cas classique d’un libellé à insérer dans une page SharePoint, une visual WebPart ou un usercontrol utilisé en delegate, bref un grand classique

Déjà, partons du principe que vous allez (forcement) utilisé un fichier de resx !
Pourquoi ? bien rapidement …
- centraliser les libellés :
- plus simple pour la maintenance que d’explorer du code C# ou ASP.Net
- plus facile pour la correction orthographique
- …
- gérer du multilingues en ajoutant les resx supplémentaires
- pas de besoin de refactoring
- …
Donc nous devrions arriver à ce résultat

Bien bien bien, simple et efficace mais ne pourrions pas aller plus loin ?
Cette réflexion a déjà été mené par le Team SharePoint et comme la plateforme est
- une vrai boite à outils de fonctionnalité et de contrôle
- assez ouvert pour être personnalisable
Il serait dommage de ne pas en profiter non ?
Soit le
Microsoft.SharePoint.WebControls.EncodedLiteral
(http://msdn.microsoft.com/en-us/library/ms432507.aspx)
Ce sympathique contrôle de SharePoint est assez pratique car il peut gérer différents type d’encoding
EncodedLiteral.EncodeMethod
| Member name | Description |
| | NoEncode | Specifies no encoding. |
| | HtmlEncode | Specifies HTML encoding. |
| | HtmlEncodeAllowSimpleTextFormatting | Specifies encoding the specified string for use as text between HTML tags, preserving spaces in the original string and allowing simple text formatting. |
| | EcmaScriptStringLiteralEncode | Specifies ECMAScript encoding. |
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spencodemethod.aspx
Ainsi vous pouvez plus facilement gérer les données de texte simple, de texte riche HTML ou de paramètres de texte pour des variables javascript … ne sait on jamais 


Eh oui, SharePoint est toujours plein de bonnes surprises, mais il faut les trouver (ou fouiller la blogosphère et le MSDN)
A noter qu’on pourrait facilement le dériver pour ajouter encore bien de trucs pratiques non ? (hein Matthieu et JC
)
Grand merci à Andy Vansteenbergen pour son post que j’ai retraduis
http://meligo.blog.com/2011/12/01/do-you-still-develop-old-skool-pre-mui-series/
Renaud Comte aka TheMit (SharePoint, c’est le mix entre un oeuf kinder et un mikado …)
Member of WygTeam
http://www.wygwam.com
Un sujet un peu riche mais je fait ce post en l’honneur d’un de mes collègues Laurent qui vient de vivre cette histoire. Donc je me permet de la partager, ne sait on jamais.
Contexte : comment intervenir sur un site SharePoint en maintenance sans accès directe à la ferme ?
Il y a bien des situations ou vous devez intervenir pour assister ou corriger un site SharePoint :
- soucis de sécurité
- nommage de fichier, de bibliothèques
- correction de groupe de sécurité
- création de site dynamique
- changement de charte graphique
- ajout de contenu
- …
- …
Seulement, bien souvent, les fermes de production sont “protégées” des vilains doigts de développeur artistes. A tort ou à raison ? Ce n’est pas la question, la production n’est pas à manipuler de manière inconsidérée, il faut mieux prévenir.
Certes vous pouvez intervenir avec un compte “admin” et faire vos opérations de maintenance … à la souris mais modifiez une centaine de site ou 240 groupes de sécurité voir renommez 512 fichiers n’est pas une sinécure. Ca peut prendre (beaucoup) de temps, d’énergie et de patience
Il serait bon de pouvoir automatiser un peu au risque de dépression rapide de votre morale voir seppuku …
Les possibilités
Powershell vient souvent en tête et avec raison. Fabrice Romelard nous partage depuis longtemps bien des scripts de maintenance SP, pourquoi s’en priver

Soucis : il faut pouvoir accéder à un des serveurs de la ferme SharePoint, et c’est rarement le cas pour un développeur
Certes, vous pouvez passer par une ferme de qualification et une fois le GO et un minimum de documentation, un IT autorisé peut l’exécuter
>>> C’est un TRES BON processus !!! Je ne saurais trop insister sur l’importance d’un minimum de contrôle, de documentation et de validation
Cependant, des fois, il faut être rapide et pragmatique. Si vous avez un compte “admin” SharePoint , vous en avez déjà les droits et les responsabilités non ? Mais pas forcement les droits sur les machines …
Vous pouvez certes profiter du remoting Powershell et exécuter à distance vos batchs depuis votre poste sur la ferme mais rare sont les administrateurs IT téméraires qui l’autorisent. Ces liens sauront vous aidez à le configurer si jamais
L’alternative
Des fois, la solution est tellement évidente qu’on ne le voit pas ou qu’on y pense pas. CLOM bien sur 

Avant Powershell, on codait rapidement de petites applications en ligne de commande mais le script est largement plus intéressant et flexible. Mais ca ne rend pas C# et VS pour autant obsolète et pour accéder à SP en distant il y a :
Le Client Objet Model de SharePoint pour .Net, aka Microsoft.SharePoint.Client
MSDN : SharePoint 2010 Client Object Model
Exemple basique : Creating a Basic SharePoint Foundation Client Application
Cette nouveauté de SP2010 vous permet de travailler directement avec SharePoint depuis votre application cliente sans devoir vous exécuter sur le serveur. Et la vous pouvez bénéficier de toute l’assistance de VS 2010 & Linq sans pour autant devoir utiliser la couche des Web Services et leur épaisse documentation
Soit dans notre cas, coder une petite application ligne de commande ou winform pour “intervenir” sur votre site SharePoint
Ce qui marche très bien pour des services back office ou des clients riches, marche tout aussi pour de simple petites applications, merci .Net
CLOM de SharePoint est vraiment riche, du moins pour toute la partie admin/gestion de collection et de site SharePoint, pourquoi ne pas en profiter. Vous avez quasiment les mêmes objets qu’en OM local à la différence de la notion de contexte mais vraiment rien de compliqué
Et fini les soucis de maintenance à distance sans accès à la machine !
…
Sauf qu’il peut y avoir quelques problèmes mais jamais insurmontables, voyons
- Je n’ai pas accès à un poste SharePoint de développement, et donc pas la dll cliente …

Il vous faut simplement télécharger la bibliothèque SPF 2010 client object model redistributable : http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47
- Je n’ai pas de poste avec Visual Studio

Il reste encore PowerShell qui lui peut instancier le CLOM voir les WS, donc un coup de notepad ++ ou PowerGui et votre script est opérationnel
http://www.spjeff.com/2012/02/26/powershell-upload-csv-file-to-list-both-server-and-client-om/
$clientContext = [Microsoft.SharePoint.Client.ClientContext,Microsoft.SharePoint.Client, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c] $context = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
certaines opérations peuvent demande du C# inline cependant … : http://blogs.technet.com/b/heyscriptingguy/archive/2011
- Certainement le cas le plus rude : Mon site ne tourne pas sous contexte NT mais en ADFS … comment m’identifiez
?
tout est prévu !!! Merci Office 365 de nous fournir une documentation si riche d’ailleurs (eh oui O365 utilise ADFS donc les samples sont aussi bons pour votre réseau)
Soit le ClaimClientContext.GetAuthenticatedContext qui simplement vous promptera pour vous identifier avant de continuer
string targetSite = "https://sharepointOnlineURLRoot/sites/siteName";
using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite))
{
if (ctx != null)
{
ctx.Load(ctx.Web); // Query for Web
ctx.ExecuteQuery(); // Execute
Console.WriteLine(ctx.Web.Title);
}
}
Ci joins, le sample officiel de la galerie de Code MSDN : http://code.msdn.microsoft.com/Remote-Authentication-in-b7b6f43c
Conclusion
Il y a toujours une solution et elle ne passe pas forcement par du code sur le serveur SharePoint ! Et vive la richesse des clients SharePoint d’ailleurs
Bonne SPjournée à tous et spécialement à Laurent et Arnaud 
Renaud Comte aka TheMit (SPCLOM, ca c’est de l’acronyme non ?)
Member of WygTeam
http://www.wygwam.com
J’ai toujours insisté sur la qualité grandissante du MSDN.
Avec le temps, je trouve plus souvent de vrais pépites d’information dedans que dans la blogosphére (ce qui semble logique après tout)
Voici la dernière
SharePoint 2010 101 Code Samples
Each code sample is part of the SharePoint 2010 101 code samples project. These samples are provided so that you can incorporate them directly in your code. Each code sample consists of a standalone project created in Microsoft Visual Studio 2010
http://code.msdn.microsoft.com/SharePoint-2010-101-Code-da251182/view/SamplePack/11?sortBy=Popularity
Et en VB et C#, pas de jaloux
On trouve dedans un véritable panorama du développement SP2010 qu’il s’agisse de webpart, silverlight, azure, online et excel service et j’en passe
bref, à posséder au cas ou 
Voici un petite liste exhaustive si vous êtes curieux
Bon download
Renaud Comte aka TheMit (miam encore du sample à tester modifier, bonifier)
Member of WygTeam
http://www.wygwam.com
Bien que SharePoint 2010 fasse partie intégrante de bien de nos projets, il y a toujours des zones d’ombre qu’il est bon de savoir éclairer … comme le sujet des licences.

Ce post n’a pas pour but de détailler le système de licence de SharePoint 2010 (qui est devenue plus clair je trouve) mais de mettre en avant certains détails qui peuvent surprendre ou restent encore un peu floues …
Les bases
Je ne saurais trop vous conseiller de prendre le temps de lire les sites Microsoft dédiés au sujet du Licensing SharePoint
Tout y est expliqué ainsi que la matrice de fonctionnalité entre SharePoint Foundation / Standard et Entreprise : http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx
Rappel sur les fonctionnalités & les licences
- SPF : offre gratuite sur Windows qui remplace WSS
- SP Standard :
- Collaboration,
- Enterprise Search,
- Document & Content Management,
- Social Computing (Wikis, My Sites)
- Digital Asset Management
- Records Management.
- SP Enterprise :
- Excel Services
- Performance Point Services
- Advanced Charting
- Visio Services
- Access Services
- InfoPath Form Services
- Client line of business integration and web parts
- Custom Reports
Sinon, voici un slide de résumé pour les plus “nouveaux” sur le sujet des licenses

La problématique Interne / Externe
C’est un grand classique du monde SharePoint : Comment gérer des utilisateurs externes ?
Il y a plusieurs lectures possibles
Lecture simple
Tout dépend de votre payroll : un utilisateur interne est un collaborateur engagé, payé donc salarié de votre entreprise. Un utilisateur externe ne fait pas partie de votre entreprise
Donc, en interne, vous devez avoir les licences Serveur (entreprise ou standard) avec les CALs correspondantes.
Attention, les CALs sont cumulatives, ce qui signifie que vous sur un serveur SP Enterprise avec un site possédant de l’infopath service par exemple, vos utilisateurs doivent posséder la CAL Standard + la CAL Entreprise. Eh oui, cependant, si votre serveur SP Enterprise héberge aussi des sites de publishing (Standard), seul la CAL Standard est nécessaire.
==> à vous de bien identifier et comptabiliser vos besoins et vos utilisateurs
Par contre pour les externes, vous devez avoir les licences SharePoint for Internet Site (entreprise ou standard)
Lecture en détail
Il y a quelques cas prévu entre le tout interne et tout externe : la notion de partenaires 
Un partenaire étant quelqu'un qui bien qu’externe à votre société intervient régulièrement auprès de celle ci et travaille ainsi sur vos données avec votre accord : il n’est pas salarié de votre entreprise, j’insiste
Dans des scénarios mêlant interne et externe, vous pouvez éviter d’acquérir la licence “SharePoint for Interne Site” et conserver votre licence Serveur + CAL uniquement si
- il s’agit d’utilisateur individuels (et nommés)
- pas de personnes morales ou sociétés
- pas de compte générique
- vous pouvez les comptabilisé réellement
- vous achetez le nombre de CAL correspondant à vos externes
Soit en pratique : vous devez définir le nombre de contact identifiable de chacun de vos clients et partenaires qui devront se connecter et vous pouvez les ajouter à votre gestionnaire d’identité reliée à SharePoint. Comme s’il s’agissait d’autre utilisateur interne quelque part.
Vous ne pouvez pas utiliser de comptes passe partout comme “partner A/B/C” “compta client 1”, il s’agit de compte nommé et individuel pas partagé : de vrais utilisateurs
Bien sur, en cas de changement/démission/retraite ou autre d’un de vos externes, il suffit de remplacer le compte pas de soucis.
L’économie est intéressante mais nécessite de faire attention : si vous avez 5 contacts dans 200 entreprises partenaires, vous devez acquérir 1000 CAL supplémentaires donc il s’agit de bien faire attention au solde.
Idem en ce qui concerne la licence “SharePoint for Internet Site” :
- si les données du sites sont aussi bien accessibles à des externes qu’à vos internes, vous n’avez pas besoin de CAL pour les internes. Cependant, si une partie de l’extranet est clairement réservée et limitée à vos internes pour diverses raisons, vous devez acquérir les CALs pour eux.
- Pas besoin de CAL pour un interne s’il doit créer ou publier du contenu dans le site externe
(Comme dirait un ami qui se reconnaitra, rien ne précise encore si l’utilisateur interne doit être devant ou derrière le firewall
, faisons comme si de rien …)
La problématique SQL
Bien, il ne faut pas l’oublier !!! SP est indissociable de SQL mais ses licences ne les couvrent pas pour autant !!!
A vous de bien faire le calcul entre :
- La licence serveur simple associée au volume de CAL adapté au nombre de comptes identifiés
- La licence serveur par processeur physique (un serveur QuadriCoeur est considéré comme un seul processeur)
Le second choix devient plus avantageux dès qu'on dépasse quelques dizaines de CAL. De plus, ce calcul par processeur permet de pouvoir rapidement mutualiser le moteur SQL Server avec d'autres applications.
(source : Fabrice Romelard)
Et encore, je ne vous parle pas de la problématique de SQL Server Denali qui arrive à grand pas
- changement du plan de license par socket : par coeur désormais
- le plan illimité en virtuel
- la license BI
- …
Ces lectures sauront vous guider :
(source : Christian Robert)
J’insiste pour SQL Denali car certaines nouvelles fonctionnalités sont réellement intéressante dans une infra SharePoint dense
http://www.slideshare.net/Patricg/sql-server-et-sharepoint-le-couple-de-lanne-2012-10601095
- Groupe de disponibilité Always On
- De lourdes nouveautés BI
- Reporting Services devient un service partagé
- …
La problématique Windows
Petit détail comme d’habitude, mais si vos serveurs WEB SharePoint ou SQL gèrent un site SP sur internet, vous devez avoir les connecteurs Windows externes pour tous. En plus bien sur, des licences serveurs Windows.
Même problématique pour AD si vous l’utilisez pour gérer les comptes externes de vos partenaires sur internet. Ce qui explique que l’on conseille souvent d’utiliser un annuaire tiers pour vos externes comme AD LDS ou autre (il y a d’autre raison plus “sécurité” évidemment mais il y a aussi une raison économique, il ne faut pas le cacher)
FAST, Office Web Apps, les Webparts, …
C’est un sujet un peu différent dans le sens que ce sont des licences séparés de SharePoint, comme SQL si vous préférez
- pour FAST, il vous faut cependant les CALS et le serveur SP Enterprise et/ou SP for Internet Sites Enterprise
- Idem pour Project (avec les CAL Project)
- Idem pour PowerPivot qui demande aussi SQL Enterprise Edition
- les Office Web Apps dépendent d’un serveur SPF minimum et leurs licences utilisateurs correspondent à celle de leur Microsoft Office 2010 Volume License
- SharePoint Workspace et Visio demande Office 2010 PRO +
N’oubliez pas aussi que certaines WP bien connus ne font pas partie de la licence Standard ou SPF comme la Chart WebPart ou la CQWP !!! Donc attention à vos maquettes et vos estimations selon les plans de licence retenus par la DSI
La pre prod, staging, … ?
Faisons complet voulez vous 
Attention, les licences MSDN ne couvent que le DEV / Test pas les serveurs utilisés pour monter une preprod ou un serveur de staging pour le site web. Ces serveurs respectent le même plan de licences que ceux de la production avec la même notion d’interne et externe.
Certes, on peut jouer sur les mots entre test et pre-prod mais je ne saurais vous encourager de ne pas trop fleureter avec la limite. Un serveur de test avec 10 millions d’entrée, des accès récurrents et qu’on ne peut pas arrêter sans raison ressemble pas vraiment à un simple serveur de test utilisateur … Quoi que…
En conclusion
Le sujet n’est pas si facile mais pas pour autant étrange ou complexe, il faut juste bien calculer
- vos vrais besoins (choix Standard ou Enterprise)
- vos contacts externes
- vos niveaux de services (soit le nombre de serveur SP et SQL)
Et simuler le tout selon vos plans de licence négociés avec Microsoft ou votre revendeur, il arrive encore d’avoir de belle surprise aussi bien positive que négative
Ce petit simulateur peut vous aider : http://community.bamboosolutions.com/blogs/sharepoint-2010-price-calculator/default.aspx
Annexes :
A bientôt et bonne estimation
Renaud Comte aka TheMit (je devais me trouver un plan de licence original : au mot ou au poid)
Member of WygTeam
http://www.wygwam.com
Ne sacrifions rien sur l’autel du changement : Bonne année 2012 et tous mes vœux de bonheur et de réussite que ce soit professionnel ou personnel à tous mes chers lecteurs !
2011 fut une belle année (comme toutes les autres, il faut savoir rester positif)
- Mon petit garçon grandit ! Un an déjà
- SharePoint 2010 commence à dépasser MOSS dans bien des esprits
- Les projets complexes et/ou critiques sous SP deviennent de plus en plus courants
- Wygwam, son bureau suisse se développent bien et s’ouvre sur le Canada
- Je me suis fiancé

Donc il faut attendre 2012 pour voir de nouvelles choses
- les prémices d’un beta/alpha de SP2010
- l’organisation du mariage
- les interactions BI/SP avec SQL 2012
- une prochaine SP conférence plus beta ?
- plein de belles autres innovations (mais que dirait Nestor
)
Et pour ceux qui n’avait pas vu le “private joke” dans le titre du post, je suis (encore) renouvelé MVP SharePoint pour 2012… Dire que ça a commencé en 2004 … ah la la que le temps et les versions passent
A très bientôt sur le SPNuage
Renaud Comte aka TheMit (2012 me voila)
Member of WygTeam
http://www.wygwam.com
PS : oui, je sais, il y a eu aussi la crise, les chutes de dictateurs, le japon et le nucléaire, … et Mango pour windows phone 
Depuis quelques temps, je croise régulièrement des soucis dans des développements sur la récupération d’objet SharePoint
Par exemple, récupérer une liste, un champs, des sous sites
L’opération n’est pas vraiment compliquée, mais la méthode utilisée n’est pas souvent la plus utile ou la mieux adaptée …
Comme le fait remarquer souvent Christian Hougardy, mon IT Gouvernance Hero, les “bugs arrivent plus souvent en production que sur la machine du développeur'”
Et oui, la vrai vie de la production est différente du mode laboratoire des machines de développements
soit :
- les utilisateurs ne sont pas tous admin
- les listes peuvent changer de nom …
- les colonnes peuvent aussi changer de nom …
- …
Bref, j’en passe et des meilleurs.
Pas de solution miracle, il vous faut faire attention, et bien souvent l’OM SharePoint vient vous aider via ses différentes méthodes GETxxxx.
En pratique, les développeurs SP juniors travaillent souvent avec les index de collections des différents objets comme le SPWeb ou la SPList.
Certes, ca marche mais bien souvent ces indexeurs ne sont pas super flexibles ou riches en options
. Cependant, il existe des méthodes supplémentaires, moins connus, bien plus pratiques ou plus rapides selon vos besoins
En voici un petit éventail
- SPListCollection.TryGetList au lieu de List[“”] : vous obtenez un résultat null plutôt qu’une exception
- SPListCollection.GetList au lieu de List[“”] : vous obtenez une liste avec ou sans toutes les metadatas de vues ou de formulaire inutile
- SPFieldCollection.GetField au lieu de List.Fields[FieldName] : vous pouvez récupérer un champs via son internal name ou displayname !!!
- SPWeb.GetList : pour obtenir directement une liste selon son url et non son titre (pratique en toolpart)
- SPWeb.GetSubwebsForCurrentUser : permet de récupérer la liste des sous site accessible par l’utilisateur en cours
- SPWeb.GetFile : permet de récupérer directement un fichier par son url
Et bien sur, vérifier aussi les propriétés des collections
genre,
En conclusion, pensez toujours à prendre un peu de temps pour explorer l’object model de SharePoint, il y a toujours quelque chose à découvrir
>>> MSDN : Microsoft.SharePoint <<<
Bon coding
Renaud Comte aka TheMit (GetSnowTire(TRUE), on ne sait jamais)
Member of WygTeam
http://www.wygwam.com
C’est un constat : on créé souvent des sites SharePoint plus rapidement qu’on le pense. En pratique, on oublie de casser l’héritage des droits

Ce n’est pas vraiment gênant mais que ce soit via l’admin, le code ou Powershell, il faut cependant faire attention à quelques détails .
A) Rappel sur la gestion des droits
Les permissions sous SP fonctionnent sur le principe d’assignation de sécurité entre un niveau de droit et une identité.

http://blogs.developpeur.org/themit/archive/2008/06/23/sharepoint-et-la-s-curit-en-d-veloppement-sproleassignment-spbasepermissions-et-leurs-amis.aspx
http://blogs.msdn.com/b/joelo/archive/2007/06/29/sharepoint-groups-permissions-site-security-and-depreciated-site-groups.aspx
Ce qui se traduit en pratique par:
- je donne un niveau lecteur à une personne ou un groupe
- je place une personne ou un groupe dans un groupe SharePoint qui possède déjà une assignation sur un niveau
Par défaut, SharePoint crée 3 groupes SharePoint auxquels sont associés 3 assignations de sécurité :
- Visiteur de “”
- Membre de “”
- Propriétaire de “”
Comme vous le réalisez, il n’y a pas à proprement dire de vrais groupes de sécurité : il faut des groupes et des assignations
==> et c’est exactement de là que viennent souvent les soucis d’admin ou d’incompréhension des powerusers au début
B ) Depuis l’interface
Quand vous créez un site avec des permissions uniques, SharePoint vous propose un écran de création automatique de ces 3 groupes par défaut (et des assignations associées)

Petit souci : si vous créez le site avec héritage et que vous cassiez l’héritage depuis l’interface, vous n’avez plus aucun moyen de créer rapidement ces 3 groupes ! Pour une raison un peu obscure, Microsoft a retiré de l’admin le lien vers la page de création de ces groupes
http://sharepointdevsolutions.blogspot.com/2010/11/missing-set-up-groups-page-in.html
Mais ce n’est pas bloquant, il suffit de recréer les groupes et les assignations … perte de temps plus qu’autre chose
Bien souvent, on rajoute juste des membres et on garde les visiteurs et admin du site père.
Heureusement, on peut contourner le souci aisément en tapant directement l’adresse de la page : <URL du site>/_layouts/permsetup.aspx
C) Depuis le code
Créer des sites de manières automatisés par code n’est absolument pas à négliger
- Pour des tests d’industrialisation (bonjour Phil)
- Pour respecter un plan de gouvernance (bonjour Christian)
- Pour déployer plus rapidement une nouvelle demande en Shell (Bonjour Fabrice)
- Pour éviter de donner les droits à des power users un peu jeunes (Bonjour François )
- Parce qu'on aime le code aussi (bonjour Laurent)
Certes, le processus est connu, largement utilisé et réutilisé mais il est bon de mettre en lumière certains petit points qu’on pourrait qualifier de gênants à bloquants à
Casser l’héritage
2 façons de faire :
Je préfère de loin utiliser le second car je peux au moins choisir de copier ou non les permissions du site père, ainsi que conserver les “uniques permissions” (on ne sait jamais)
>>> Attention, SPWeb.BreakRoleInheritance(true) signifie que vous cassez l’héritage et que vous copiez les permissions du père aussi. donc même si vous créez un nouveau groupe auteur, les auteurs du père ont encore accès !!!
http://moustafa-arafa.blogspot.com/2010/06/breakroleinheritance-common-mistake-tip.html
Mais voila, ce n’est pas tout !!! Attention aux problèmes de performance !!!
Ce genre de code fonctionne sans soucis mais avez vous déjà fait un test de charge sur vos VM SharePoint de Dev avec plus que 3 listes, 4 dossiers et 2 sites ? hum hum, rarement hein ? Je ne vous blâme pas mais si jamais vous faites cette opération sur un grand nombre de sites, sous sites et listes, vous allez constater de fort ralentissements !
La recopie des permissions du père peut s’accompagner de dizaines de création de permission “limited access” ce qui peut se cumuler avec les items, les listes et le site du fait que vous avez toujours accès “à la racine”
>>> Soit le problème de la bibliothèque avec des dossiers uniques par utilisateurs. Imaginez une bibliothèque avec 4000 dossiers à sécuriser, vous risquez de créer jusqu’à 4000 dossiers * 4000 accès restreint à la racine (à recopier) = 16 millions de permissions pas vraiment utiles …
Je ne saurais trop vous conseiller de lire ce post de Chakkaradeep Chandran [MCS]
http://www.chakkaradeep.com/post/SharePoint-ndash3b-Setting-Item-level-permission.aspx
Ainsi que celui ci de Jason Ruthkoski
http://www.sharepointbriefing.com/spcode/article.php/3816551/Solve-ItemLevel-Permission-Performance-Problems-in-SharePoint.htm
Soit un simple code à connaitre :
if (!item.HasUniqueRoleAssignments)
{
item.BreakRoleInheritance(false);
}
Mais revenons sur le sujet des groupes de sécurité par défaut
Donc, nous sommes sur un site SharePoint dont nous avons cassé l’héritage avec ou sans copy des permissions. Comment recréer ces groupes de sécurité ? Et surtout pouvoir les exploiter ensuite?
Certes, vous pouvez manipuler les roleassignements et refaire tout le travail tel que ce bon exemple
Ou sinon, vous utilisez la méthode SPWeb.CreateDefaultAssociatedGroups
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.createdefaultassociatedgroups.aspx
Seulement voila, la vie n’est pas toujours aisée … Votre site peut être créé depuis un template ou un site definition particulier et bizarrement vos groupes n’apparaissent pas en gestion …
Bug or not ? Plus ou moins …
Un petit tour avec Reflector (ou ses variantes gratuites) nous donne quelques informations intéressantes qu’on recoupe aisément avec les données du MSDN
CreateDefaultAssociatedGroups créé effectivement les groupes par défaut si et seulement si les propriétés des groupes associés du SPWeb sont nulles. Soit :
- Web.AssociatedVisitorGroup = null;
- Web.AssociatedMemberGroup = null;
- Web.AssociatedOwnerGroup = null;
Seulement, il ne faut pas oublier ensuite de les associer au SPWeb pour que l’administration de SharePoint en tienne compte dans le menu des groupes par exemple.
Et là on (peut) tomber dans un vieux piège historique de SharePoint : Bien souvent, l’OM de SharePoint utilise des clés en propertybags de ces objets comme référence plutôt que les propriétés en direct. Certainement pour des raisons de cache. C’était souvent un des points gênants en migration ou à cause de référence ancienne différente des nouveaux serveurs que les injecteurs se plantaient littéralement
il faut donc renseigner aussi ces fameuses clés que sont :
- Web.Properties["vti_associatevisitorgroup"]
- Web.Properties["vti_associateownergroup"]
- Web.Properties["vti_associatemembergroup"]
Ce qui donne le code complet que voici !
Web.AssociatedVisitorGroup = null;
Web.AssociatedMemberGroup = null;
Web.AssociatedOwnerGroup = null;
Web.BreakRoleInheritance(true);
Web.Update();
Web.CreateDefaultAssociatedGroups(SPContext.Current.Web.CurrentUser.LoginName, SPContext.Current.Web.CurrentUser.LoginName, Web.Name);
Web.Properties["vti_associatevisitorgroup"] = Web.AssociatedVisitorGroup.ID.ToString();
Web.Properties["vti_associateownergroup"] = Web.AssociatedOwnerGroup.ID.ToString();
Web.Properties["vti_associatemembergroup"] = Web.AssociatedMemberGroup.ID.ToString();
Web.Properties.Update();
Web.Update();
Je pense que tout a été dit, je complèterai le post selon les commentaires évidemment
Et Powershell ? pas de soucis : http://secretsofsharepoint.com/cs/blogs/tips/archive/2011/09/05/associate-custom-groups-using-powershell.aspx
A bientôt et bon coding
Renaud Comte aka TheMit (Félicitations à Mr Delaporte pour son fils Armand né dans la nuit d’Halloween )
Member of WygTeam
http://www.wygwam.com
(Oui je suis de retour, toutes mes excuses pour un si long silence mais je reviens doucement entre 2 pauses BB)
Pourquoi une telle question ? Simple me direz vous, non ?

Alors petit rappel : Comme vous le savez tous, SharePoint 2010 est multilingue et le moteur de publishing stocke toutes ses pages dans des bibliothèques dédiées “Pages”
Mais si jamais vous créez un site collection de publishing voir une variation en allemand, d’après vous comment se nomme la dite bibliothèque ?
!!! Seiten !!! (et non pages …)
Et devinez donc dans d’autre langues … aussi bien européenne qu’asiatique …
Eh oui, il est plus que complexe, pardon, dangereux de référencer PAGES dans vos développements qu’il s’agisse de chargement de page, de redirection ou de gestion de menu.
C’est pourquoi il est toujours important de savoir utiliser les fichiers de ressources, surtout ceux d’origine MS SharePoint tel que le osrvcore.resx
Vous trouverez des références plus que pratiques telle que List_Pages_UrlName
Ce qui facilitera bien la vie dans vos développements de code ou de Feature SP comme par exemple :
<UrlAction Url="$Resources:osrvcore,List_Pages_UrlName;/Mapage.aspx" />
Il suffit de le savoir, ou de le retrouver d’ailleurs
Bis bald !
Renaud Comte aka TheMit (
Ach ja, ich bin melomane)
Member of WygTeam
http://www.wygwam.com
Basiquement
Maintenant que SP2010 existe aussi bien en version serveur qu’online, il se pose toujours la douloureuse question de la migration de son existant
Je ne vais pas parler dans ce post de la migration du contenu mais plutôt de la partie “source code” tant désirée par nos amis les développeurs
Historique
La plupart des projets sous SharePoint 2007 ont réussi à être déployés en solution WSP certainement grâce à un projet phare : le WSPBuilder (et ses non moins fameuses extensions VS)
http://wspbuilder.codeplex.com/
Oui, certes, qqun écrivaient fièrement leur MakeCab et Manifest.xml (salut nico) où utiliser les VSeWSS (euh non, salut personne de mes connaissances en tout cas) mais majoritairement, WSP Builder revenait sur le devant de la scène
imaginez donc :

Soit de nombreux, nombreux projets VS 2008 avec un répertoire 12 en racine présent dans nos gestionnaires de sources à migrer.
Migrate the source or not ?
Je maintiens, la question se pose vraiment : faut il migrer vos sources ?
Pas vraiment, le code et le packaging de SP2007 fonctionnent toujours sous SP2010 avec ou sans le Visual mode upgrade
Certes, si la problématique touche à des composantes de l’UI comme la master, on ne se pose pas vraiment la question mais majoritairement, vos “custom devs” continueront à fonctionner assez bien sous SP2007
…
Seulement, voila … En cas de maintenance, correction de bug, évolution ou simple petite modification, vous allez devoir réutiliser une ancienne VPC avec
- SP2007
- VS2008
- WSPBuilder ?
et faire cohabiter des sources sous VS2010 avec en parallèle.
Bref, le début des soucis pour ne pas dire plus
Moralité : Si vos apps ne changent jamais, migrer leurs sources en fonction ou définitivement, faites le pas et profitez de la revalidation suite à la migration de votre portail pour convertir vos solutions 2007 en VS 2010
Et en pratique
Le travail de conversion peut être éprouvant voir fastidieux :
- reprendre le code
- recréer les artifacts et autre SP Items
- reprendre la structure logique du 12 en mapped folder
- …
Mais il y a moyen de gagner un peu de temps, en cherchant un peu dans la communauté MS
Import de WSP sous VS2010
Simple et très efficace : vous pouvez créer un nouveau projet VS2010 avec le template d’import de solution SharePoint !

Certes, ce template est prévu pour travailler de concert avec SPD et les galeries de SharePoint mais vu que le schéma est compatible, pourquoi ne pas en profiter avec nos chez vieux WSP sauce 2007 ?
Etape 1 : Création du projet + Url du site
Etape 2 : sélection du WSP et des éléments d’import


Etape 3 : génération du projet

Un fois importé, votre WSP se transforme en une vraie solution VS avec l’ensemble des artifacts déjà configurés. Seul petit souci prévisible, le code réside toujours dans une dll qu’il faudra reprendre. Cependant pour des projets tournés autour du déclaratif CAML et les Features, c’est efficace.
Limite, ça peut être une solution de reprise rapide en cas de perte des sources : vous extrayez les WSP de la central admin pour profiter ensuite de VS 2010 pour reprendre la partie configuration/déclaration de vos solutions !
http://blogs.developpeur.org/spbrouillet/archive/2010/10/05/powershell-recuperer-les-wsp-d-une-ferme-sharepoint.aspx
http://manish-sharepoint.blogspot.com/2010/05/retriving-sharepoint-wsp-files-from.html
Quelques remarques cependant après le test de 4 solutions 2007 issues de projets d’un de mes clients :
- Les Dlls sont ajoutés en racine de projet dans un dossier “Other Imported Files”
- Les artifacts de SP, soit les items de feature, module, Fields, CT et autre WebPart sont reconnus parfaitement : GOOD
- Les Mapped Folders se résument souvent à des sous dossiers de Template : dommage, on sent l’inspiration du chemin relatif au 12/template mais en rien gênant au final
- Chaque element.xml est placé dans un module avec un compteur
- La référence de SP.dll est faite sur la version 14 : tant mieux
- Reprise des resx dans les noms de Feature, normal mais surprenant à la première lecture
- Mais le nom des feature items reste Feature 1, 2, 3 …
En dehors du code et des DLL, parfait pour réorganiser et préparer une version 2010 plus personnelle
Import des sln de VSEWSS sous VS2010
J’ai beau plaisanter dessus, mais il y a quand même quelques centaines de projets fait avec ce sympathique VSEWSS. Microsoft joue son rôle d’éditeur et, en plus de nous avoir gratifiés d’une suite d’outils SP pour VS2010, bien ils ont rajouté un outil d’import
VSeWSS Import Tool for Visual Studio 2010

Mais je n’irai pas plus loin sur le sujet 
Import des slns de WSPBuilder

“Last but not least”
http://solutionarchitects.org/articles/2011/04/06/migrating-code-from-moss-2007-to-sharepoint-2010.htm
La dernière version du CKS Developement tool contient un nouveau petit outil : WSPBuilder project importer project template
Ce template de projet vous permet de créer une solution à partir du sln de vos sources VS2008 + WSPBuilder.
Le CKS reconstruit la solution VS2010 en se basant sur le contenu de la solution WSPBuilder de VS2008
>>> Attention, le projet est encore en beta mais déjà bien efficace
Vous êtes curieux ? Voici le Webcast :

Sinon, quelques captures d’écran de test de certaines de mes applis
Etape 1 : Création du projet

le CKS est toujours aussi bien intégré dans VS 2010, c’est vraiment impressionnant pour un projet Codeplex de voir une telle finition
Etape 2 : Génération de la solution

Déjà une belle réussite pour une première beta non ?
Quelques remarques :
- Meilleure reprise technique des noms des Features + utilisation des RESX : nickel
- Les Mapped Folders sont repris identiquement à ceux de VS (désolé pour les fans d’un SP Root)
- Tout est classé par répertoire, ça peut demander un peu de renommage
- en principe, si vous avez du contenu hors Mapped Folder, tout est classé dans un sous répertoire '”items” ensuite par type
- Chaque element.xml est placé dans un module avec un GUID
- Il récupère forcément tous les fichiers de votre solution avec le WSPBuilder, pensez à enlever vos batchs
Conclusion
De quoi être optimiste non ? Mais pour être tout à fait honnête, la conversion avec les outils, même le CKS (en beta) ne couvre pas encore 100% du périmètre.
Grave ? Pas vraiment car il faut reconnaitre qu’au moins 70/80% du boulot est viable !!!
Ce qui vous libère déjà beaucoup de contraintes de copie/revalidation des artifacts SharePoint pour vous permettre de ne vous concentrer que sur la solution 2010 et son réaménagement. Non ?
Il serait dommage que vous passiez à coté des ces outils lors de votre migration, le temps restera toujours une denrée précieuse et un ennemi juré en cas de calendrier délicat. Mais restez sur vos gardes, après tout ce sera toujours vous qui lancerez le script de build, donc validez bien les 10 derniers pourcents de votre travail !!!
PS : Pour ceux qui pensent que WSPBuilder est fini, sachez qu’il existe une nouvelle version beta pour SP2010
Elle reste toujours aussi intéressante mais il faut souligner le travail et le résultat qu’a produit Microsoft dans sa nouvelle suite SP avec VS2010 (que l’on a attendu si longtemps depuis SPS2001 …)
[Update]
Pour tenir compte des remarques passionnés et passionnantes de Nicoboo, je ne saurais trop rappeler que la qualité de votre code et du projet repose plus sur votre méthode de travail et la compréhension de votre outil que la qualité de VS 2010
N’oubliez pas que SP repose aussi bien sur des DLLs que du déclaratif !!! Evitez donc de créer des DLLS si vous déployez des Master Pages et des gabarits …

La gestion des ressources de langues et leur référence est bien géré au niveau framework SP mais complètement oublié des modèles de conception de VS2010 pour SP 2010. C’est certes dommage, souvent gênant pour ne pas dire bloquant dans des projets larges ou multilingues
Prenez donc le temps de lire ces articles lors de la conception de vos solutions SP :
Et dans le cas des Sandbox !!! (et oui les resx sont pas supportés en SB …)
Renaud Comte aka TheMit (Migratus, Importas et voilis Deployus omnibus)
Member of WygTeam
http://www.wygwam.com
Si vous travaillez sur la partie graphique de SharePoint, vous devez certainement connaitre Randy Drisgill, MVP SharePoint
Il est à l’origine des premiers posts sur le sujet mais surtout des Master Pages Vierges, tellement pratique pour faire l’intégration graphique dans SP2010
Elles sont disponibles sur :
(http://startermasterpages.codeplex.com/)
Le rapport avec OCS/LYNC ?
Oh, moins que rien, comme vous le savez, SharePoint et Office 2010 sont de bons compagnons. Chaque fois qu’un utilisateur apparait dans une liste, la connectique OCS intervient sur ce modèle

Mais cette intégration demande d’activer ou de télécharger un ActiveX bien spécifique, ce qui peut être gênant.
Ce post donne une solution pour l’éviter en forçant SP à ne pas utiliser l’intégration de OCS/Lync via ce morceau de JS
http://blog.drisgill.com/2010/02/removing-name-activex-control-warning.html
<script type="text/javascript">
function ProcessImn(){}
function ProcessImnMarkers(){}
</script>
Le soucis ?
Simple, cette astuce est implémentée par défaut dans les Starter Master Pages ! Donc si jamais vous avez besoin de déployer une nouvelle charte graphique, pensez bien à pondérer l’utilisation d’OCS/Lync car si vous laissez le JS en place, point d’intégration, donc de popup OCS possible
Genre de petit surprise toujours délicate à gérer 
Bon Charting
Renaud Comte aka TheMit (J’aime les oeufs de pacques, même ceux cachés dans SP et Codeplex …)
Member of WygTeam
http://www.wygwam.com
Lors des TechDays Geneva 2011, j’ai noté durant la session de Fabrice Romelard sur SSRS et SP2010 l’ajout d’une nouvelle fonctionnalité : le local mode.
Toujours curieux de tout dans le monde SharePoint et constatant un manque cruel d’information sur le sujet, j’ai décidé de regarder de plus près
Reporting sous SharePoint en Local Mode
Avec SP2010 et SSRS, vous avez la possibilité de coupler directement le serveur de reporting avec les bibliothèques et les sites de SharePoint 2010 via des content types et une WebPart Report Viewer dédiée.
Seulement voila, que faire si vous voulez évaluer ou profiter des capacités de reporting de SSRS sans forcément avoir installé SSRS avec vos datas SharePoint ?
Je m’explique :
- imaginez une ferme SharePoint sur un réseau ayant déjà une solution de reporting ou plus ? Difficile de justifier l’installation (et son sizing) d’un nouveau serveur de reporting ?
- Imaginez que vous voulez utiliser les données d’une liste SharePoint dans un rapport, genre liste personnalisée avec formulaire infopath métier mais que votre équipe de reporting ne sait que requêter … du SQL (et hop j’exporte mes listes … Hello Mr CB
)
Soit en pratique le mode local : permettre d’utiliser le Report Viewer dans SharePoint 2010 pour exécuter et consulter les rapports dont les données sont stockées dans des listes de votre site.
Si vous fouillez un peu, vous pouvez réaliser que ce mode local permet surtout de pouvoir faire fonctionner le publish sous SP des bds Access : les rapports sont convertis en rapport RDL pour le Reporting Service local de SharePoint.
http://technet.microsoft.com/en-us/library/ff487969(SQL.110).aspx
En tout cas, ce mode vous offre une possibilité supplémentaire, et gratuite (elle fonctionne sous SPF !!!) de pouvoir intégrer de vrais rapports graphiques sur vos datas SharePoint avec règles, filtres, regroupement et de multiples couches graphique
Un exemple ? Pas de soucis
Soit une liste de station de ski
Et un joli rapport à l’accueil en remplacement de la listview Web Part
Ca y est vous réalisez mieux le potentiel ? 
Très pratique pour améliorer l’interface de ces listes de tâches, agendas ou toutes autres listes customs ?
Soit une vraie alternative à certains développements ou feuilles XSL bien complexes : vous pouvez rajouter à votre boite à outil le Report Builder
[Update]
Sinon coté liçense ?
Difficile d’obtenir des informations tout à fait clair mais si on se reporte au Cluf d’install et des licenses SSRS, Report Builder est gratuit du moment que vous avez une liçense (CAL/CPU…) SQL Server en règle. Soit le contexte idéal pour une ferme SharePoint qui est relié à … un SQL Server, tout simplement.
Bon maintenant que le sujet du reporting est lancé, si on rentrait dans le concret ?
Soit une revue pas à pas de la configuration et du Report Builder par l’image, ne vous inquiétez pas
Installation du Addin SSRS en Local Mode
Comme précisé en préambule, il est assez difficile de trouver de l’information concrète sur le local mode. Clairement, beaucoup utilisent le mode connecté, ce qui revient à rapprocher votre serveur SP d’un serveur SSRS. Ce qui est loin d’être un mal !!!
Dans notre cas, rassurez vous, le déploiement du SSRS en Local mode est finalement … vraiment simple. En effet, ce mode vous dispense de toute configuration car vous n’avez pas à déployer de SSRS. Vous n’utilisez que l’addin, soit le service de rapport pour SharePoint.
La seule documentation fiable reste celle de la configuration du report pour Access Service :
http://technet.microsoft.com/en-us/library/ee662542.aspx
A) Téléchargez et installez l’Addin sur vos Front end (comme si vous aviez vraiment SSRS en fait)
SQL Server® 2008 R2 Reporting Services Add-in for Microsoft SharePoint® Technologies 2010
B) Ne surtout rien configurez en Central Admin (pas de Report Server)
C) Obligatoire : activez pour SharePoint Server l’ASP.NET Session State Service
http://geekswithblogs.net/naijacoder/archive/2010/06/14/140408.aspx
Soit 1 simple ligne de PowerShell SP en admin : Enable-SPSessionStateService -Defaultprovision
Pour une config plus avancée, voir http://blogs.msdn.com/b/markarend/archive/2010/05/27/using-session-state-in-sharepoint-2010.aspx
En pratique, l’ASP.Net Session State sous SharePoint utilise des sessions en DB SQL, DefaultProvision créée une DB avec un Guid (SessionStateService_<GUID>” ) sur le serveur SQL relié à votre ferme. Donc pas de soucis de load balancing mais attention à la montée en charge évidemment.
D) IISRESET
E) Activer la Feature “Report Server Integration” dans vos Site Collections et vous pouvez utilisez vos rapports !!!
En cas de soucis ou erreur, ce lien MS récapitule toutes les erreurs possibles et connues, bien utile pour certaines configurations exotiques
http://msdn.microsoft.com/en-us/library/ff487876(v=sql.110).aspx
Utilisation du Addin SSRS en Local Mode
L’utilisation de l’Addin est malheureusement moins intégrée en mode local que son équivalent en mode connecté. Vous ne pouvez pas utiliser le report builder ou la configuration de source depuis une liste SharePoint. Ce fonctionnement bien ergonomique est réservé au mode connecté …
Mais je ne saurais trop vous conseiller d'utiliser quand même la démarche propre à SSRS pour faciliter la gestion le tri et toute future évolution de votre ferme avec le reporting
Soit
A) Créer une bibliothèque de document avec l’utilisation des Content Types
B) Ajouter les CT de Reporting

C’est à ce point que vous subissez la première restriction du mode local, vous ne pouvez créer directement votre rapport en cliquant sur nouveau. Vous devez déployez sur votre poste Report Builder 3.0 ou sinon utiliser Business Intelligence Development Studio
Création d’un Rapport
Pour rester dans l’esprit du mode local, je vais utiliser le RB 3.0
A) Une fois installé, lancer RB

B) Créer votre DataSet ou utiliser une source partagé
Soit pour nous, forcement, une source de données SharePoint, local mode oblige…
http://msdn.microsoft.com/en-us/library/ff487969(v=SQL.105).aspx
- Microsoft Access 2010 reporting
- SharePoint list data extension
- une Datasource embarquée
- une Datasource partagée
>>> la Connection String correspond à l’url de votre site web SP

N’oubliez pas de configurer le compte d’exécution, sinon votre rapport demandera les credentials, ce qui n’est pas forcément pratique

C) Ensuite, vous pouvez utiliser le Query Designer sur vos listes SharePoint (soit la requête CAML )

D) Vous choisissez le style du rapport, les distribution X/Y de vos données et son thème graphique


E) Vous finissez le rapport en mode Design, voire affinez les regroupement et le positionnement

A noter la richesse de l’outil qui n’a pas à rougir de comparaison avec d’autre outil de reporting …
Vous sauvegardez le rapport en fichier RDL que vous uploadez dans votre site SharePoint (idéalement, vous lui donnez le CT Report Builder Report)

Cliquez et testez votre rapport !!!

Je vous avez prévenus que c’était simple non ?
Utilisation du Report Viewer
Maintenant que vos rapports sont dans une liste, vous pouvez les présenter via la Report Viewer WebPart
A) Ajoutez la WP dans votre page

B) configurez
- le lien à votre Rapport
- les paramètres de Toolbar

C) consultez et partagez votre rapport

Remarque de configuration
Dans certaines de mes configs de test, j’ai déjà constaté quelques soucis d’erreur de ressources javascript avec la WP Report Viewer. Pas de soucis, une KB existe : http://support.microsoft.com/kb/2407088/
- changez le mode Debug a False du noeud compilation du Web.config
- ou déployez le Cumulative Update package 4 for SQL Server 2008 R2
Conclusion
Clairement, le mode local soit sans SSRS permet quand même à SP 2010 de proposer une vrai solution de reporting de ses propres données. Certes, vous ne bénéficiez pas de la création ou la gestion en ligne des sources ou des modèles, bénéfice réservé à l’intégration complète de SSRS, mais ce n’est pas si handicapant.
La flexibilité de Report Builder dans ses règles de conception ou de requête des rapports offre aussi une vrai alternative au développement de WebPart de présentation de données que ce soit via SharePoint Designer ou Visual Studio.
Je ne saurais trop vous conseiller d’évaluer SSRS en mode local pour mieux réaliser les bénéfices de la solution aussi bien pour des besoins
- Techniques : développement de solution complète
- Business : Rapport Métier
- Design & ergonomie : enrichissement de l’accueil de vos sites
- …
L’essayer, c’est l’adopter (voir prévoir le déploiement futur de SSRS aussi)
Renaud Comte aka TheMit (Jeu : qui peut mettre un nom sur la photo de ski
? Seul un vrai SharePointeur peut trouver !!!)
Member of WygTeam
http://www.wygwam.com
Quelques clients m’ont redemandé le lien de la machine de demo SP2010 de Microsoft
Certes, vous la retrouvez rapidement par un moteur de recherche mais la plupart des posts parle de la version beta et le lien est désormais indisponible
Hum hum, don’t worry, la voici
http://www.microsoft.com/downloads/details.aspx?FamilyID=751fa0d1-356c-4002-9c60-d539896c66ce&displaylang=en
Cette machine séparé en 2 : 1 pour AD , l’autre avec SP complet possède un jeu de demo complet du système comme FAST, PerformancePoint et ECM.
Petit conseil, seul la machine SP a besoin d’être démarré en pratique (sauf pour qques scénario d’import)
Soit une belle machine pour tester, évaluer tranquillement la plateforme !
Un peu lourde en mémoire, cependant pour faire du Dev, dans ce cas, je ne saurais trop vous conseiller une simple machine sous Seven et d’utiliser l’Easy Setup :
http://blogs.msdn.com/b/cjohnson/archive/2010/10/28/announcing-sharepoint-easy-setup-for-developers.aspx
En résumé, de quoi faire, surtout si vous voulez tester les différents kit d’autoformation comme :
Soit
Pour finir, un lien vers donovanf's Office : Download Office 2010 and SharePoint 2010 RTM VHD for Evaluation
Il rajoute quelques précision si jamais vous voulez travaillez sur le Office 2010 Developper Training Kit.
Voila, un petit post dans le genre Favori bien utile
Renaud Comte aka TheMit (Tiens de retour ?)
Member of WygTeam
http://www.wygwam.com
Les bonnes vieilles habitudes ont souvent la vie dure …
Difficile de passer au tout PowerShell quand pendant des années, STSADM a été votre meilleur compagnon
Mais bon, il faut savoir évoluer surtout quand le remplaçant est largement meilleur non ?



Donc si vous avez du mal, pas de soucis, voici un tableau d’équivalence entre PS et STSADM : http://technet.microsoft.com/en-us/library/ff621084.aspx
…
Oui je sais la liste est longue mais si vous êtes fan de PowerShell, sachez que vous pouvez ruser pour trouver vous même l’équivalence !!!
Chaque commande PS est souvent liée littéralement à son exécution, genre pour ajouter une solution, Add-SPSolution donc vous pouvez utilisez un “filter” facilement 
Exemple
get-command –PSSnapin Module Microsoft.SharePoint.Powershell | Where-Object { $_.Name –like “*Solution” } Merci Andrew Connell pour le truc !!!
Sinon, voici ma sélection personnelle, du moins pour les opérations les plus courantes :
Bon courage et bon PS
Renaud Comte aka TheMit (l’évolution ?, 3eme liste, 2eme sous site dans le portail central, pas de soucis)
Member of WygTeam
http://www.wygwam.com
Une image est toujours plus parlante, non ?

En résumé, tout pour profiter des dernières session ou MAJ de session sur le sujet et directement depuis
- son bureau
- sa canapé
- sa télé
- sa baignoire (attention avec le chargeur )
La section Office & SharePoint est bien remplie
http://www.msteched.com/2010/Europe/Tracks/OfficeSharePoint

En ce qui me concerne, petit focus sur le 365 et SP Online version DEV, il faut bien s’occuper entre 2 biberons nocturnes non ?
A noter une session pour mes amis dans le nuage
ou au Canada
SharePoint 2010 & Windows Azure: How they Play Together?
http://www.msteched.com/2010/NorthAmerica/OSP213
Pour plus de détails ...
ou encore pour les FANS de Gouvernance et de bon mots
SharePoint 2010 Governance
http://www.msteched.com/2010/Europe/OFS326
Bon visionnage
Renaud Comte aka TheMit (j’ai trop de Stream à voir mais c’est pas grave)
Member of WygTeam
http://www.wygwam.com
Je sors juste d’une problématique assez embêtante pour être relayer.
Si vous utilisez WSS et/ou MOSS, vous devez être au courant que l’éditeur de texte dans la CEWP, les champs de publishing et surtout dans les listes comme le WIKI ou les annonces n’est pas des plus pratique
La solution, bien rependue, est de déployer le Telerik RAD Editor Lite pour SharePoint

http://www.telerik.com/community/free-products.aspx
il existe aussi pour SP2010 si besoin d’ailleurs.
Ce control possède pas mal de fonctionnalité et surtout quelques points d’extensibilité bien sympathiques que je vous laisse découvrir sur le site
Mais personnellement, je le conseille surtout pour les WIKI et la Content Editor WebPart avec son Picture Manager

Car vous pouvez sélectionner directement les images via un explorateur voir les uploader par exemple.
Pour l’install, suviez ce guide : http://blogs.telerik.com/stoyanstratev/Posts/07-06-21/Using_RadEditor_as_a_Wiki_Editor_in_MOSS.aspx?ReturnURL=%2Fstoyanstratev%2Fposts.aspx%3FYear%3D2007
Bon, je reviens au problème de base de ce post
Si vous utilisez bien ce contrôle, vous serez rapidement convaincu de son utilité … à un détail près
Du fait du fonctionnement du DOM sous IE, le RAD Editor ne fait que de créer des URLS absolus et non relatives
Soit gros problème dans le cas de :
- migration d’adresse
- déplacement de contenu
- ajout d’un accès Extranet en FBA
- …
En résumé, BLOQUANT
Mais la solution est simple
Après quelques recherche sur le Forum Telerik, nous nous sommes aperçus avec mon client que la version lite supportait quelques paramétres des versions payantes de la 5.X payantes
En pratique, il vous faut juste mettre à jour le fichier config dans le 12/WPressources du control
/Program Files/Common Files/Microsoft Shared/web server extensions/wpresources/RadEditorSharePoint/4.5.6.0.0__1f131a624888eeed/Resources/
avec les paramètres suivants
<property name="StripAbsoluteImagesPaths">true</property>
<property name="StripAbsoluteAnchorPaths">true</property>
Rajoutez un petit IISRESET pour tout rafraichir et si vous êtes en Load Balancing, n’oubliez PAS de mettre à jour TOUS les Front Webs (évident n’est il pas …)
Et la miracle, plus de soucis, désormais, les URLS sont relatives 
Au dernier détail, si vous voulez que ce comportement “relatif” soit aussi effectif dans les WIKIs, n’oubliez pas de mettre à jour ConfigFile.xml et ListConfigFile.xml
>>> Comme vous le savez, les pages WIKI ne sont que le rendus transformé des contenu de la liste … Sinon vous pouvez chercher longtemps

voila voila
Renaud Comte aka TheMit (apres le telerik, choucroute, si si)
Member of WygTeam
http://www.wygwam.com
Les 10 derniers blogs postés
-
Intégration Yammer et SharePoint Online (Office 365), étape 1 … par
Le blog de Patrick [MVP SharePoint] le 06-12-2013, 17:37
-
[Dynamics CRM] Ajouter les dossiers de CRM au dossier Favoris d’Outlook par
Christine Dubois le 06-10-2013, 15:50
-
Visual Studio 2013 par
Etienne Margraff le 06-04-2013, 10:26
-
Configurer la collation SQL Server pour SharePoint par
Blog de Jérémy Jeanson le 06-03-2013, 19:48
-
Etendre le Team Web Access de TFS 2012 – Step 1: Création du plugin par
Philippe Didiergeorges Aka Philess le 06-03-2013, 07:30
-
Livre Blanc : Développer des applications NUI par
Fathi Bellahcene le 06-01-2013, 11:35
-
[Dynamics CRM 2011] Copier une vue d'entité par
Christine Dubois le 05-29-2013, 13:20
-
[Conf’SharePoint 2013] Mes présentations… par
Le blog de Patrick [MVP SharePoint] le 05-28-2013, 09:04
-
[wpdev] Storage bug in MediaLibrary.SavePicture par
Kévin Gosse le 05-26-2013, 19:08
-
VMMap en mode instrumentation sur système 64bit : attention à la plateforme cible du build .NET par
CoqBlog le 05-25-2013, 22:25