Pour ou contre l’utilisation du « J’aime » (ou Like) dans votre intranet.

L’arrivée des médias sociaux a popularisé le concept du J’aime sur les contenus de ses pairs, symbolisé par le désormais célèbre facebook-like_zpszniov66a-1 de Facebook.

Plusieurs de mes clients s’interrogent sur la pertinence d’introduire cette fonction dans leur intranet corporatif. Voici ce que je leur réponds.

Évaluer la pertinence

Web and HTML programming flat illustrationLa fonction J’aime a comme objectif de guider nos choix de lecture vers les contenus les plus pertinents (certains diront populaire et je ne les contredirai pas). Dans un contexte où tout le monde a le même poids éditorial, par exemple vos amis Facebook, c’est un outil utile pour trier rapidement l’information à consulter.

Le patron, ce J’aime ultime.

À partir de là, rendre disponibles les J’aime ou pas? Ça dépend dans quel contexte.

Pour tous les contenus à caractère corporatif :

  • les actualités;
  • les éléments liés aux ressources humaines (conditions de travail, rémunération, etc.);
  • les procédures et instructions de travail;

Il est inutile de permettre les J’aime, parce que ces contenus ont un poids éditorial plus important que le reste. Autrement dit, avant de publier, il y a un gestionnaire qui a exercé son J’aime et c’est le seul qui compte. Les employés n’ont pas à apprécier (ou non) ces contenus, l’organisation a déjà statué sur la pertinence de ces contenus.

Est-ce qu’on se connaît?

Pour tous les contenus de nature collaborative, c’est une autre histoire. Si vous avez un nombre restreint de contributeurs et que les membres d’une même équipe se connaissent très bien, vos utilisateurs vont déjà avoir leurs propres échelles de pertinence et vont déterminer rapidement quels auteurs sont crédibles et pertinents.

Si vos employés se connaissent peu (par exemple, une communauté de pratique répartie dans plusieurs pays), ça peut devenir intéressant pour les aider à évaluer la pertinence de tel ou tel contenu.

Ça peut également être une façon d’encourager le personnel à s’impliquer davantage dans la rédaction de contenus. Ces J’aime ont un pouvoir insoupçonnés sur l’ego et ce pouvoir ne doit pas être pris à la légère. Certains mettront beaucoup d’efforts dans l’espoir d’aller chercher l’adhésion des autres employés et ainsi une certaine popularité.

Assurez-vous toutefois que la culture de votre organisation valorise l’utilisation du temps de travail pour du partage de connaissances entre les pairs. Sinon, communiquez clairement les balises au personnel.

J’espère que ces informations vous aideront à baliser l’utilisation des J’aime dans vos intranets respectifs.

 

Advertisements

SharePoint 2016 ! Les fonctionnalités disparues

SharePoint 16 RC est maintenant disponible pour le grand public ! HouuRRA!

9cfc1fc6-5a27-4608-9e6f-5b6cab5f7132.png

Mais qu’en est-il ? Offre t-il une valeur ajoutée immédiate justifiant le remplacement de SharePoint 2013 ?!

Au cours des prochains jours je vais publier une série de billets présentant mes différents essais et les constats que j’en aurai fait.

En premier lieu, les départs … voici un sommaire des éléments retirés de cette nouvelle version

  • Version StandAlone sur une instance SQL Express.  En effet, la version complète de SQL doit être maintenant installé  .
  • SharePoint Foundation n’existe plus.
  • Forefront Identity Manager (FIM) n’est plus utilisé pour la synchronisation de l’active Directory . Le processus par défaut est l’imporation de l’Active Directory (Unidirectionnel). Microsoft Identity Manager 2016 peut être configurer pour gérer la synchronisation entre SharePoint et AD .
  • Excel Services ne fait plus parti de SharePoint. Il a été migré vers Excel Services Online et les usagers de SharePoint pourront consommer le service depuis cet endroit.
  • SharePoint Designer 2016 ne verra jamais le jour ! Designer 2013 continuera d’être supporté.
  • InfoPath 2013 sera la dernière version de Microsoft, mais sera supportée jusqu’en 2026! InfoPath Forms Services sera supporté.

Je vous laisse le temps de faire votre deuil de ces fonctionnalités disparues, dès le prochain billet nous prenons un nouveau départ avec les innovations de la version 2016 !

 

 

SharePoint 2016 : un investissement vers les solutions hybrides

Au début février, Julia White (gestionnaire principale du Office Product Management team de Microsoft) a annoncé officiellement la venue de la prochaine version de SharePoint qui portera le nom, dans une suite convenue d’appellations, de SharePoint 2016. Cette annonce met fin à beaucoup de spéculations (non fondées, vous pouvez lire mon billet à ce sujet) sur la fin de l’édition On premise de la plateforme SharePoint.

En effet, Microsoft sait très bien que plusieurs clients utilisant déjà la plateforme SharePoint ne sont pas prêts ou ne peuvent tout simplement pas migrer vers l’infonuagique pour tous les scénarios d’utilisation du produit. À travers SharePoint 2016, Microsoft vise à offrir la version la plus sécurisée, stable et fiable en tirant profit des innovations qui étaient jusqu’à maintenant limitées à la version en infonuagique, soit Office 365. Ces innovations seront soit intégrées directement au produit SharePoint On premise, soit accessibles à travers une implémentation hybride entre la version en infonuagique et la version On premise.

Quelques nouveautés sont annoncées (certaines d’entre elles sont déjà disponibles pour les clients d’Office 365). Parmi celles-ci:

  • Delve, une nouvelle façon d’exploiter les capacités de recherche de SharePoint afin de présenter l’information pertinente et d’établir des relations entre les divers contenus utiles pour un usager.
  • Une nouvelle génération de portails ready-to-go permettant aux usagers d’avoir accès à des sites riches et dynamiques qui auraient traditionnellement nécessités des efforts considérables de développement. Un exemple de ces portails est la venue des Office 365 Video qui permettent l’échange de vidéos (similaire à Youtube) dans un contexte d’entreprise.
  • L’intégration d’applications et d’outils tels que Yammer et PowerBI qui rendent l’application beaucoup plus conviviale, tant pour les usagers que pour les administrateurs.

Du côté du développement, Microsoft réaffirme son engagement envers la plateforme des Apps SharePoint, comme étant la façon de faire pour personnaliser et étendre SharePoint. Ceci rejoint l’information qui circule depuis quelque temps au niveau des Patterns and practices de Microsoft pour SharePoint.

Malgré le peu d’information disponible pour le moment, il est très intéressant – rassurant diront certains – de voir que la version 2016 de SharePoint s’en vient et d’avoir une idée de l’orientation prise par Microsoft pour son développement.

La conférence Microsoft Ignite, qui aura lieu du 4 au 8 mai 2015 à Chicago, devrait nous permettre d’en apprendre davantage sur SharePoint 2016. Comptez sur l’équipe de Metalogique pour suivre attentivement cet événement et vous en partagez les faits saillants à travers nos prochains billets.

S’organiser et s’équiper pour se transformer

Le titre de ce billet est en fait celui de la septième édition annuelle de l’étude du cabinet Français Lecko sur « L’état de l’art des réseaux sociaux d’entreprises ». Cette étude est disponible gratuitement depuis le 29 janvier dernier. Il s’agit d’en faire la demande en complétant le formulaire en ligne disponible ici.

Je ne saurais trop vous recommander sa lecture. Certes, il y a cette analyse comparée de 30 solutions du marché qui intéressera ceux qui songent à implanter dans leur organisation une telle application. Mais plus important encore sont les trois premières sections de l’étude qui portent sur:

  1. La collaboration comme pivot de la transformation numérique
  2. S’organiser pour se transformer
  3. Bâtir une offre collaborative

Une lecture attentive de ces trois chapitres s’avère riche en éclairages et réflexions, soutenues par un benchmark des pratiques d’animation auquel « 92 community managers (dont 22 de filiales internationales) ont répondu ».

Etude_Lecko_RSE_tome7_v1_100129_pdf

Il faut bien le dire, en matière d’approches collaboratives et de déploiement d’applications de support à de telles pratiques, nous sommes sérieusement en retard au Québec, si on se compare avec le Royaume-Uni ou la France, pour ne nommer que ces deux pays.

Je vous réfère, pour nourrir votre réflexion à ce sujet,  à ce billet publié récemment par Claude Malaison sur son blogueQuel sera l’avenir des entreprises québécoises en 2020? Cinq ans, ce n’est pas si long…

Pour en revenir à l’étude de Lecko, je vous propose ces extraits en guise d’apéritif:

Ne pas se tromper d’enjeu : la transformation numérique vise à faire face aux évolutions engendrées par l’ère numérique. Il ne s’agit pas tant de « numériser » son offre mais de se transformer en profondeur pour se ré-inventer et être capable d’adapter son organisation.

Changer sa culture et son organisation pour se donner les moyens de changer

Il faut rendre chacun en mesure de :

  • se remettre en cause, accepter l’idée de faire autrement demain et de devoir changer
  • être impliqué dans ces changements, comprendre dans son domaine ce qui évolue
  • réfléchir comment les évolutions créent des opportunités de mieux faire
  • permettre l’action pour tester, éprouver et développer ses initiatives

Les modes d’organisation en réseau s’imposent comme le levier de cette transformation et comme une composante des organisations cibles. Il ne s’agit pas de se transformer vers un état B, mais de se mettre durablement en mouvement.

  • Apprendre (autour d’un processus, veille, partage de pratiques)
  • Améliorer (traiter les irritants)
  • Mobiliser face à une problématique
  • S’adapter à l’environnement (sur-information et multiplicité des contacts)

L’organisation réticulaire vient s’ajouter aux organisations hiérarchiques existantes. L’objectif est de permettre aux plus motivés de s’investir au sein d’initiatives, qui pourront être ensuite intégrées dans l’entreprise ensuite.

Transformation interne : rendre l’entreprise agile et améliorer l’efficacité de son fonctionnement dans la nouvelle économie des savoirs et un écosystème en réseau.

Il s’agit d’abord de la rendre apprenante de manière plus efficace et réactive que jusqu’à alors.

Ensuite, il s’agit d’adapter les organisations encore très marquées par des silos afin d’adopter des modes d’organisation en réseau, plus collaboratifs.

Pour terminer, il s’agit de tirer partie de cette mise en réseau pour mobiliser l’intelligence collective au quotidien pour traiter des incidents, résoudre des irritants ou développer des initiatives qui pourront être les innovations de demain.

Le RSE, plateforme d’expression des usages émergents et catalyseur d’une évolution culturelle

L’organisation collaborative et sociale s’exprime sur les RSE. Le RSE devient le révélateur des synergies, des interactions entre les collaborateurs. Grâce à la plateforme, les plus impliqués peuvent prendre plus d’initiatives, fédérer autour d’eux des collaborateurs pour inventer et proposer des solutions aux irritants du quotidien jusqu’au futurs produits et services de l’entreprise.

La collaboration est une culture (pas une méthodologie) cela ne s’apprend pas, cela s’expérimente.

 Un mot en terminant sur l’analyse des 30 solutions. Les grilles d’analyse bâties par Lecko sont un modèle dans le genre. À elles seules elles valent le détour. Les organisations en quête de solutions de cette nature y trouveront des critères d’analyse d’une grande pertinence.

Certes, plusieurs solutions analysées sont peu ou pas présente de ce côté-ci de l’Atlantique. On y trouvera néanmoins quelques joueurs connus comme Confluence, Google Aps, IBM, Liferay, Office 365+Yammer et XWiki.

Cliquez ici pour demander votre exemplaire de l’étude.

Comment peut-on savoir si on collabore ou pas.

Je suis tombé sur une étude portant sur la notion de collaboration. L’auteur s’appelle Alexandre Piquet.

L’intitulé de l’œuvre est : Guide pratique du travail collaboratif : Théories, méthodes et outils au service de la collaboration

J’ai lu quelques extraits et celui qui a particulièrement attiré mon attention, et que je partage avec vous, aborde la différence entre une attitude de collaboration et celle de non collaboration.

Voici le tableau comparatif entre les deux attitudes :

Je ne collabore pas quand :

  • Je participe à un entretien, une réunion ou une rencontre ;
  • Je communique (émettre de l’information ou en recevoir), je réponds à une question qu’on me pose, je cherche des idées parce qu’on me le demande ;
  • Je manage une équipe ou un projet, j’aide les autres parce qu’on me l’a demandé ;
  • J’essaye d’obtenir le maximum de ressources de l’organisation pour réaliser mes objectifs dans de bonnes conditions.

Ces actions relèvent de la communication, du management ou de la négociation. Elles sont nécessaires et utiles, mais il ne s’agit pas de collaboration.

CollaborationJe collabore quand :

  • Je donne une information à une personne parce que je pense que cette personne a besoin de cette information alors même qu’elle ne me l’a pas demandé ;
  • Je consacre une partie de mon activité à aider les autres dans l’accomplissement de leur activité, alors même que cela ne concourt pas à l’atteinte de mes objectifs personnels. Je le fais, parce que cela contribue à la performance collective. Je le fais spontanément et non parce que j’en ai reçu l’ordre ;
  • Je cherche des idées et je les propose spontanément pour améliorer les performances de mon organisation ;
  • J’essaye de construire une relation gagnant/gagnant dans le cadre de mon activité. J’ai autant le souci de mes intérêts que de ceux des autres. Je veux gagner, je veux que l’autre gagne et que le collectif gagne : « Win Win Win » (selon l’expression de Pascal Baudry, pdt de WDHB Consulting).

Le lien vers la page du site est :
http://www.a-brest.net/IMG/pdf/Guide_pratique_du_travail_collaboratif.pdf

Pré-requis à l’implantation d’outils collaboratifs

J’ai déjà abordé le sujet et tout indique qu’il faudra le faire régulièrement pour que le message finisse par faire son chemin.

Alors, je répète (en fait, je joins ma voix à tous ceux qui l’affirment): on n’implante pas des outils collaboratifs (TI) dans une organisation afin de générer la collaboration entre les collègues ou les services. On développe d’abord une culture de collaboration, avec les ajustements de gestion requis et la reconnaissance conséquente. Ensuite, si cela s’avère utile, comprendre: si ça peut supporter, voire stimuler la collaboration, alors on cherche quelle application rencontre nos besoins et on fonce !

Chez Metalogique, c’est une chose qu’on rappelle à nos clients, chaque fois qu’il est question d’outils/d’applications de collaboration.

Comme nous travaillons régulièrement avec la plateforme SharePoint de Microsoft, je vous recommande la lecture très pertinente de ce billet: SharePoint social success starts with a collaborative culture. Les points soulevés dans ce billet sont applicables à n’importe lequel autre plateforme de collaboration.

SharePoint

Importer vos photos de profils en lot dans SharePoint 2013

ProfilSharePointVide     ftline_line_arrow_end    ProfilSharePoint

Scénario :

Vous avez un grand nombre d’employés dans votre entreprise et vous voulez leur simplifier la tâche en important leur photo de profil en lot. Vous avez au préalable obtenu leur consentement et vous êtes chargé d’effectuer cette opération!

Prérequis :

  • Vous disposez d’un environnement « On-premises » et avez accès au compte de la ferme.
  • Les noms de photos suivent la nomenclature suivante : NomDomaine_NomUtilisateur.jpg
    • Généralement ce n’est pas le cas, alors je vous suggère de les renommer avec un script PowerShell.

Solution :

  • Créer une application console nommé « ProfilUtilisateur.ImporterPhoto » en C# .Net dans un environnement SharePoint de développement.
  • Copier le code suivant dans le fichier Program.cs (Version modifié du blog « My Share Points ») :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Reflection;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Portal.WebControls;
using System.IO;
using Microsoft.Office.Server.UserProfiles;

namespace ProfilUtilisateur.ImporterPhoto
{
    /// <summary>
    /// Sources :
    /// http://lixuan0125.wordpress.com/2013/04/08/upload-user-profile-pictures-programmatically-sharepoint-2013/
    /// http://pholpar.wordpress.com/2010/03/10/how-to-upload-a-user-profile-photo-programmatically/
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Program prog = new Program();

            Console.Write(@"Profile images path (Ex : C:\photo) : ");
            string profileImagesPath = Console.ReadLine(); //E.g : "C:\\photo"

            Console.Write("MySite URL (Ex : http://monsite/) : ");
            string mySiteUrl = Console.ReadLine(); //E.g : "http://monsite/"

            prog.UploadProfileImages(profileImagesPath, mySiteUrl);
        }

        private void UploadProfileImages(string path, string urlMySite)
        {
            using (SPSite site = new SPSite(urlMySite))
            {
                SPServiceContext serverContext = SPServiceContext.GetContext(site);
                UserProfileManager userProfileManager = new UserProfileManager(serverContext);

                using (SPWeb web = site.OpenWeb())
                {
                    SPFolder subfolderForPictures = web.Folders["User Photos"].SubFolders["Images du profil"];
                    // Get all image files in a folder
			  //The name of the images folder may be different depending on the language of your SharePoint installation.

                    DirectoryInfo dir = new DirectoryInfo(path);
                    FileInfo[] Images = dir.GetFiles();
                    foreach (FileInfo img in Images)
                    {
                        string imageFilePath = path + "\\" + img.Name;

                        string fileName = Path.GetFileNameWithoutExtension(img.Name);
                        string accountName = fileName.Replace("_", "\\");

                        // if User Profile exists then upload the images
                        if (userProfileManager.UserExists(accountName))
                        {
                            UploadPhoto(accountName, imageFilePath, subfolderForPictures);
                            SetPictureUrl(accountName, subfolderForPictures, userProfileManager.GetUserProfile(accountName));
                        }
                       // else
                        //{ Console.WriteLine("User {0} does not exist.", accountName); }
                    } // end of loop
                }
            }
        } // end of function

        private void UploadPhoto(string accountName, string imageFilePath, SPFolder subfolderForPictures)
        {
            if (!File.Exists(imageFilePath) || Path.GetExtension(imageFilePath).Equals(".gif"))
            {
                Console.WriteLine("File '{0}' does not exist or has invalid extension", imageFilePath);
            }
            else
            {
                string fileNameWithoutExtension = GetFileNameFromAccountName(accountName);

                FileStream file = File.Open(imageFilePath, FileMode.Open);
                BinaryReader reader = new BinaryReader(file);

                if (subfolderForPictures != null)
                {
                    // try casting length (long) to int
                    byte[] buffer = reader.ReadBytes((int)file.Length);

                    int largeThumbnailSize = 300;
                    int mediumThumbnailSize = 72;
                    int smallThumbnailSize = 48;

                    using (MemoryStream stream = new MemoryStream(buffer))
                    {
                        using (Bitmap bitmap = new Bitmap(stream, true))
                        {
                            CreateThumbnail(bitmap, largeThumbnailSize, largeThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_LThumb.jpg");
                            CreateThumbnail(bitmap, mediumThumbnailSize, mediumThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_MThumb.jpg");
                            CreateThumbnail(bitmap, smallThumbnailSize, smallThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_SThumb.jpg");
                        }
                    }
                }
                Console.WriteLine("Uploading image '{0}' for user '{1}'", imageFilePath, accountName);
            }
        } // end of function

        /// Get sealed function to generate new thumbernails
        public SPFile CreateThumbnail(Bitmap original, int idealWidth, int idealHeight, SPFolder folder, string fileName)
        {
            SPFile file = null;

            Assembly userProfilesAssembly = typeof(UserProfile).Assembly;

            Type userProfilePhotosType = userProfilesAssembly.GetType("Microsoft.Office.Server.UserProfiles.UserProfilePhotos");
            MethodInfo[] mi_methods = userProfilePhotosType.GetMethods(BindingFlags.NonPublic | BindingFlags.Static);

            MethodInfo mi_CreateThumbnail = mi_methods[0];
            if (mi_CreateThumbnail != null)
            {
                file = (SPFile)mi_CreateThumbnail.Invoke(null, new object[] { original, idealWidth, idealHeight, folder, fileName, null });
            }

            return file;
        } // end of function

        /// Update User Profile Property
        private void SetPictureUrl(string accountName, SPFolder subfolderForPictures, UserProfile userProfile)
        {
            accountName = accountName.Replace("\\", "_");

            string account = accountName.Substring(0, accountName.IndexOf("_")) + "\\" + accountName.Substring(accountName.IndexOf("_") + 1);

            string pictureUrl = String.Format("{0}/{1}/{2}_MThumb.jpg", subfolderForPictures.ParentWeb.Site.Url, subfolderForPictures.Url, accountName);

            userProfile["PictureUrl"].Value = pictureUrl;
            userProfile.Commit();
        } // end of function

        private string GetFileNameFromAccountName(string accountName)
        {
            string result = accountName;
            string charsToReplace = @"\/:*?""<>|";
            Array.ForEach(charsToReplace.ToCharArray(), charToReplace => result = result.Replace(charToReplace, '_'));
            return result;
        }
    }
}
  • Ouvrir une fenêtre de commande DOS en tant que l’administrateur de la ferme et glisser-déplacer le fichier « ProfilUtilisateur.ImporterPhoto.exe » généré préalablement.
    • Appuyé sur la touche « Entrer »
    • Saisir le chemin du dossier contenant vos photo Ex : C:\photo
    • Saisir le chemin vers votre site MySite Ex : http://<monsite&gt;
  • Naviguer vers le dossier des photos SharePoint Ex : http://<monsite>/Users photos/ pour constater que toute les photos ont été importées et que les miniatures ont été générées avec succès.

Dans mon prochain billet nous verrons comment il est possible de synchroniser ces photos importées dans SharePoint vers Lync, l’Active directory ainsi que dans votre profil Windows!

Le code source d’origine provient du site : http://lixuan0125.wordpress.com/