Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités


  • Ancien MVP SharePoint 8 ans ...
    Des projets .Net, SharePoint 2013 ou Office 365 ??

    Contactez-nous :

Archives

SharePoint 2010 Dev : cherchez toujours les méthodes GET !

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 Sourire. 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
SharePoint 2010 : Création des groupes de sécurité à posteriori et gestion de l’héritage des permissions

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

image

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é.

ACL et WSS

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)

image

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 Sourire

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

SharePoint 2010 WCM & multilingues : Comment dites vous pages en allemand ? “Seiten”

(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 ?

image

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
Mots clés Technorati : ,,
Migration de code SharePoint 2007/2010 : différentes pistes et outils

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 :

image

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 !

image

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

imageimage

Etape 3 : génération du projet

image

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

image

Mais je n’irai pas plus loin sur le sujet Sourire

Import des slns de WSPBuilder

image

“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 : 

image

Sinon, quelques captures d’écran de test de certaines de mes applis

Etape 1 : Création du projet

image

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

image

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 typeimage
    • 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 …

image

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

Mots clés Technorati : ,,,,
Master SharePoint & intégration Lync/OCS : à savoir

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  :

Starter Master Pages for SharePoint 2010

(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 Sourire

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

Mots clés Technorati : ,,,,
Reporting Services & SharePoint 2010 : le mode local (ou des Rapports sans l’install serveur SSRS)

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

  image

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 Clignement d'œil)

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

image

Un exemple ? Pas de soucis

Soit une liste de station de ski

image

Et un joli rapport à l’accueil en remplacement de la listview Web Part

image

Ca y est vous réalisez mieux le potentiel ? Sourire

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
image

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

image

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

image

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

image

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

image

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

imageimage

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

image

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)

image

Cliquez et testez votre rapport !!!

image

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

image

B) configurez

  • le lien à votre Rapport
  • les paramètres de Toolbar

image

C) consultez et partagez votre rapport

image

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 Sourire ? Seul un vrai SharePointeur peut trouver !!!)
Member of WygTeam
http://www.wygwam.com

Rappel : lien vers la RTM de la machine de Demo IW, soit SP2010 + quelques kits pour débuter

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

image 

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 

Learn SharePoint Development

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

SharePoint 2010 : PowerShell et Stsadm, les équivalences

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 ?

imageimageimage

 

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 Sourire

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 :

Stsadm operation

Windows PowerShell cmdlet

Activatefeature

Enable-SPFeature

Addcontentdb

Mount-SPContentDatabase

New-SPContentDatabase

Addpath

New-SPManagedPath

Addsolution

Add-SPSolution

Addtemplate

Install-SPWebTemplate

Adduser

New-SPUser

Addwppack

Install-SPWebPartPack

Backup

Backup-SPConfigurationDatabase

Backup-SPFarm

Backup-SPSite

Createsite

New-SPSite

Createsiteinnewdb

New-SPSite Use the ContentDatabase parameter.

New-SPContentDatabase

Createweb

New-SPWeb

Deactivatefeature

Disable-SPFeature

Deleteconfigdb

Remove-SPConfigurationDatabase

Deletecontentdb

Dismount-SPContentDatabase

Deletesite

Remove-SPSite

Deletesolution

Remove-SPSolution

Deletetemplate

Uninstall-SPWebTemplate

Deleteuser

Remove-SPUser

Deleteweb

Remove-SPWeb

Deletewppack

Uninstall-SPWebPartPack

Deploysolution

Install-SPSolution

Deploywppack

Install-SPWebPartPack

Displaysolution

Get-SPSolution

Enumalternatedomains

Get-SPAlternateURL

Enumcontentdbs

Get-SPContentDatabase

Enumdataconnectionfiledependants

Get-SPDataConnectionFileDependent

Enumdataconnectionfiles

Get-SPDataConnectionFile

Enumsites

Get-SPSiteAdministration (To run this cmdlet, you must be a member of the Farm Administrators group.)

Get-SPSite (To run this cmdlet, you must be a local administrator on the computer where SharePoint 2010 Products is installed.)

Enumsolutions

Get-SPSolution

Enumsubwebs

Get-SPWeb

Enumtemplates

Get-SPWebTemplate

Enumusers

Get-SPUser

Enumwppacks

Get-SPWebPartPack

Enumzoneurls

Get-SPAlternateURL

Execadmsvcjobs

Start-SPAdminJob

Export

Export-SPWeb

Extendvs

New-SPWebApplication

Getproperty

Get-SPFarmConfig

Get-SPTimerJob

Disable-SPTimerJob

Enable-SPTimerJob

Set-SPTimerJob

Start-SPTimerJob

Import

Import-SPWeb

Installfeature

Install-SPFeature

Mergecontentdbs

Move-SPSite

Osearch

For the Osearch parameters farmcontactemail, farmperformancelevel, farmserviceaccount, and farmservicepassword, use the Get-SPEnterpriseSearchService and Set-SPEnterpriseSearchService cmdlets.

For the Osearch parameters start and stop, use the Start-SPEnterpriseSearchServiceInstance and Stop-SPEnterpriseSearchServiceInstance cmdlets, respectively.

For the Osearch parameter defaultindexlocation, use the Get-SPEnterpriseSearchServiceInstance and Set-SPEnterpriseSearchServiceInstance cmdlets.

Renameserver

Rename-SPServer

Renamesite

Set-SPSite

Use the Url parameter.

Renameweb

Set-SPWeb

Use the RelativeUrl parameter.

Restore

Restore-SPFarm

Restore-SPSite

Retractsolution

Uninstall-SPSolution

Setconfigdb

Connect-SPConfigurationDatabase

Setlogginglevel

Set-SPLogLevel

Siteowner

Set-SPSiteAdministration

Syncsolution

Install-SPSolution

Use the Synchronize parameter.

Uninstallfeature

Uninstall-SPFeature

Updateaccountpassword

Set-SPManagedAccount

Upgradesolution

Update-SPSolution

Upgradetargetwebapplication

None

Uploadformtemplate

Install-SPInfoPathFormTemplate

Userrole

Get-SPUser

Move-SPUser

New-SPUser

Remove-SPUser

Set-SPUser

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

TechEd Online : avez vous les sessions SharePoint 2010 ? Vraiment toute ?

Une image est toujours plus parlante, non ?

image

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

image

 

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 Clignement d'œil 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

SharePoint & Telerik : attention aux URLS absolues

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

image

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

image

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 Sourire

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 Sourire Clignement d'œil

voila voila

Renaud Comte aka TheMit (apres le telerik, choucroute, si si)
Member of WygTeam
http://www.wygwam.com

SP2010 : Le Search Center, sa navigation et sa master page

SharePoint 2010 a revu entièrement la conception de ses modèles par rapport à MOSS 2007. Preuve en est le Wiki Enterprise qui vient remplacer le Collaboration Portal.

C’est aussi le cas pour le Search Center. En manipulant un peu les configuration avec mon collègue Christian Hougardy, nous nous somme aperçus de quelques “spécificité”s qu’il faut mieux savoir !

image

image

Désormais, par défaut, SP2010 utilise une page en layout pour les résultats de recherche qui elle dépend de la master en cours. En effet, il est assez dommage que chaque fois que vous créez un portail WCM ou Wiki voir des blogs que vous multipliez les zones de recherche.

>>> Il vaut mieux créer une seule adresse de recherche pour toute la société, un Search Center  que référencie chaque collection de site SharePoint.

image

On retrouverait ainsi ces réflexes internet de lancer directement un search engine comme Google ou Bing plutôt que de démarrez par MSN ou Yahoo dans l’idée. Sans pour autant perdre la référence au moteur central de recherche évidemment

Donc, si vous désirez utiliser un Search Center (Fast ou Classique) vous pouvez

  • rajouter un sous site sur ce modèle
  • créer une collection dédié

Le mieux reste de dédier une collection et une Web app de mon point de vue.

Cependant, ca pose quelques soucis pour des intranets ou des sites de publishing mono collection

>>> Difficile de multiplier les adresses, la navigation et le style.

Il y a quelques contraintes à prendre en considération

A)

Le Search Center implémente la minimal.master, ce qui la rend la plus simple et la plus efficace possible

Soit sans navigation et un minimum de présence graphique

Mais qui la rend aussi totalement différente des autres master de SharePoint.

Si vous utilisez plusieurs collections avec chacune un style particulier ce n’est point gênant. Si vous voulez les unifier … bien il faut faire attention

>>> si vous appliquez la default.master de SharePoint, vous risquez de perdre le positionnement de la boiter de recherche qui se repositionne dans le dossier de BreadCrumb ….

image devient … image

http://www.sharepoint911.com/blogs/john/archive/2010/05/12/sharepoint-search-center-uses-minimal-master-–-and-why-you-should-care-about-that.aspx

Vous devez forcement prévoir de retoucher votre master, mieux, créer une master dédiée au Search Center qui reprend votre charte graphique dans les grandes lignes et couleurs

Le problème est que si vous créer votre Search Center dans votre collection de publishing ou wiki entreprise, n’importe quel admin qui applique la master principale sur l’ensemble des sous site risque d’écraser la charte de recherche

>>> Il faut donc en tenir compte dans votre gouvernance de mise à jour de votre portail (ou tout simplement externaliser le search center)

B)

Si vous n’avez pas prévu de trop retouche la charte graphique de SharePoint et que vous voulez simplement utiliser le search center pour démarrer (genre POC, maquette, ou simple intranet), vous risquez aussi d’avoir des problème de navigation :

  • Dans le cas de site collection séparé, le cloisonnement natif de celle ci ne vous permet pas de partager le provider de navigation, donc le top menu commun : logique
  • Dans le cas de la même collection, la minimal.master ne contient pas les contrôles de navigation, juste le ruban !!!

Voici quelques petits conseils selon votre besoin:

Vous n’avez pas peur de modifier votre site et l’asp.net comme SPD ne vous fait pas peur

  • Ajouter ces fameux contrôles dans le layout  SearchMain.aspx via SharePoint designer, ou dupliquez la avec le code suivant

 

<div id="s4-topheader2" class="s4-pr s4-notdlg">
		<div class="s4-lp s4-toplinks">
			<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server">
				<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">
					<SharePoint:AspMenu
					  ID="TopNavigationMenuV4"
					  Runat="server"
					  EnableViewState="false"
					  DataSourceID="topSiteMap"
					  AccessKey="<%$Resources:wss,navigation_accesskey%>"
					  UseSimpleRendering="true"
					  UseSeparateCss="false"
					  Orientation="Horizontal"
					  StaticDisplayLevels="2"
					  MaximumDynamicDisplayLevels="1"
					  SkipLinkText=""
					  CssClass="s4-tn"/>
					<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate">
						<Template_Controls>
							<asp:SiteMapDataSource
							  ShowStartingNode="False"
							  SiteMapProvider="SPNavigationProvider"
							  id="topSiteMap"
							  runat="server"
							  StartingNodeUrl="sid:1002"/>
						</Template_Controls>
					</SharePoint:DelegateControl>
				</asp:ContentPlaceHolder>
			</asp:ContentPlaceHolder>
		</div>
	</div>


avant ce code

<div>
    <asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server" />
</div>

et ajoutez pour le style

<SharePoint:CssRegistration Name="corev4.css" runat="server"/>


avant celui la

<SharePoint:CssRegistration Name="layouts.css" runat="server"/>
(Merci le forum MSDN : http://social.technet.microsoft.com/Forums/en-US/sharepoint2010customization/thread/cd568f4b-6372-480a-b393-ad3d9ab1db84)
 

Vous ne voulez simplement remonter à votre portail sans rien casser ?

>>> Editer votre page de recherche, ajoutez une simple Content Editor WebPart puis un peu de javascript + html genre history.go(-1) dans une balise de lien HREF

http://sharepoint.microsoft.com/Blogs/GetThePoint/Lists/Posts/Post.aspx?ID=381

Home and Back buttons on the search results page

Home and Back buttons on the search results pageimage

Simple mais TRES Efficace !

Home and Back buttons on the search results page

C) Dernier point

Je le dit souvent à mes collègues mais il faut toujours faire attention aux effets collatéraux et non, à la différence des militaires, je n’accepte pas de tolérance de perte !

>>> la minimal.master est aussi utilisé par les Office Web Applications. Donc, faites attention si vous surcharger trop cette master directement dans la galerie ou ailleurs, vous risquez de perdre en visibilité dans la consultation de vos documents.

Risque faible mais réel !

Si vous voulez créez de nouvelles masters, utilisez donc ce projet bien utile : http://blog.drisgill.com/2009/11/starter-master-pages-for-sharepoint.html

D’ailleurs son auteur a déjà bien traité de cette problématique et vous propose aussi une version remanié de la default master pour afficher navigation et personnalisation

image

http://blog.drisgill.com/2010/09/converting-custom-sharepoint-2010.html

 

Et voila, bon courage dans le Search Center !

Renaud Comte aka TheMit (Mais non 2010 n’est pas plus compliqué que 2007, il est comme son prédécesseur, soit un peu SPéciale)
Member of WygTeam
http://www.wygwam.com

SP2010 : Host & DisableLoopback pour pouvoir utiliser enfin des Hostnames sous 2008 R2

Une petite astuce pour ceux qui comme moi ne sont pas “fan” de travailler directement sous Win Seven et SP2010. Oui, je préfère évoluer en machine virtuel que ce soit sous VMWare player, sous Hyper V ou via un VHD BOOT tant que je peux travailler sur la plateforme la plus proche de ma prod cliente soit Win 2008 Server R2

Une des fonctionnalités que j’adore sous SP est la possibilité de “générer” autant que collection & de Web App (du moins dans des limites raisonnables Sourire) autonome et indépendante

Certes, je garde toujours une machine vierge pour valider mes déploiements en parallèle mais j’aime bien isoler mes développements, mes tests et mes essais

 

Seulement voila, pour avoir plusieurs adresse, il est nécessaire de créer plusieurs Web Applications.

Souvent, j’utilisais des ports différents sur le nom de ma VM mais il peut être plus convenable d’utiliser des hostnames

Genre, ajouter l’IP local avec un Nom plus humain dans  C:\WINDOWS\system32\drivers\etc\hosts

>>> http://www.commentcamarche.net/faq/5993-modifier-son-fichier-hosts

Mais voila, rien n’est jamais facile et aisé dans ce bas monde.

>>>>>>>  Par défaut, Win 2008 R2 et aussi 2003 ne permet pas d’accéder à une application web sécurisé avec host en locale (je simplifie à l’extrême, c’est un sécurity fix !).

“UPDATE”

Comme me le faisais remarque délicatement mon collégue Christian Hougardy, Spencer Harbar a traité le sujet dans son ensemble avec la problématique Prod/Dev.

Voici le post

http://www.harbar.net/archive/2009/07/02/disableloopbackcheck-amp-sharepoint-what-every-admin-and-developer-should-know.aspx

Ce qui se comprend en production évidemment mais pas forcement en dev ou demo

En pratique, vous créez votre Web App et votre site collection et après 3 prompt sécurité, vous arrivez sur une page blanche … Frustrant non ?

Solution

image

Il vous suffit de rajouter une clé en Base de registre (regedit) comme précisé dans une ancienne KB : http://support.microsoft.com/kb/896861

image

  • Regedit
  • allez à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  • ajouter une clé DWORD
  • la nommer DisableLoopbackCheck
  • mettre la valeur  1
  • quitter et redémarrer

Si vous préférez le script Powershell, ca revient à

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -Value "1" -PropertyType dword

Et voila, à vous les plaisirs des Web Applications

Attention, manipulation à ne faire que sur des machines locales d’évaluation !!!

Renaud Comte aka TheMit (je la crée et je la nomme comme je veux, non mais, vilain R2)
Member of WygTeam
http://www.wygwam.com

SharePoint 2007 & Design : crash du mode feuille de données (Datasheet) sous IE

Il y a de temps en temps des surprises dans la personnalisation de SharePoint, si si.

La dernière en date que je viens de vivre avec l’un de mes collègues designer est proche d’une belle migraine, limite “nervous breakdown”

image

(désolé pour la référence)

Le contexte : Suite à une personnalisation avancée de la Master Page, l’ouverture d’une liste en mode feuille de donnée prend beaucoup de temps voir plante internet explorer …

image

Hum hum.

Donc après bien des tests, on a pu identifier des styles responsables d’une sorte de boucle infinie : merci le padding
>>> Et surtout ensuite, nous avons pu chercher sur le web de manière moins hasardeuse pour compléter notre analyse


Voici justement quelques posts TRES indicatifs

(Je ne saurais trop vous conseiller le dernier)

En résumé, la fonction GCComputeSizing du fichier Core.js dans le 12 assure le calcul de la dimension de la Grid.

Malheureusement, si la balise container s’appuie sur une DIV ou un TABLE qui possède, ou hérite d’un style avec du padding/margin voir un element enfant plus bas comme un footer, la fonction rentre dans une sorte de boucle infernal ralentissant tout le processus.

La fonction a des soucis a simplement “sizer” la hauteur du composant

Soit plusieurs pistes de solutions plus ou moins viable à tenter

  • Identifier les margin paddin : attention à votre style malheureusement
  • Dimensionner votre container
  • rajouter un style de dimensionnement clair et précis
    >>> la solution retenue dans mon cas

    .ms-bodyareaframe object {width:100%!important; height:auto!important;}
    (bien rajouter ce style sur la balise encapsulant votre contenu !!! )
  • Modifier la fonction dans le core.js

 

Bon évidemment, la dernière solution n’est pas une bonne pratique mais rien ne vous empêche de surcharger la fonction en externe via un second js voir directement dans la master

 

<script type="text/javascript">
function GCComputeSizing(GCObject) 
{ 
if (TestGCObject(GCObject)) 
{ 
var fBIDI=(document.documentElement.currentStyle.direction=="rtl"); 
var lGCWindowWidth=document.documentElement.scrollWidth; 
var lGCWindowHeight=(document.documentElement.scrollHeight>document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.documentElement.scrollHeight;
 var lGCObjectOffsetLeft=0; 
var lGCObjectOffsetTop=0; 
if (fBIDI) 
{ 
lGCObjectOffsetLeft=-180; 
lGCObjectOffsetTop=120; 
} 
else 
{ 
lGCObjectOffsetLeft=32; 
lGCObjectOffsetTop=-2; 
} 
var lGCObjectWalker=GCObject.parentElement; 
while (lGCObjectWalker !=document.body) 
{ 
lGCObjectOffsetLeft+=lGCObjectWalker.offsetLeft; 
lGCObjectOffsetTop+=lGCObjectWalker.offsetTop; 
lGCObjectWalker=lGCObjectWalker.offsetParent; 
if (fBIDI) 
if (lGCObjectWalker.offsetLeft > 0) 
break; 
} 
lGCObjectOffsetLeft+=GCObject.parentElement.offsetLeft; 
lGCObjectOffsetTop+=GCObject.parentElement.offsetTop; 
glGCObjectHeight=lGCWindowHeight - lGCObjectOffsetTop; 
if (glGCObjectHeight > lGCWindowHeight) 
glGCObjectHeight=lGCWindowHeight 
if (glGCObjectHeight < cGCMinimumHeight)f 
glGCObjectHeight=cGCMinimumHeight; 
if (fBIDI) 
{ 
glGCObjectWidth=lGCWindowWidth+lGCObjectOffsetLeft; 
} 
else 
glGCObjectWidth=lGCWindowWidth - lGCObjectOffsetLeft; 
if (glGCObjectWidth > lGCWindowWidth) 
glGCObjectWidth=lGCWindowWidth; 
if (glGCObjectWidth < cGCMinimumWidth) 
glGCObjectWidth=cGCMinimumWidth; 
} 
}
</script>

 

Normalement, tout devrais rentré dans la normale

Voila voila, je me retourne à ma VPC et les biberons Sourire

Renaud Comte aka TheMit (le CSS et SharePoint, c’est des fois proche du S&M…)
Member of WygTeam
http://www.wygwam.com
BPOS : Utiliser l’icone New dans la CQWP aussi !!!

Nouvelle petite astuce pratique en complément de mon post sur l’icone PDF :

BPOS : utiliser l’icone PDF dans la CQWP

http://www.swat.be/Portals/0/images/ms_online_services.jpg

Merci à Benoit Hamet de me l’avoir fait remarquer rapidement :)

Pour utiliser l’icone  image dans une CQWP, il faut encore se reposer sur les méthodes du DDWRT :

IFNEW : http://msdn.microsoft.com/en-us/library/dd583143%28office.11%29.aspx#officesharepointddwrt_ifnew

 

Ainsi, en rajoutant dans l’entête de votre fichier XSL d’ItemStyle : xmlns:ddwrt=http://schemas.microsoft.com/WebParts/v2/DataView/runtime

Vous pouvez ensuite utilisez le code XSL suivant sans soucis :

<xsl:if test="ddwrt:IfNew(string(@Created))">
  <img src="/_layouts/1033/images/new.gif" alt="New" />
</xsl:if>
<xsl:if test="ddwrt:IfNew(string(@Modified))and not(ddwrt:IfNew(string(@Created)))">
  <img src="/_layouts/1033/images/new.gif" alt="Modified" />
</xsl:if>

 

Et voici le résultat :

image

 

Renaud Comte aka TheMit (J’aime les copains vraiment collaboratif !)
Member of WygTeam
http://www.wygwam.com

BPOS : utiliser l’icone PDF dans la CQWP

Une astuce pratique pour ceux qui veulent customiser à moindre cout le site SharePoint sous BPOS, sous entendu, avec la Content Query WebPart.

http://www.swat.be/Portals/0/images/ms_online_services.jpg

C’est un fait souvent ignoré mais SP online correspond plus à un MOSS Standard sans ses modèles qu’à un WSS : Tout le moteur de publishing est disponible.

Et donc, à vous les joies des gabarits, Master Pages et surtout des feuilles de styles avec la CQWP

Pour souvenir :

Cependant, sous BPOS et MOSS2007, il faut tenir compte de quelques limitations comme la possibilité de modifier les fichiers systèmes qui vous sont inaccessibles.

Comme par exemple, les icones de types de fichier.

Pas de soucis cependant, Microsoft a pensé à rajouter un icone PDF :image (Soit celui de Fox It reader , très bon lecteur PDF gratuit et léger d’ailleurs ! )

Donc rien ne vous empêche de refaire une XSL pour afficher les types de fichier, genre, les derniers documents uploadés de votre site :)

image

Mais au lieu de le nommer icpdf.gif comme tous les autre icones, il s’appelle iconPdf.gif … Soit un petit problème pour le nommage dynamique en XSL dans une CQWP.

A vrai dire, il suffit d’utiliser quelques outils de la toolbox SP comme le DataView/runtime et ses fonctions diverses et variés comme

MAPTOICON : http://msdn.microsoft.com/en-us/library/dd583143(office.11).aspx#officesharepointddwrt_maptoicon

Soit en pratique

  1. Préparer votre propre CQWP :
    • Exporter votre WebPart CQWP
    • Dupliquez les fichiers ContentMainQuery.XSL puis ItemStyle.xsl
    • Reparamétrer le tout
  2. modifiez votre .WebPart avec de nouveaux champs d’aggrégation
    • <property name="CommonViewFields" type="string">HTML_x0020_File_x0020_Type,Text;File_x0020_Type,Text</property>
  3. modifiez votre ItemStyle.xsl :
<span class="icon">
    <img src="/_layouts/images/{ddwrt:MapToIcon(string(@HTML_x005F_x0020_File_x005F_x0020_Type),string(@File_x005F_x0020_Type))}" 
alt="{@DocIcon}" style="vertical-align: middle;margin-right:4px" /> </span>

Et voila, tout simplement. Pas besoin de tester si c’est un dossier ou autre, un simple fonction fait le tout !

Renaud Comte aka TheMit (j’aime bien l’XSL mais à petite dose homéopathique)
Member of WygTeam
http://www.wygwam.com

VPC Us et claviers européens : les bons réflexes

Je suis un afficionados de la première heure des outils de virtualisation : Virtual PC, VMware, HyperV, virtual Box, VHD Boot …

Pour une raison simple : faire tourner une machine SharePoint serveur sur une configuration … mobile.

Hors une configuration virtuelle est souvent moins bien pratique qu’une installation client, c’est un fait mais est ce bien le problème ? Le but final est d’avoir une configuration la plus proche d’un serveur de production, soit celle de son client

Pour info, pas un de mes clients installe des Windows Vista ou Seven sur leur serveur de production mais plutôt des Windows 2003/2008/2008 R2 :)

Dans les soucis habituelles en virtualisation, il y a souvent celui d’arriver à se loguer sur la machine

Bien sur, vous avez lu et relu la doc de déploiement ou le readme.txt accompagnant votre VPC et impossible de passer la fenêtre de login rageant non ?

image

Mais que se passe t il ?

Simple, comme bien souvent, votre machine virtuelle a été installé par un tiers avec un clavier “non local”.

Exemple :

Ainsi, quand votre machine boot ou que vous vous connecter en RDP, elle s’appuie sur le fait initial que votre clavier est dans la même configuration que celle d’installation …

Soit

  • QWERTY pour nos amis américains

image

  • AZERTY en France

image

  • QWERTZ en Suisse romande

image 

Ce qui fait que vos login mot de passe changent forcement … le a devient q et ainsi de suite

>>> il faut donc taper le bon login correspond à l’equivalent dans votre clavier

Prenons donc un exemple simple (soit aussi un pense bête aussi pour votre serviteur) :

le mot de passe de la machine de démo Microsoft : pass@word1

qui se traduit en

  • machine US sur clavier FR: pqss2zord&
  • machine US sur clavier CH-Fr : pass(Shift-2)zord1

Tout simplement.

Ensuite, une fois authentifié, il vous suffit d’ajouter un nouveau clavier par défaut à votre configuration pour être tranquille

image image

image

ou sinon modifier la registry comme l’indique mes amis IT

http://blogs.codes-sources.com/coq/archive/2007/06/30/changer-le-layout-par-d-faut-du-clavier-sur-l-cran-de-logon.aspx

Et voila :)

Maintenant votre machine a un clavier localisé
>>> et désormais votre fenêtre de login permet aussi de changer le clavier au besoin !

Renaud Comte aka TheMit (C4est toujours un plqisir d4qider son prochqin ///)
Member of WygTeam
http://www.wygwam.com

Language Packs for SharePoint 2010 enfin disponibles

image

Enfin, nous pouvons compléter nos VPCs avec les packs de langues et utiliser SharePoint en plusieurs langues sur le même socle

 

image image

 

Soit :

 

 

Et pour les déployer : http://technet.microsoft.com/en-us/library/cc262108(office.14).aspx

 

Soit profiter des nouvelles option de multilinguisme de la version 2010 que je vais vous rappeler rapidement :

  • Définition des langues disponibles/alternatives par site
    image

 

  • Changement des libellés de l’interface à la volée (menu, navigation, barre d’outil, …)
    image  

 

  • Gestion de traduction utilisateur avec import/export (Pratique pour adapter une traduction par un tiers !!! )
    image

 

  • Entête de liste multilingue
    image

 

 

Bon téléchargement !!!

 

Renaud Comte aka TheMit (Je parle plusieurs langues facilement mais les autres me comprennent difficilement … :) )
Member of WygTeam
http://www.wygwam.com

L’Upload sous SharePoint 2007, ASMX et WCF (ainsi que la vision SharePoint 2010)

image

image

Je viens juste de finir de coder un petit sample pour aider un partenaire à connecter son application à un stockage SharePoint.

Soit un smart client sur le desktop relié à un serveur WSS pouvant uploader différents fichiers métier sur des listes appropriées.

En codant avec eux, je suis retombé sur quelques points que je pense toujours intéressant de partager, si si.

 

A) Attention aux API SharePoint 2007

Certes, le Modèle Objet SharePoint est clair et concis

L’upload se fait facilement en quelques lignes :

source : http://vspug.com/apichot/2007/05/31/sharepoint-2007-upload-a-document-with-its-meta-data/

//Use the list as a folder
SPFolder folder = _web.GetFolder(_DestFolder);
SPFileCollection files = folder.Files;
//Get the file
FileStream fStream = File.OpenRead(pdfFile);
HashTable MetaDataTable = new HashTable();
MetaDataTable.Add("nom de colonne", "valeur");

//Set the destination url for SharePoint
string url = _DestUrlPath + _DestFolder + "/" + Path.GetFileName(pdfFile);
//Add document to the list with metadata, and overwrite an existing document
with the same name
SPFile currentFile = files.Add(url, fStream, MetaDataTable, true);
fStream.Close();

Mais il a le défaut de fonctionner uniquement … en local. Soit sur une des machines de la ferme SharePoint.

Rien ne sert de recopier la Dll Microsoft.SharePoint, elle ne fonctionne QUE sur la ferme, question de backoffice ….

Dés lors pour contourner le soucis, il vous reste 2 options

Il existe une troisième option, alternative et tout aussi séduisante : créer votre propre Web Service et derrière implémenter votre code API classique.

Le seul soucis : votre code n’est plus “externe”, il dépend d’un déploiement serveur qu’un admin peut toujours contester. Mais bon, c’est une option viable surtout si l’on connait le coté verbeux et non typé de nos amis ASMX SharePoint.

>>> Quid de 2010 ?

image

Effectivement, la question est différente, SharePoint 2010 possède désormais un modèle objet SharePoint complet pour les applications distantes 

Ce qui de suite facilite grandement le code !!!
Un sample étant toujours plus parlant qu’un long discours, le voila

source issue de http://blogs.msdn.com/sridhara/archive/2010/03/12/uploading-files-using-client-object-model-in-sharepoint-2010.aspx

ClientContext context = new ClientContext("http://spdevinwin");
Web web = context.Web;   

FileCreationInformation newFile = new FileCreationInformation();   
newFile.Content = System.IO.File.ReadAllBytes(@"C:\Work\Files\17580_FAST2010_S05_Administration.pptx");
newFile.Url = "17580_FAST2010_S05_Administration 4MB file uploaded via client OM.pptx";   
List docs = web.Lists.GetByTitle("Documents");  
Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(newFile);  

context.Load(uploadFile);  
context.ExecuteQuery();  

Console.WriteLine("done");

Voir mieux encore par le HTTP DAV et le Client OM : 3 Lignes de code!!!!!

ClientContext context = new ClientContext("http://spdevinwin");  
using (FileStream fs = new FileStream(@"C:\Work\Files\17580_FAST2010_S03_Arch.pptx", FileMode.Open)) 
{
   Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, "/documents/17580_FAST2010_S03_Arch from client OM.pptx", fs, true);   
}

Bon je pense que vous sentez que j’ai déjà une petit préférence pour la nouvelle cuvée 2010 …

 

B) Rien ne vaut un bon wrapper pour ses Web Services

Certes SP2010 est plus que prometteur et RTM mais la vrai vie avec les vrais gens m’ont appris que beaucoup sont et resteront encore un bout de temps sous SharePoint 2007.

Et je les comprends ! MOSS est aussi un très bon produit, on ne peut le renier sous principe de la nouveauté !

Dés lors que faire … A vrai dire rien ne vous empêche de faire un peu de pattern genre “Facade”. Soit un sympathique wrapper cachant la complexité XML de ses Web Services et du manifest XML nécessaire au métadonnés

  • Votre code sera réutilisable aisément
  • Bien plus évolutif
  • pourra être mis à jour pour SP2010 en toute transparence.

Toujours dans le cas de l’upload, voici d’ailleurs un très bon sample d’upload avec metadata via Web Service SharePoint 2007 que je vous conseille de connaitre (et de comprendre )

http://geek.hubkey.com/2007/10/upload-file-to-sharepoint-document.html
(testé et validé dans ma propre VPC)

ce qui donne un code client :

DocLibHelper docLibHelper = new DocLibHelper();            
Dictionary<string, object> properties = new Dictionary<string, object>();            
properties.Add("Title", "Test Title");           
//Create or overwrite text file test.txt in 'Docs' document library creating folder 'Test Folder' as required.        
docLibHelper.Upload("http://localhost/Docs/Test Folder/test.txt", System.Text.Encoding.ASCII.GetBytes("Test text."), properties);

Un exemple à suivre :)

C) Les “Services references“ WCF et les ASMX de SharePoint 2007

On approche de la fin

En effet, avec VS 2008, vous avez le choix d’utiliser WCF plutôt qu’un simple proxy VS.Net sur SOAP.

image

Certes, la différence peut vous paraitre minime mais non, elle est importante !

WCF permet d’externaliser la configuration de la communication de votre code.

>>>> Finit par exemple, la gestion en dur des comptes ou du default credential par exemple et vive les .config

Dans le cas de SharePoint et ses ASMX, vous allez juste devoir rajouter dans votre application les fameux “endpoints” WCF et les “binding”.

Je ne vais pas détailler plus cette partie car cet article le fait largement mieux avec détails, sample, le tout en français SVP

SharePoint 2007 et WCF sur  Have A Nice Day.Net

Et si vous en voulez plus en anglais : http://petesullivan.spaces.live.com/blog/cns!96D0E96711D2A69E!187.entry

A noté : Si vous ne voulez pas vous embêter, il est toujours possible de passer par les références WS depuis l’interface WCF

 image

D) Vive la virtualisation pour tout tester en multiplatforme

==> Il est temps maintenant de conclure je pense, ce sujet de l’upload a été bien couvert.

Bonne réflexion et bon coding et si vous avez des questions, bien venez donc me voir aux WygDays 2010

Wygday 2010image

 

Renaud Comte aka TheMit (aie aie, les Generics sous VB.Net qd on a pas l’habitude …)
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,,
SharePoint 2010 : Limites et frontières, ce qu’il faut en retenir

image

Comme Pierre les a indiqué, les documents sur le sizing et la performance sont enfin disponibles.

  • Capacity management: software boundaries and limits
  • Performance and capacity test results and recommendations
  • Capacity management and sizing
  • Performance and capacity technical case studies

Soit un peu prés plus de 141 pages de documentation technique à analyser, pondérer …

Certes, je fait confiance à mes amis plus ITpro pour ces phases la, mais je ne peux m’empêcher de vous rapporter quelques points intéressants pris au long de ma lecture.

Surtout en ce qui concerne les “Limits & Boundaries”, aussi dit les limites et maximums de fonctionnement.

Pour ceux qui ont de la mémoire les fameux et merveilleux 2000 !!!

Bon je vous rassure de suite, la limite des 2000 n’est plus la mais d’autre notions apparaissent :

 

Il est difficile d’estimer le potentiel d’une ferme SharePoint dans le sens ou elle dépend fortement de son usage et des scenarios que l’on veut utiliser

Un Record Center (beaucoup de lecture et de fichier) est aussi différent d’un espace de collaboration (ecriture/multi edit) qu’un serveur proBI (calcul Excel services à outrance).

Ainsi, en plus de tenir compte des impacts propres de l’utilisation de la ferme, il faudra aussi jouer sur 3 notions

  • les valeurs limites (maximum imposé par le produit)
  • le seuil de fonctionnement (limite par défaut modifiable mais qui aura un impact)
  • Les limites supportés (maximum définis par test qui peuvent être dépassé mais dont les conséquences peuvent être multiples et dommageable )

La principal nouveauté de SharePoint 2010 est justement de tenir compte des seuils de fonctionnement (“Threshold”) via un système de surveillance bloquant les opérations les dépassants. Ainsi, les opérations lourdes sur des listes pourra être “maitrisé” sans avoir trop d’impact global

>>>> En résumé, il y a des domaines que vous pouvez paramétrer, d’autre que vous devez respecter et certains qu’il faudra surveiller

De plus, les notions peuvent se croiser… Si si, vous allez me comprendre:

Le volume d’une Site Collection limite quelque part le nombre de document maximum selon la taille de chaque fichier.
Une DB peut être très lourde et possédé peu de fichier : genre archive vidéo alors qu’une DB peut être légère mais avoir énormément de données (calendrier croisé de production)

En résumé, il faut savoir penser sur plusieurs dimensions à chaque fois. Je sais, ce n’est pas forcement évident mais il faut et il vas falloir le faire.

A vrai dire, il s’agit du même exercice que sous MOSS 2007 mais avec

  • d’autre limites
  • plus de scenarios métiers
  • un autre modèle applicatif

Donc pour bien commencer, prenez vite connaissance de ce document

http://technet.microsoft.com/en-us/library/cc262787(office.14).aspx

Voici un petit extrait des limites les plus marquantes (de mon point de vue personnel)

Web application Limit

Limit

Maximum value

Limit type

Notes

Content database

300 per Web application

Supported

With 300 content databases per Web application, end user operations such as navigating to the site or site collections are not affected. But admin operations such as creating a new site collection will experience performance degradation. It is also suggested to user PowerShell to manage the Web application when a significant number of Content databases is present

Zone

Five per Web application

Boundary

The number of zones defined for a farm is hard coded to 5. Zones include Default, Intranet, Extranet, Internet, and custom.

Managed path

20 per Web application

Supported

Managed paths are cached on the Web server, and CPU resources are used to process incoming requests against the managed path list. If you plan to exceed twenty managed paths in a given Web application, we recommend you test for acceptable system performance.

>>> On peut aisément répartir nos contenu sur une seul WebApp mais attention à la croissance des collections toujours mono DB

 

Content database limits

Limit

Maximum value

Limit type

Notes

Content database size

200 GB per Content database

Supported

We strongly recommended limiting the size of content databases to 200 GB to help ensure system performance.

Content database sizes up to 1 terabyte are supported only for large, single-site repositories and archives with non-collaborative I/O and usage patterns, such as Records Centers. Larger database sizes are supported for these scenarios because their I/O patterns and typical data structure formats have been designed for, and tested at, larger scales.

A site collection should not exceed 100 GB unless it is the only site collection in the database.

>>> Evidemment, SQL peut monter haut en volume mais ca dépend aussi fortement de la capacité d’optimisation/gestion de vos serveurs SQL et de leurs équipe. Et comme vous le devinez, de besoins utilisateurs attendus.

 

Site collection limits

Limit

Maximum value

Limit type

Notes

Web site

250,000 per site collection

Supported

You can create a very large total number of Web sites by nesting the subsites, For example: a shallow hierarchy with 100 sites, each with 1,000 subsites, is a total 100,000 Web sites, or a deep hierarchy with 100 sites, each 10 levels deep also containing a total of 100,000 Web sites.

The maximum recommended number of sites and subsites is 250,000 sites. Note that Web deletion can have significant impact on the Site’s availability, access to the site and subsites will be limited during the time of Web deletion. Also high concurrency of subsite creation might fail beyond a certain pace

Site Collection Size

100 GB per site collection

Supported

A site collection should not exceed 100 GB unless it is the only site collection in the database.

Certain site collection actions, such as site collection backup/restore or Move-SPSite, cause large Microsoft SQL Server® operations which can have performance impact or fail if other Site collections are active in the same database.

>>> on reste dans des domaines connus de la 2007. Toujours privilégié des DB mono collection et une hiérarchie très évasé pour répartir son contenu

 

List and library limits

The following table lists the recommended guidelines for lists and libraries. For more information, see the "Designing Large Lists and Maximizing List Performance" white paper accessible from http://technet.microsoft.com/en-us/library/ff608068(office.14).aspx.

Limit

Maximum value

Limit type

Notes

List View Threshold

5,000

Threshold

Specifies the maximum number of list or library items that a database operation, such as a query, can process at one time, outside of the daily time window set by the administrator during which queries are unrestricted.

List View Threshold size for auditors and administrators

20,000

Threshold

Specifies the maximum number of list or library items that a database operation, such as a query, can process at one time when performed by an auditor or administrator with appropriate permissions. This setting works in conjunction with Allow Object Model Override.

File size

2GB

Boundary

The default maximum file size is 50 MB. This can be increased up to 2 GB, but a large volume of very large files can impact farm’s performance

Documents

50,000,000 per library

Supported

You can create very large document libraries by nesting folders, using standard views and site hierarchy. This value may vary depending on how documents and folders are organized, and by the type and size of documents stored.

Items

tens of millions per list

Supported

You can create very large lists using standard views, site hierarchies, and metadata navigation. This value may vary depending on the number of columns in the list and the usage of the list.

List View Lookup Threshold

eight join operations per query

Threshold

Specifies the maximum number of joins allowed per query, such as those based on lookup, Person/Group, or workflow status columns. If the query uses more than eight joins, the operation is blocked. This does not apply to single item operations. When using the maximal view via the OM (by not specifying any view fields), SharePoint will return up to the first eight lookups.

Bulk operations

100 items per bulk operation

Boundary

User interface allows a maximum of 100 items to be selected for bulk operations.

>>> Clairement, les limites de stockage des listes ont été revues à la hausse !!! Ce qui impacte aussi le volume des Site Collection et des DBs, donc attention aux effets de bords d’une croissance non maitrisé. Les valeur optimales limitant les goulots d’étranglement comme celui sur les vues de listes sont la pour servir de garde fou. A vous de les mesurer et surtout d’auditer votre ferme par un bon stress test !

 

Security limits

Limit

Maximum value

Limit type

Notes

Number of SharePoint groups an User can belong to

5,000

Supported

This is not a hard limit but it is consistent with Active Directory® guidelines. There are several things that affect this number:

· The size of the user token

· The groups cache: we have a table that caches the number of groups an user belongs to as soon as those groups are user for in ACLs

· The security check time: as the number of groups a user is a member of increases, the time required for access check increase as well.

Users in a Site Collection

2 million per site collection

Supported

You can add millions of people to your Web site by using Microsoft Windows® security groups to manage security instead of using individual users. This limit is based on manageability and ease of navigation in the user interface. When you have many entries (security groups of users) in the site collection (more than one thousand), you should user PowerShell to manage users instead of the UI. This will provide a better management experience.”

Active Directory Principles/Users in a SharePoint group

5,000 per SharePoint group

Supported

SharePoint allows you add users or Active Directory groups to a SharePoint group.

Having up to 5,000 users (or Active Directory groups or users) in a SharePoint group provides acceptable performance.

The actions affected by this Limit are:
a) Fetching user to validate permissions, this operation grows incrementally with growth in number of users in a group.
b) Rendering the membership of the view will always require time.

SharePoint groups

10,000 per site collection

Supported

Beyond 10,000 groups, the time to execute operations is increased significantly especially for adding a user to an existing group, creating a new group and rendering the group views.

Security principal: size of the Security Scope

5,000 per Access Control List (ACL)

Supported

The size of the scope impacts the data used for a security check calculation. This calculation occurs each time the scope changes. There is no hard limit, but the bigger the scope is the longer the calculation takes.

>>> les données permettent vraiment d’utiliser les espaces SharePoint indépendamment de tout référentiel externe. Sous entendu, dépendre des groupes de sécurités NT de l’AD central mais attention aux soucis de gestion des droits …

Other limits

The following table lists the recommended guidelines for other objects.

 

Limit

Maximum value

Limit type

Notes

Subsite

2,000 per site view

Threshold

The interface for enumerating subsites of a given Web site does not perform well as the number of subsites surpasses 2,000. Similarly, the All Site Content page and the Tree View Control performance will degrade significantly as the number of subsites grows.

Coauthoring in Microsoft Word and Microsoft PowerPoint® for .docx, .pptx and .ppsx files

10 simultaneous editors per document

Threshold

Recommended maximum number of simultaneous editors is 10. The boundary is 99.

If there are 99 co-authors who have a single document opened for simultaneous editing, the 100th user and above will get a file in use error and have to view a read-only copy.

More than 10 co-editors will lead to a gradually degraded user experience with more conflicts and users will have to go through more iterations to get their changes to upload successfully.

>>> Ah je savais bien que notre cher 2000 n’était pas parti si précipitamment. Même si sur ce facteur (sous site), on arrive souvent à le titiller quand on jour sur de la création dynamique.

Bon, je vous passe les autres donnés plus orienté service comme la recherche, les Office Web apps ou le BCS mais pensez bien à les découvrir dans le doc de référence !!!

Certes, le sizing est une etape complexe mais les nouvelles capacités et fonctionnalités de SharePoint 2010 permet de couvrir plus d’un besoin. Il faudra juste … bien l’estimer

Renaud Comte aka TheMit (je pose 1 SPWeb et je retiens 2 SPList soit …)
Member of WygTeam
http://www.wygwam.com

Installation des Offices Web Apps : attention petite erreur de script

image

Je viens de recevoir quelques mails sur le sujet donc je remet en avant cette information.

J’ai complété hier dans la soirée mon post sur l’installation de la StandAlone de SP2010 par le déploiment aussi des Offices Web Apps comme décrit dans le MSDN

http://technet.microsoft.com/en-us/library/ff431687%28office.14%29.aspx#

La méthode est simple

  • Lancer l’install et le wizard
  • Activer les Offices Web Apps Services
  • Activer les Offices Web Apps Features

Mais ne ce qui concerne les 2 phases d’activation de services et de features, vous pouvez utiliser soit l’administration central (et la vous pouvez compter les cliques) ou sinon utilisez PowerShell et vous simplifiez la vie.

C’est la le soucis, le second script de création du Service Applicatif est erroné et porte une référence de beta … Les erreurs ca arrive.

Voici l’ensemble des scripts ainsi que la version corrigé (le second)

  • Activation des Services

$machinesToActivate = @("NomDuServeur")
$serviceInstanceNames = @("Word Viewing Service", "PowerPoint Service", "Excel Calculation Services")
foreach ($machine in $machinesToActivate)
{
  foreach ($serviceInstance in $serviceInstanceNames)
  {
     $serviceID = $(Get-SPServiceInstance | where {$_.TypeName -match $serviceInstance} | where {$_.Server -match "SPServer Name="+$machine}).ID
     Start-SPServiceInstance -Identity $serviceID
  }
}

  • Création du service applicatif et son proxy applicatif

$appPool = Get-SPServiceApplicationPool –Identity "SharePoint Web Services Default"
New-SPWordViewingServiceApplication -Name "WdView" -ApplicationPool $appPool | New-SPWordViewingServiceApplicationProxy -Name "WdProxy"
New-SPPowerPointServiceApplication -Name "PPT" -ApplicationPool $appPool | New-SPPowerPointServiceApplicationProxy -Name "PPTProxy"
New-SPExcelServiceApplication -Name "Excel" -ApplicationPool $appPool

  • Activation de la Feature sur toutes les collections

$webAppsFeatureId = $(Get-SPFeature -limit all | where {$_.displayname -eq "OfficeWebApps"}).Id
Get-SPSite -limit ALL |foreach{Enable-SPFeature $webAppsFeatureId -url $_.URL }

 

Et au final, vous pourrez ouvrir vos documents Word sans soucis en mode Web !!!

image_thumb_21EBA3A7[1]

Renaud Comte aka TheMit (J’aime les micro erreurs du MSDN en RTM) 
Member of WygTeam
http://www.wygwam.com



Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01