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

Rappel sur les licences SharePoint 2010 (on premise) : interne / externe

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.

image image 

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

image

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 Sourire

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 Sourire, 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 :

  1. La licence serveur simple associée au volume de CAL adapté au nombre de comptes identifiés
  2. 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 Sourire

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

Meilleurs Vœux et Plus pour 2012

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

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

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 Sourire

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 : ,,,,,
Plus de Messages Page suivante »


Les 10 derniers blogs postés

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le il y a 14 heures et 52 minutes

- Y'a des erreurs qui peuvent rendre le développeur violent par Aleks's Blog le 02-02-2012, 16:33

- [Hyper-V 3] Présentation des commandlets PowerShell par Blog de SPBrouillet (Pierrick BROUILLET) le 01-31-2012, 16:01

- IIS7 – Compression GZIP par Atteint de JavaScriptite Aiguë [Cyril Durand] le 01-31-2012, 15:52

- SharePoint 15 Technical Preview Managed Object Model Software Development Kit par Matthew le 01-31-2012, 12:34

- Office 15 Technical Preview - Open specification Update par Matthew le 01-31-2012, 10:14

- TFS Integration Tools – Installation par Vivien Fabing le 01-31-2012, 00:06

- Test par RonnyK le 01-30-2012, 16:56

- [SharePoint 2010] Désactiver le correcteur orthographique dans les pages d’un site de publication par Jean-Christophe Brabant le 01-30-2012, 09:30

- [SharePoint 2010] Site internet et performances : poids et nombre des ressources par Arnault Nouvel le 01-30-2012, 00:52