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

[AVIS] Le paradoxe SharePoint : Gouvernance or not ?

Travaillant main dans la main avec Christian Hougardy sur le sujet de la Gouvernance et ce depuis longtemps, je suis assez effaré du Buzz actuel sur la notion de gouvernance.

Si, si le terme en moins de 4 mois est devenu aussi connu dans le monde du SharePoint que Britney Spears dans le milieu People.

Mais bon, au moins, la gouvernance est un vrai sujet de valeur.

Je suis tombé sur un très bon article du

SharePoint Paradox Meets SharePoint Governance

Je reviendrai pas sur la notion de gouvernance, cet article ou ces posts de Christian couvrent très bien le sujet

Mais je veux attirer votre attention sur quelques points de la lecture de l'analyse du Paradoxe SharePoint

Actuellement, SharePoint 2007 vit un essor incroyable : la demande afflue, la confiance augmente : C'est la technologie à la mode en entreprise

On le constate aisément  :

  • Soit par les chiffres  : $1billion 100 million pour Microsoft en 1 an de license MOSS
  • Soit par le trust du sujet SharePoint dans la plupart des Évangélistes : même Guy Kawasaki y regarde de plus prés
  • Soit par la chasse MASSIVE des compétences SharePoint : bonjour les recruteurs surmotivés
  • Soit par la taille grandissante des projets SharePoint

Difficile d'expliquer un tel essort ?
>>> Pas temps que cela si on regarde certaines caractéristiques de base de SharePoint

  • Générateur d'espace au besoin
  • Des modèles prêts à l'emploi prônant la collaboration, le partage
  • l'interconnexion Office
  • Une montée en charge
  • le natif peut couvrir à froid 80% de besoin de base
  • un modèle objet complet et un système de déploiement complet
  • ...

Si ça ne s'explique pas aisément, en tout cas ça se comprend bien

Le vrai Paradoxe de SharePoint est que son pire ennemi est lui même !!!

KEZAKO

Non non, vous avez bien lu et j'assume

Je m'explique :

Depuis longtemps, j'avertie les gens sur l'aspect viral de SharePoint. Du moment que vous créez un site pour un user voir un second pour des meetings, ses collègues ne mettront pas longtemps a en voir l'intérêt et à exiger le même

Et la commence la SPandémie
>>> Vous créez de plus en plus de site, vous gérez de moins en moins et à la fin vous déléguez les droits de création à des tiers ...

Moralité, SharePoint suit une croissance organique sous contrôle du besoin des utilisateurs, souvent sans fin suite à  la disette informatique de la bubulle de l'an 2000.

En effet, SharePoint offrant une véritable liberté de création de contenu, il donne en même temps un pouvoir très dangereux qui se concrétise en

  • une jungle de site SharePoint
  • une accumulation de data parsemées
  • des moteurs de recherche débordés
  • des DB en croissance permanente  : bonjour les DBA avec 300GB dans un base
  • des KPI clairsemés
  • ...

Qui dit grand pouvoir, dit grande responsabilité

Or, avez vous déjà su convaincre un utilisateur, un IT, un DEV de suivre les formations et de bien écouter ?

C'est assez compliqué. Prenez par exemple le cas des inbox Exchange de plus de 2GB jamais classés ...

L'effet Viral de SharePoint m'amène à une sorte de "théorème" : "Quelque soit la volumétrie estimée du projet, elle sera PI fois supérieure"

Sous entendu : prévoyez un coefficient entre 3 et 4 supérieur à vos prévisions
>>> Quand les utilisateurs adhérent, ils n'en démordent pas, bien au contraire

C'est la qu'arrive les vrais soucis ...

  • Les DBs grossissent et remettent en question l'architecture de stockage
  • Difficile d'unifier une politique de catégorisation/taxonomie
    • Des bibliothèques de partout
    • Des Content types non centralisés
    • Modèles de document ?
    • Gestion des modèles ?
  • Croissance non maîtrisée

Sous entendu : bye bye l'organisation générale

Il faut donc maitriser ses processus et les règles de gestion

Soit la problématique de la gouvernance, la vraie !

Définir les tenants et aboutissants comme :

  • les responsabilités
  • la définition des modèles
  • la délégation
  • les droits et devoirs
  • la politique de croissance et de formation

Sous entendu, contrôler, gérer à la baguette tel un chef d'orchestre Allemand la vie de votre ferme SharePoint

Et là le paradoxe prend toute son ampleur !!!

  1. La force de SharePoint est de générer au besoin / la gouvernance veut les contrôler
  2. La gouvernance est surtout un recueil de processus, pas de bonne pratique

Donc, d'un coté il faut cadrer le potentiel de l' outil et en plus selon des règles de gestion

Ce qui est bien compliqué est, selon mon point de vue, si on applique une Check List à la lettre, on ne fait que contrôler que tout va bien

>>> on ne s'assure pas que la Check List soit justement au fait de vraies bonnes pratiques

En résumé, si la gouvernance définit les "What to do", il faut en parallèle gérer aussi les "How to do"

Vous voulez un exemple ?

Simple, prenons le cas de la DB

  • point de vue gouvernance : un personne est responsable de la maintenance SQL et doit assurer une SLA de 45 minutes en cas de crash
  • point de vue DBA : je ne pourrais définir une SLA que selon mon matériel et vos besoins

C'est facile de définir des SLA mais recopier 150 GB depuis une bande magnétique et la restorer en moins de 45 min ...
>>> il faut donc les machines adéquates, la compétence et valider le tout avant même de définir engagement et responsabilités

Actuellement, le soucis est de justement définir d'un coté les Best Practices SharePoint et ensuite les accorder adroitement avec son plan de Gouvernance 

Maintenant, trouver ces bonnes pratiques, suivre l'évolution de la technologie et prévoir/gérer  le fonctionnement de sa ferme est extrêmement chronophage et compliqué ...

Il est vrai qu'on trouve de plus en plus de gens qui vous diront ce qui est "bien de faire" mais peu qui vous expliquerons "comment le faire"

Tout un dilemme, un autre paradoxe !

Un dernier paradoxe pour la fin ?

Il est actuellement très difficile de mettre en place un vrai plan de gouvernance une fois les machines installées, les licences acquises et le portail ouvert aux utilisateurs. En effet, comment recadrer un processus déjà initié à postériori

Actuellement, la démarche d'auditer ses besoins, son évolution et de définir la véritable utilisation de la technologie n'est jamais synchrone avec l'achat des machines et/ou le potentiel de son réseau. Mais sans cette démarche, comment arriver à un véritable "sizing" ?

...

Mais bon, pour finir sur une note positive :

  • les bonnes pratiques existent !
  • les mauvaises aussi !!!!

Faites de bons choix et surtout soyez prudent avec la technologie SharePoint : Ce produit marche bien voir trop bien smile_wink

A bientôt

Renaud Comte aka TheMit (pour la promotion des "Bonnes Pratiques")
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,
Du workflow via SPD au workflow bien carré sous VS.Net : le principe

J'ai posté récemment sur la notion des "Custom Activity" avec SharePoint Designer (SPD). Sujet délicat car si le principe est séduisant, quelques éléments prouvent que leur utilisation à grande échelle peut être dangereuse

Dixit les Feedbacks : http://blogs.developpeur.org/themit/archive/2008/08/14/des-activit-s-m-tiers-pour-vos-workflows-sharepoint-designer-une-bonne-technique.aspx#40974 

Je n' ajouterais rien aux remarques, elle sont suffisamment claires

Une question ressort cependant : et si on réutilisait le XOML généré par SPD pour initialiser son projet VS.Net ?

Histoire d'avoir déjà une bonne base fonctionnelle prête à la customisation ?

Non ?

[Update] : suite à un commentaire avisé, j'ai volontairement changé le titre original du Post. Le développement de WF demande déja une bonne connaissance de la conception de workflow. Certes, cela semble évident mais c'est bien souvent sous estimé par nombre de développeur considérant WF ou SP comme un simple namespace de plus à connaitre. Si la transition sous VS.Net d'un WF créé sous SPD n'est clairement pas un objectif infranchissable, bien au contraire, il nécessite une véritable compétence en terme de coding SharePoint ET WF.

Genre recyclons nos bons vieux workflows SPD smile_regular

Les aficionados de ce blog se rappelleront le post sur une des sessions de la SharePoint Conference 2008 de Seattle  :

WF SPD 005 

SharePoint Conference 2008 : Porting SPD Worflow to VS.Net

Depuis l'idée a fait son chemin, la technique demande toujours un peu de doigté mais elle devient un grand classique !

A vrai dire, il s'agit surtout d' extraire le XOML et ses références pour les reprendre sous VS.Net
>>> SharePoint Designer peut même faire une partie du Job en republiant le WF sur votre disque !

image 

Ça vous parait plus compliqué ?

En pratique pas tant que cela

la preuve par 2 :

 

Bien sur, un connaissance de base de WF sous Visual Studio est un plus, mais ca, vous le saviez déja !

Bonne lecture à tous

Renaud Comte aka TheMit (SPJetLaggeur)
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,,
Des activités métiers pour vos Workflows SharePoint Designer : une bonne technique

La conception et le développement de workflow sous SharePoint peut des fois donner le sentiment d'un bon match de lutte greco romaine (j'essaye d'être en phase avec l'actualité smile_regular )

Quelque soit la difficulté des WF qui nécessite de bien comprendre la notion de custom list/form/feature et content type ainsi que les spécificités de WF, il faut accepter qu'un Workflow reste et sera toujours une véritable application métier. Pas un simple traitement de données landa.
==> il faut l'envisager dans son ensemble !

...

Mais tous les besoins de workflow ne sont pas tous complexes et fondamentales. Vous pouvez avoir besoin de traitement automatisé comme :

  • annonce des validations
  • remonté et fédération d'information
  • déploiement de document sur création
  • suivi fin des taches
  • ...
  • ...

Je dirais des workflows plus ciblés utilisateurs que méthodologies et processus entreprises. Des enchaînements plus simple et souvent changeant (disons évolutif).  Des cas ou même les utilisateurs aimeraient être plus autonomes et indépendant d'une équipe de Dev

Plutôt que sortir votre VS.Net le Nabaztag qui suit (demandé à Phil, il expliquera smile_tongue), SharePoint Designer peut très bien répondre aisément et rapidement

 Workflow Screen 1

On est d'accord mais il faut bien accepter que SPD est limité à un petit choix d'options :

  • séquentiel
  • action locale
  • paramétrage léger

Cependant, conception, réalisation et déploiement sont d'une simplicité enfantine !
>>> Un formidable générateur de XOML (XAML mais dédié WF)

Il existe une technique bien pratique et commune pour améliorer les scenarii d'utilisation de SPD avec les Worflows
>>> intégrez vos propres activités personnelles ! (ou custom activity)

Ainsi, vous avez une jolie solution :

  • la flexibilité et la simplicité de SPD
  • la puissance du .Net dans les activités

Nota bene

Pour ceux qui suivent la technologie SharePoint + Workflow, ce post n'est pas une nouveauté certes, mais ce n'est pas le cas de tous. Mais comme cette technique me semble être désormais un classique, il est bon de la faire connaître

 

Comme SPD s' appuie exclusivement sur le code déclaratif XOML pour créer ses workflows, rien ne vous empêche d' inclure dedans vos propres références à des activités "custom" !

Mieux que cela, vous pouvez aussi intégrez ces "custom activity" directement dans l'interface de création de SPD

Des lors, vous pouvez intégrer dans une simple DLL, toutes les spécificités d'action que vous avez besoin et les utilisez d'un claquement de doigt depuis un interface SPD.

Mieux que ça encore, vous pouvez créer toutes une famille d'activité réutilisable entre vos grands WF entreprise et le panel de choix de SPD. Sous entendu, mutualiser et factoriser le travail de dev jusqu'au niveau des "super utilisateurs" qui peuvent créer tout seul les workflow locaux

Pratique non ? SURE !

Si vous vous sentez de tester ASAP cette technique, voici quelques liens qui sauront vous ravir !!!

 

Allez, bon développement à tous !

Oh dernière remarque : SPD n'est pas l'alpha et l'omega du workflow
>>> Si vous commencez à avoir quelques centaines d'instance de WF via SPD, il serait peut être temps de penser à les modéliser en pur WF + SP.
(Fabrice , tu vois ce que je veux dire non ?)

Renaud Comte aka TheMit (un peu de WF de temps à autre, ça change)
Member of WygTeam
http://www.wygwam.com

Ne ratez pas la beta de Lotus & Domino 8.5

Oui, je sais, ce post est surtout un clin d'oeil vers plein de vieux amis neuroniens (il se reconnaîtront) smile_regular

Download the Lotus Notes and Domino 8.5 beta today

Il n'empêche qu'il faut savoir rester curieux !

Mine de rien, il y a du bon dans le futur Notes

  • compression documentaire avant envoi
  • gestion de la redondance des fichiers envoyés
  • Stabilité sous 64 bits
  • mappage ID Notes/secu NT
  • Web 2.0 style architecture (oui je sais, je vois pas ce que ça peut être)
  • un nouveau Web-based Lotus iNotes
  • des widgets
  • connectivité iPhone
  • support de Apple Mac OS X v10.5 Leopard et Ubuntu

Non ?

Ok, je retourne à mon SharePoint ...

Renaud Comte aka TheMit (J'aurais éssayé de changer tant pis ...)
Member of WygTeam
http://www.wygwam.com

SharePoint et le multilinguisme : Comment gérer la traduction des propriétés dans les toolbars des WebParts

Depuis longtemps, je milite pour l' utilisation systématique des fichiers de ressources dans le développement SharePoint afin de favoriser le multilinguisme !

 

Je ne suis plus tout seul, heureusement d' ailleurs, d'autre me rejoigne comme ce cher GAT (pour les frenchies, prononcer Gaetan Bouveret smile_tongue )

Preuve en est son super article sur ASP-PHP (que je ne saurais trop vous conseiller de lire, relire et surtout appliquer !)

http://www.sharepointofview.fr/gat/archive/2008/07/11/internationalisation-des-applications-sharepoint.aspx

En parcourant un peu le site de CodeProject, je suis tombé sur de bien sympathique samples, qui m'ont surtout fait réaliser un oubli cruel.

??? Comment traduire les propriétés partagés des WebPart dans la Toolpart ???

Rappel

Les propriétés des WP correspondent à des propriétés publiques qui ont été décorés avec les attributs WebBrowsable et consoeur du namespace System.ComponentModel et System.Web.UI.WebControls.WebParts

exemple :

        [WebBrowsable(true)]
        [Personalizable(PersonalizationScope.Shared)]
        [WebDisplayName("ListName")]
        [WebDescription("ListName")]
        [Category("Configuration")]
        public string ListName
        {
            get
            {
                return _listName;
            }
            set
            {
                _listName = value;
            }
        }

Il est vrai que comme ces arguments sont souvent des paramètres techniques genre : nombre de jour ou nom de la liste de référence, le développeur utilise le nom de la propriété (donc en US bien souvent)

D'ou la problématique : Comment gérer la traduction dynamique de ces attributs déclaratifs ???

Il y a une solution simple à vrai dire
>>> il suffit d'appliquer les techniques de ressources de SharePoint 2007 avec le SPUtility.GetLocalizedRessource sur une classe dérivant justement les attributs WebDisplayName,WebDescription et Category

(Vous me direz, rien de bien nouveau, il s'agit des basiques de l'héritage objet, je sais mais il fallait y penser )

En pratique, vous devez créer 3 classes dans le genre

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPCategoryAttribute : System.ComponentModel.CategoryAttribute
    {
        public SPCategoryAttribute(string attribute) : base(attribute) { }
...

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPWebDisplayNameAttribute : System.Web.UI.WebControls.WebParts.WebDisplayNameAttribute
    {
        private string _attribute;

        public SPWebDisplayNameAttribute(string attribute)


        {
            _attribute = attribute;
        }

...

    [AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
    public class SPWebDescriptionAttribute : System.Web.UI.WebControls.WebParts.WebDescriptionAttribute
    {
        private string _attribute;

        public SPWebDescriptionAttribute(string attribute)
        {
            _attribute = attribute;
        }
...

Mais plutôt que continuer avec plein de code (enfin une dizaine tout au plus), je vous conseille plutôt de profiter d'une classe de base contenant toute cette petite mécanique et pourquoi pas en profiter pour rajouter aussi un systéme de log

Non ?

Et pourquoi pas utiliser la classe de base pour WebPart fournir dans le projet SharePointOfView de Codeplex qui gére désormais toute cette problématique ?

Tout simplement. smile_nerd

A bientôt

PS : bien le bonjour à l'équipe du SOV (SharePoint Of View)  !

Renaud Comte aka TheMit (Je code donc je test, variant Dev de "Cogito ergo sum ")
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,
SharePoint et la sécurité en développement : SPRoleAssignment, SPBasePermissions et leurs amis

J'ai souvent cette question qui revient par mail, par twitter, par MSN et même dans le train (véridique, ne sortait jamais un bouquin MOSS dans le train, on ne sait jamais si on ne tombe pas sur un codeur en face de soi) : Comment personnaliser la sécurité sous SharePoint ?

clip_image002 

Bon, la question n'est point inintéressante mais un poil complexe : c'est un vaaaaste sujet vu la dimension de SharePoint

Soit :

  • les comptes de services
  • les méthodes d'accés
  • les ACL
  • Les méthodes de connexion
  • la sécurité aux objets
  • L'impersonnation
  • ...
  • ...

Difficile de tout couvrir mais pas de soucis ...

Pour les retardataires, j'avais fait une session couvrant TOUS ces sujets lors des Techdays 2008, donc, premier conseil, jetez un oeil au WebCast

[Microsoft TechDays 2008] - Manipulation et customisation de la sécurité dans Sharepoint

>>> autre session sur le monde Office & SP : http://www.microsoft.com/france/vision/mstechdays08/WebcastMSDN.aspx?EID=c73bf836-16ca-45fd-8db4-fdd637f7fbe1

Second conseil : surtout téléchargez la présentation, il y a des micros samples d'un peu près tout dedans.

Troisiéme conseil : téléchargez le set de demo de sécurité de Ted Pattison, vous aurez un lot de feature avec leur code pour monter en compétence.


Cependant, j'aimerais faire un petit Focus (salut Erwan & Jack) sur la gestion des droits et les utilisateurs. Le principe utilisé dans SharePoint est bien plus riche que l'on croit.

Il ne s'agit pas simplement de mettre des droits à des utilisateurs sur des listes, ce serait trop simple. Pour être exact, se serait trop restrictif d'où une architecture de droit plus réfléchi.

Il existe un superbe schéma qu'il est bon de connaître associé à un passionnant article dans le MSDN :

ACL et WSS

MSDN : Authorization Object Relations

Grâce à ce dessin, vous allez enfin comprendre le fonctionnement des interfaces de gestion des droits de SharePoint.

Pour résumer, les interfaces vous affichent une version tronqué de la réalité : On ajoute pas des utilisateurs à des groupes ou on leur donne des droits, pas du tout

Il faut bien discerner 4 choses :

  1. le Scope de droit
  2. les Assignations de sécurité : SPRoleAssignment
  3. les ACL SharePoint
  4. les USERS SharePoint

 

Soit en détail :

  1. On ne peut mettre des droits que sur 3 niveaux d'objets sous SharePoint 2007 : les Sites (SPWeb), les Lists (SPList), les Items (SPFolders,SPFile, SPListItem). Les 3 composantes de l'architecture logique d'une collection de site SharePoint
     
  2. Une assignation de sécurité est un couple d'information entre un USER SharePoint et un regroupement de permission (SPRoleDefinition) : on ne peut donc donner directement des droits à un utilisateur NT
     
  3. Une ACL correspond à des profils de droit voir des regroupements : SPRoleDefinition, ils servent d'abstraction. Par exemple, ce que tous les utilisateurs appellent le droit lecteur correspond sous SharePoint à un profil Lecteur dont les droits réels sont : voir les pages du site, voir les listes, voir les items de la liste.
     
  4. Un USER sous SharePoint peut exister sous plusieurs formes, on parle souvent de SPUser. Il est soit un user Landa ou un groupe d'utilisateur dans le Membership référence de votre Web Application. Je ne parle pas de NT, car SharePoint est dépendant d'un membership ASP.Net et non de l'Active Directory (Par défaut, MOSS utilise le membership NT mais ce n'est qu'une configuration pas une obligation).

    Donc, il existe des SPUsers et des SPGroups, un SPGroup contient des SPusers (qui est soit des Users NT ou des Groupes NT si vous utilisez le membership NT)
    >>> je sais, c'est un peu compliqué mais c'est la réalité !

 

Prenons un exemple réel pour mieux comprendre :

Vous voulez ajouter un utilisateur Martin comme auteur sur un site : 2 options

  • Vous ajouter Martin au SPGroup "Membres du site XXX". En effet, ce SPGroup  a été créé à l'initialisation du site et il existe une assignation de sécurité entre le profil de droit "Membre" qui contient les permissions d'ecriture/validation et ce SPGroup
     
  • Vous ajouter Martin comme SPUser  et vous créez une assignation entre ce SPuser et le profil de droit "Membre"
     

image

D'ou le fameux choix avec les radio buttons !!!

C'est plus clair non ?
>>> Vous devez certainement mieux comprendre pourquoi on retrouve toujours cet écran en gestion des droits...

En effet,  lorsque l'on gère les sécurités sous SharePoint, on ne faire que de créer, modifier, voir supprimer des Assignations de sécurités sur une liste, ou un site, ou un item. Ni plus ni moins.

smile_regular

Ainsi, pour que les utilisateurs retrouvent leurs bon vieux réflexes d'ajout de droits "comme sous les dossiers de NT", Microsoft a introduit un micro workflow d'initialisation des site.

Un site SharePoint créé donc , automatiquement, à sa génération :

  • 5 profils de droit (Lire", "Contribuer", "Accès total", "Design" et "Lecture seulement") avec les jeux de permissions idoines
  • 3 SPGroups de gestion ("Lecteur du site", "Membres du site","Propriétaires du site")
  • 3 assignations de sécurité entre les 3 précedents SPGroups et les 3 profils de droit ("Lire","Contribuer" et "Accès total")
  • Place le créateur de site en tant que membre du SPGroup "Propriétaire du site"

La suite, vous la connaissez.

Si vous recherchez encore plus d'information, voir du code pour administrer les permissions, je pense que cet article saura vous combler:

Security Programming in SharePoint 2007

  • External Security Principals and the SPUser Object
  • Adding Authenticated and External Users
  • Working with Permission Levels
  • WSS Groups
  • Identity, Elevation, and Impersonation
  • Securable Objects
  • Wrapping Up

Et même traduit en français : http://msdn.microsoft.com/fr-fr/magazine/cc163287.aspx

Mais qui as dit qu'il n'y avait rien en documentation sur SharePoint dans le MSDN
>>> Certainement pas moi !
 

Renaud Comte aka TheMit (Pour Lucas, hiphiphip  smile_nerd )
Member of WygTeam
http://www.wygwam.com
SharePoint et ses serveurs : En gouvernance, n'oubliez pas la règle des 5 neufs !!!

Bien souvent, en mode évangélisation SharePoint, je fait un petit écart sur la notion de sizing, de gestion de ferme, cluster et compagnie.

Eh oui, une architecture SharePoint peut représenter plus d'une machine, même bien bien plus.

Certes, il n'y a que 3 rôle de base entre Front End, Job et SQL mais ...

...

...

il y a aussi les notions très machine de continuité de performance, scalibilité, haute disponibilité,...

Tous ces termes bien spécifiques au monde du serveur et de la leur gestion. Des termes au centre de la problématique de la gouvernance réseau (ou "gestion du Chaos" pour les intimes)

Bon, certes, les développeurs me diront, "c'est pas notre problème, moi je code"
>>> Bon admettons, mais ceux qui évoluent (doucement) vers le monde SharePoint, savent qu'ils se doivent d'avoir une culture générale informatique un peu plus IT.

En effet, les choix de design, les méthodologies de dev peuvent influencer

Exemple : si chaque utilisateur peut stocker 2GB d'information par espace de travail et il y a 2000 utilisateurs dans le portail, on se retrouve finalement avec une collection de Sites de 4TB le tout dans une BDD de la même taille

Et la, le responsable IT et/ou le DBA  voient leurs stress tout de suite prendre 2 points au CAC40 de l'ulcère.

Pour mieux faire passer le message, et surtout bien attirer l'attention des gens sur la problématique de la gouvernance IT dans le monde SharePoint, je leur rappelle la veille règle des 5 neufs.

Vous ne connaissez pas ????

Pas de soucis, mon Christian Hougardy de collègue, lui vrai archi IT, l'a posté il y a quelques temps avec force et détails :

Gouvernance et notions de performance au sein des systèmes d’information

Pour vous la faire en plus court, la règle des 5 neufs est la pour vous aider à vous représenter ce que peut coûter une architecture système qui vous garantit la disponibilité de vos serveurs pendant, 99 , 99.9, ... , 99.9999 % du temps.

Ce qui correspond au demande type de SLA d'utilisation d'un portail. Avec cette règle, vous verrez que les gens qui vous demande un système hautement disponible vont réviser leur jugement selon leur budget et/ou leur besoin

Soit le tableau suivant : il représente le % d' indisponibilité (le dowtime) par an

image

Plus vous augmentez le nombre de 9, plus la redondance de machine, la maintenance, le suivi humain, les méthodologies, le choix hardware, deviennent importants; les coûts inhérents aussi d'ailleurs...

Soit des fermes de plus de 12 machines avec 4-5 personnes qui s'en occupent juste pour être "sur" que le système SharePoint  est UP tout les matins à 8h.

A méditer

A relire pour les détails : Gouvernance et notions de performance au sein des systèmes d’information 

Bonne surveillance active

Renaud Comte aka TheMit (SPEmpêcheur d'architecturer au calme)
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,,
SharePoint Search : un nouveau Query Analyser (et comme je les aime)

Il existait sur GotDotNet un petit outil bien pratique : Le MossQueryTool.exe écrit par Steve Peschka. Celui ci à évoluer doucement et est devenue

searchcomv2small.jpg

http://www.codeplex.com/SharePointSearchServ

Forcement, l'outil est compagnon idéal pour le développement de composant de recherche personnalisé.

Mais il reste un poil spartiate, surtout qu'il faut en plus gérer ensuite la concaténation et tout le système dynamique.

Je vous parle de tout ça car après une longue période de déplacement, mission et autre plaisir professionnel, j'ai pu me remettre un peu à mon atelier découverte préféré : sous entendu, parcourir Codeplex et découvrir, m'enroler et tester un peu tout.

Et bien, j'ai pu trouver un nouvel outil pour remplacer ce cher MossQueryTool

Le SearchCoder

 

Clairement, l'outil a été inspiré grandement par le premier mais avec une phylosophie bien plus développeur
>>> En effet, il se base sur une classe intermédiaire : MOSSSQLSearch

Le principe est de ne pas à créer une longue requête SQL en texte mais de générer un code métier qui décrit la recherche.
>>> Donc plus facile à maintenir, faire évoluer et surtout à intégrer à tout moteur dynamique. Genre formulaire avancé où l'on précise des champs optionnels de recherche comme des filtre par exemple

Bonus, on n'a pas à gérer de problème de concaténation, de typage et compagnie.

On obtient un code dans ce style :

image 

==> l'outil lui, génére tout simplement ce code au lieu du SQL ou vice et versa si besoin

Pour plus de détail, je vous renvoie sur les liens du projet

Bonne recherche/dev à tous

Renaud Comte aka TheMit (SPStarAc des nouveaux projets)
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,
Quand votre PC ne veut plus utiliser le copier coller ....

En pleine rédaction passionné et passionnante, j'ai du subir un bug mais vraiment pénible
>>> Le copier coller ne fonctionnait plus, mais plus du tout : d'ou énervement, stress et divers conséquence capillaire.

Hum hum, des lors comment reprendre mes notes ou coller mes captures d'écran de ma VPC ?

Et je ne vous parle pas du reboot de la machine pour le récupérer.

...

...

Après analyse et diverses googleries, j'ai pu identifier le fautif !
>>>Le soucis provenait d'un conflit entre la VPC et le Clipboard quand aléatoirement mais fréquemment, je prenais des captures de ma VPC

Voici les posts qui on su m'indiquer la solution

En résumé, le problème peut arriver entre le clipboard avec soit un module de terminal services et/ou les Virtual Machine Addition

Je n'ai pas trouver actuellement de correctifs (je recherche encore) mais il y a un fix rapide pour remettre en place le Clipboard

Il vous suffit de copier un bout de texte dans votre machine physique, n'importe quoi puis de la coller dans la VPC, n'importe ou MAIS via l'interface VPC et non les raccourci

Soit :

Eh la, plus de soucis smile_regular

Remarque, je n'utilise pas d'outils tiers ou exotique pour faire les captures d'écran, j'utilise le simple outil capture de Vista

Renaud Comte aka TheMit (SPecrivain 7/7)
Member of WygTeam
http://www.wygwam.com

Petit sample de binding avec les Web Services de SharePoint

En lisant, codant de petits bouts de code et validant quelques fonctionnalités avec les Web Services, je me suis rappellé le bonheur du XML de retour de ces chers ASMX : http://www.developer.com/tech/article.php/3104621

A vrai dire, il existe différentes écoles :

1) les Pro XML
>>> genre :  puriste de XPath
N'oubliez pas de rajouter les namespace SharePoint pour pouvoir faire vos requêtes

private XmlNodeList RunXPathQuery(XmlNode XmlNodeToQuery, string 
XPathQuery)
{
    // load the complete XML node and all its child nodes into a XML document
    XmlDocument Document = new XmlDocument();
    Document.LoadXml(XmlNodeToQuery.OuterXml);

    // all the possible namespaces used by SharePoint and a randomly choosen 
prefix
    const string SharePointNamespacePrefix = "sp";
    const string SharePointNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/";
    const string ListItemsNamespacePrefix = "z";
    const string ListItemsNamespaceURI = "#RowsetSchema";
    const string PictureLibrariesNamespacePrefix = "y";
    const string PictureLibrariesNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/ois/";
    const string WebPartsNamespacePrefix = "w";
    const string WebPartsNamespaceURI = 
"http://schemas.microsoft.com/WebPart/v2";
    const string DirectoryNamespacePrefix = "d";
    const string DirectoryNamespaceURI = 
"http://schemas.microsoft.com/sharepoint/soap/directory/";

    // now associate with the xmlns namespaces (part of all XML nodes returned
    // from SharePoint) a namespace prefix which we can then use in the queries
    XmlNamespaceManager NamespaceMngr = new 
XmlNamespaceManager(Document.NameTable);
    NamespaceMngr.AddNamespace(SharePointNamespacePrefix, 
SharePointNamespaceURI);
    NamespaceMngr.AddNamespace(ListItemsNamespacePrefix, 
ListItemsNamespaceURI);
    NamespaceMngr.AddNamespace(PictureLibrariesNamespacePrefix, 
PictureLibrariesNamespaceURI);
    NamespaceMngr.AddNamespace(WebPartsNamespacePrefix, WebPartsNamespaceURI);
    NamespaceMngr.AddNamespace(DirectoryNamespacePrefix, 
DirectoryNamespaceURI);

    // run the XPath query and return the result nodes
    return Document.SelectNodes(XPathQuery, NamespaceMngr);
}

http://www.csharphelp.com/archives4/archive602.html

 

2) Les PRO objet
>>> genre  : une classe typé por favor

Merci le XDS.exe et l'XMLSerialiser
http://blogs.developpeur.org/themit/archive/2005/04/15/6012.aspx

http://www.peterverster.co.uk/blog/2007/02/07/Programming+MOSS+WSS+V3+Web+Service+API+Part+1.aspx

 

3) les PRO .Net advance
>>> genre : les generics ou rien

   ListItems<MACLASSEListItem> results = null;
   XmlNode resultItems = listSvc.GetListItems(listGuid, string.Empty, null, null, string.Empty, null);
   Console.WriteLine(resultItems.OuterXml);
     
   results = ListItems<MACLASSEListItem>.FromXml(resultItems.OuterXml);
   foreach MACLASSEListItem MAC in results.RowData.ListItems)
   {...}

http://blogs.developpeur.org/themit/archive/2008/03/25/sharepoint-et-l-appel-des-web-service-pourquoi-pas-un-peu-de-generics-serialization.aspx

     

    4) Le developpeur landa
    >>> genre : je veux juster binder ma liste s i m p l e m e n t !!! (et je le comprends bien)

    Dites donc merci au DataSet et sa méthode ReadXml smile_wink

       sharepointservices.Lists sharepointLists = new sharepointservices.Lists();
       sharepointLists.Credentials = new System.Net.NetworkCredential(username, password);
    
       XmlNode node = sharepointLists.GetListItems(listname,string.Empty,null,null,string.Empty,null);
       XmlTextReader xmlTextReader = new XmlTextReader(node.OuterXml, XmlNodeType.Element, null);
    
       DataSet dataSet = new DataSet();
       dataSet.ReadXml (xmlTextReader);

    http://blogs.officezealot.com/mauro/archive/2008/05/17/21034.aspx

    5) le mix du tout
    >>> Eh oui, toutes les méthodes se valent après tout mais elles ont toutes des impactes en termes de complexité ou de charge. A vous de bien pondérer dans vos choix. (ce lien peut vous aiguiller : http://weblogs.asp.net/paulballard/archive/2005/05/08/406197.aspx)

     

    Renaud Comte aka TheMit (SPeut le plus, code le moins )
    Member of WygTeam
    http://www.wygwam.com

    Les VHDs SharePoint clés en main de Microsoft (avec VS 2005)

    Les gens les demandent souvent mais nous ne pouvons pas redistribuer nos VPCs de formation, démo ou de projet. Tel est le plan de licence de l'éditeur.

    Ce n'est pas bloquant mais un peu gênant, du moins si il y avait une alternative :

    La voici, depuis la semaine dernière, Microsoft a mis en ligne un VHD préconfiguré avec

    • Windows SharePoint Services 3.0 SP1
    • Visual Studio 2005
    • Visual Studio 2005 extensions for Windows SharePoint Services 3.0, v1.1

    Attention elles sont à durée limité : 30 September 2008

    Windows SharePoint Services 3.0 SP1 Developer Evaluation VPC Image

    Pour les curieux qui préfèrent plus s'initier à MOSS, voici sa version préconfiguré :

    Microsoft Office SharePoint Server 2007 VHD (attention, 4095.7 MB)

    Je ne saurais trop vous conseiller de rajouter aussi le SDK ainsi que le STSDEV et le WSPBuilder extensions

    De jolies machines à utiliser pour tester les nouveaux WebCast de Microsoft sur le Dev SharePoint :

    SharePoint Developer MSDN Web Cast Series

     

    Date

    Topic and Signup URL

    Presenter

    May 20th 9AM PST

    Web Parts

    Robert Bogue

    May 21st 9AM PST

    Data Lists

    Robert Bogue

    May 27th 9AM PST

    Silverlight

    Andrew Connell

    May 28th 9AM PST

    Event Handlers

    Andrew Connell

    June 3rd 9AM PST

    Page Branding

    Andrew Connell

    June 4th 9AM PST

    Workflow

    Robert Bogue

    June 10th 9AM PST

    Web Services

    Andrew Connell

    June 11th 9AM PST

    Page Navigation

    Andrew Connell

    June 17th 9AM PST

    User Management

    Robert Bogue

    June 18th 9AM PST

    Content Types

    Robert Bogue

    Bon download et bon dev

    Renaud Comte aka TheMit (SPCodeur mais sous VPC)
    Member of WygTeam
    http://www.wygwam.com

    CNN "Magic Board": Surface Like

    Lors de mon dernier voyage aux US, le Jet Lag m'a permis de profiter des News régulièrement tous les matins (plus précisément vers les 5H du matin).

    Et j'ai découvert le dernier gadget des journalistes de CNN : la Magic Board

    Surprise, ça ressemble bien à une utilisation de Microsoft Surface, non ?

    Et bien non ...

    En effet, CNN utilise la technologie de PerceptivePixel.

    Prenez donc 2 minutes et regardez un peu leur démo :

    http://link.brightcove.com/services/link/bcpid713271701/bctid709364416

    Vraiment sympathique non ?

    Renaud Comte aka TheMit (toujours aussi curieux)
    Member of WygTeam
    http://www.wygwam.com

    [Fun] : J'en ai toujours rêvé, mais il y en a UN qui l'a fait !!!

    Attention, ce post d'humour est particulièrement non politiquement correct mais tellement bon !

    Si bien souvent vous recevez des mails, des MSN, des twitters, des relances pour un coup de main sur une question de base, n'hésitez pas, renvoyer vers la meilleur URL du monde :

    http://www.justfuckinggoogleit.com/

    Bart at a blackboard with a pro-google message

    Rah lovely

    PS : cette page n'est pas un joke, il y a même une technique de renvoi vers Google smile_regular

    Genre  http://www.justfuckinggoogleit.com/search.pl?query=SharePoint+architecture+logique

    Que du bonheur

    Renaud Comte aka TheMit (SPrigolo à ces heures)
    Member of WygTeam
    http://www.wygwam.com

    GAC / Bin sous SharePoint : que faire si un dll ne charge pas ...

    Le genre de soucis vraiment pas sympathique quand vous déployez vos applications.

    Votre application sous SharePoint se met en erreur de manière épisodique car il ne trouve pas des types d'objet genre

    • "The type specified in the TypeName property of ObjectDataSource '*******' could not be found."
    • "Could not load type "******""

    Alors que 10 minutes / secondes avant, tout fonctionnait très bien

    Ou sinon, même si votre le fichier asmx de votre Web Service personnel est dans le GAC, l'appel du Web Service vous donne un beau "File not found"

    Une solution simple :

    Pensez à modifier votre Web.config afin d'ajouter vos DLL au processus de compilation de votre site

    http://msdn2.microsoft.com/fr-fr/library/bfyb45k1.aspx

    Genre

    (source http://www.sharepointblogs.com/nrdev/archive/2006/12/29/tip-dll-in-gac-but-cannot-be-accessed-through-sharepoint-site-quot-could-not-load-type-quot-try-this-fix.aspx)

    Tout simplement

    [Pour aller plus loin]

    >>> Et histoire d'avoir un Best Practice complet, pensez à rajoutez à votre solution une feature niveau WebApplication avec un receiver qui assurera la modification du Web.config (SPWebConfigModification) automatiquement. Ainsi vos installations ne seront que plus discrètes, directe et maintenable

    Genre  : How To Modify the web.config file in SharePoint using SPWebConfigModification - Mark Wagner

    Ps : Post écrit au début depuis un Airbus au dessus de l'Atlantique et fini dans un hotel de l'Aisne smile_regular

    Renaud Comte aka TheMit (SPDebug)
    Member of WygTeam
    http://www.wygwam.com

    De la maintenance de Base de données sous SharePoint

    Voici un sujet qui est vraiment d'actualité !

    En ces temps ou :

    • on annonce 100 millions de licence SharePoint vendus
    • que de plus en plus de ferme WSS et MOSS sont configurés
    • que le stockage documentaire augmente
    • que les chasseurs de têtes cherchent désormais du profil IT SharePoint

    il devient temps de parler de maintenance SQL.

    Évidemment, ce genre de post serait plus naturel si j'étais quelqu'un de plus IT/DBA comme Christian ou Fabrice, mais après quelque recherche, j'ai pu trouver un très bon document :

    Database Maintenance for Microsoft SharePoint Products and Technologies

    Je le poste car il s'agit d'un domaine que bien souvent, et malheureusement, que les intégrateurs/développeurs SharePoint ignorent ou minorent un peu trop.

    Tout le back-office de données est géré uniquement via ses bases de contenu (et sa base de config). Le Serveur SQL se doit être particulièrement suivi et optimisé.

    Ah les problèmes de place disque, d'index congestionné, de log gargantuesque, j'en passe et des meilleurs.

    Ce document la, est très bon car il provient vraiment de personne d' expérience ayant certainement vécu le pire et le meilleur sous SharePoint.

    Ainsi vous découvrirez lors de sa lecture :

    • les joies du contrôle d'intégrité avec le DBCC en ligne de commande
    • les problèmes de fragmentation des bases et sys.dm_db_index_physical_stats
      image
      • mesure de la fragmentation
      • réduction de celle ci (et le batch associé)
      • la différence entre la base et les index de celle ci
    • la différence entre la place utilisé et la place occupé : merci le Shrink
      image
    • La création d'un vrai plan de maintenance
      • Contrôle de l'intégrité des bases
      • réorganisation des indexes,
      • shrink des bases
      • et bien sur, tout nettoyer à la fin.
    • la gourmandise en performance des opérations de maintenance (n'attendez pas que votre DB fasse 500 GB pour réagir ...)
      • ne pas automatiser le Shrink : ne le faire que si besoin ! ou sous condition
      • surveiller les opérations de "mouvement" de données important sous SharePoint
        • genre déplacement/migration de collection
        • suppression de site ou de profile utilisateur

    Bonne lecture (si si vraiment, même si vous êtes un Dev, ce ne sera pas une perte de temps !!!!).

    PS : Cher IT SharePoint, n'hésitez pas à compléter avec vos liens et remarques

    Renaud Comte aka TheMit (promis je retourne au dev rapidemment !!!)
    Member of WygTeam
    http://www.wygwam.com

    Video : Office Developer Hero

    Il y a des développeurs qui recherche toute leur vie un minimum de reconnaissance.

    Mais des fois, il suffit juste d'utiliser la technologie la plus "love" heart 


    Video: ODC2008 Developer Guy

    Il faut bien sur prendre le tout au Second degrée mais si vous êtes un codeur, un pur et respectable, laissez vous allez et donnez donc une chance à la plateforme Office

    Vous risquez d'être agréablement surpris. smile_nerd

    Renaud Comte aka TheMit (critique micro cinéma)
    Member of WygTeam
    http://www.wygwam.com

    Fun & Migration : il faut savoir aller de l'avant

    -- Post semi ironique à prendre au second degrée (quoi que) --

    Rentrant du Compagny Store de Microsoft avec Fabrice Romelard (aspirant SharePoint confirmé smile_wink), nous discutions à bâton rompu de :

    • nos achats pro XBox comme
      • les jeux XBox
      • Les manettes
      • la télécommande
    • les accessoires du Zune V2
    • la problématique du changement et des migrations SharePoint

    Bien, en ouvrant le CD de la bande son original de HALO 3, je suis tombé sur une phrase d'un des terminaux Forerunn