SharePoint

[ITPRO] Comment aborder la collaboration : des étapes clés pour plus d’efficacité

Posted on

La collaboration en entreprise est le point névralgique de l’ensemble des échanges et ce à tous les niveaux, messagerie, documentaire, métier, IT. Cependant la mise en place de solutions nouvelles apporte son lot de changement. Nous allons expliquer quels sont les étapes clés pour améliorer et rendre plus efficace cette nouvelle collaboration.

 

Remise en question ?

Très souvent lorsque que l’on met en place ou que l’on améliore des procédés de collaboration en entreprise, un sentiment de remise en question du modèle déjà établie fait surface. Celui-ci est essentiellement guidé par les nouveautés apportées ou le manque de mise en place de processus.

Dans ce cas précis, l’informatique évolue de façon très rapide et les nouveaux usages eux aussi, c’est à la DSI de sensibiliser les utilisateurs sur le gain de productivité, de temps que peut apporter ces outils. Bon nombre d’éditeurs logiciels vous garantiront qu’une collaboration efficace vous fera gagner du temps mais qu’en est-il de sa mise en place ? La réponse par la gestion du changement.

Gestion du changement

Dans un S.I une poignée de personnes est en mesure de connaitre la plus-value de la technologie pour améliorer la collaboration, en ce sens une sensibilisation aux nouveaux usages et à la gestion du changement doit se faire. Sa mise en place est primordiale et doit impacter dans un premier temps un comité décisionnel métier, généralement des personnes clés, qui vont évangéliser les nouveaux modes et rassurer (on pèse nos mots) le business en prouvant l’impact positif des nouveaux dispositifs.

Réfractaires

Il y a aura toujours une part de réfractaires au changement, cette population est assez mineure, mais à un pouvoir de persuasion auprès des autres collaborateurs. La clé ? Les intégrer dans le processus en premier et faire en sorte de bien leur faire comprendre les enjeux de cette nouvelle stratégie.

SI 3.0

Aujourd’hui nous sommes entrés dans une ère où la collaboration a dépassé le simple cadre de l’entreprise. Cette collaboration est devenu mobile, chaque utilisateur se retrouve avec tout un tas d’outil pour pouvoir collaborer sur tous les terrains et cela sans aucunes contraintes. L’un des challenges par rapport à la mobilité est la communication en amont sur le panel d’outil mis à disposition. Depuis quelques années la collaboration devient Hybride. Pour les personnes interne à l’entreprise cela apporte son lot d’ouverture vers l’extérieur, pour les usagers externes cela amène une vue maitrisée l’ouverture qu’accorde l’entreprise, impliquant une collaboration étendue (interne/externe). Elle permet d’ouvrir les échanges et d’apporter une richesse collaborative supplémentaire.

L’on ne peut pas parler de collaboration sans mentionner « l’identité ». Ce composant intrinsèque à toute architecture, est devenu l’enjeu majeur des éditeurs. Facilité les usages de la façon de la plus souple possible visant à passer d’un contexte interne, puis externes et au final vers le Cloud. Nous parlons d’identité « cloudisé » permettant d’augmenter les connexions entre les applications d’entreprise (SAP, Box, Dropbox, Airwatch…). Il est important dans le cadre de cette mise en place, de sensibiliser et de fournir des scénarios d’usages pertinents pour l’utilisateur.

L’enjeu du S.I 3.0 est de cadrer et normer les nouveaux usages en dehors de la sphère entreprise. Compte tenu de toutes les possibilités offertes par le Cloud, des plans de communications, ateliers se doivent d’être présents.

Vision partagée

Bien souvent, la vision apportée par la DSI n’est pas en adéquation avec les nouveaux usages, compte tenu de l’évolution hyper rapide des technologies, et l’on ne peut pas du jour au lendemain changer toute son infrastructure pour des raisons de tendance technologique. C’est pourquoi il est important d’avoir une vision partagée à long terme et par étapes. Prenons le cas des identités fédérées dans une architecture hybride. Ce sujet très tendance et pousser par les éditeurs apportant de nouveaux usages et de la mobilité, n’est pas simple que cela à adresser. La raison principale est potentiellement financière (Définir des tenants cloud, une population ciblé, faire du cloud B2B ou B2C, coûts par transaction, coûts par mois ….). Dans la mesure où nous sommes capables de prouver que de nouvelles infrastructures apportent de la performance et de la richesse d’entreprise, il faut y aller par étapes et « vendre » cette nouvelle vision et la partagée auprès des collaborateurs. Il est possible en voulant bien faire que l’adhésion commune n’y soit pas…

Proactivité de l’IT / Business

L’on ne fait pas un projet IT pour de l’IT, l’on fait un projet IT pour répondre à des problématiques Métiers (Business). La collaboration est avant tout une affaire de communication. Mettre en place une infrastructure collaborative très complexe pour la beauté de son architecture est qui est sous-exploité par le métier est un échec total. La clé ? Des échanges subtils avec les personnes clés du métier doivent se faire sans quoi des frustrations et du boycott peuvent survenir.

Conclusion

Nous venons de voir que la collaboration est un enjeu sur plusieurs niveaux. Nous sommes en mesure de dire que ce qui fait la collaboration d’entreprise d’aujourd’hui est poussée et calquée sur les usages qu’on les utilisateurs en dehors de l’entreprise. Et cela est d’autant plus flagrant que les éditeurs poussent dans cette direction. Les entités métiers doivent être la première cible de la plus-value de cette nouvelle collaboration. Il est évident que l’efficacité de la collaboration passe par une communication et une sensibilisation avant, pendant et après.

Nabil BABACI

Microsoft Hybrid Architect & MVP SharePoint

Sword Group

Yammer : Développez avec Yammer c’est facile !

Posted on

Introduction

De plus en plus nous sommes confrontés à l’utilisation des RSE, et l’on ne peut pas ne pas passer outre. Aujourd’hui le message de Microsoft est très clair nous sommes dans l’air du Cloud Computing et de ce fait Yammer, plateforme de RSE, fait partie toute intégrante du nuage magique. Elle trouve sa place tout naturellement dans cet écosystème où se mêlent gestion documentaire, SharePoint et Office 365.

Comment aborder le développement ?

Yammer propose à ce jour et selon sa propre documentation, plusieurs API pouvant être exploitées assez facilement (http://developer.yammer.com/documentation/ ). Nous retrouvons ainsi dans le détail :

  • API REST
  • SDK  : JavaScript, Ruby, Python
  • SDK Mobile : IOS, Windows Phone 8
  • Widget Embarqué : HTML/JavaScript
  • OpenGraph : API centrée sur les activités liées à l’utilisateur

Vous l’aurez compris nous pouvons développer avec Yammer sur tout type de support que cela soit du Web, du client lourd, des Apps etc… les possibilités sont pluriels et les idées ne manquent, que cela soit sur des outils tiers, ex : outils d’analyse et de reporting ( GoodData Yammer Analytics) ou des outils CRM. Un APP Store Yammer est présent et vous permets de consommer des apps et/ou d’en publier

Si l’on se concentre un peu plus sur la partie REST API, nous distinguons plusieurs « end points » disponible pour les développeurs (http://developer.yammer.com/restapi ) :

  • Messages
  • Users
  • Groups
  • Search
  • Activities
  • Autocomplete
  • Invitations
  • Suggestions
  • Networks

Plus concrètement, cette api se manipule uniquement en HTTPS et vous donnent des réponses JSON.

Quant aux opérations fournit, uniquement du GET, POST et DELETE.

Quand est-il du modèle d’authentification ?

Le modèle d’authentification est basé sur OAuth 2.0, apportant une simplicité d’opération et d’implémentation sur tout type de support client. Lorsque l’on développe des Yammer Apps toute application est composée d’un identifiant applicatif publique et d’un identifiant privé (secret).

Deux types d’authentifications existent l’un pour application serveur (Server Side Authentication Flow) :

  Etapes Requêtes
1 Demande d’authentification depuis une application server (client id, url de l’app) https://www.yammer.com/dialog/oauth?client_id=%5B:client_id%5D&redirect_uri=%5B:redirect_uri%5D
2 Une redirection vers une autorisation de l’application est demandée http://%5B:redirect_uri%5D?code=%5B:code%5D
3 Demande d’authentification depuis une application server (client id, code secret de l’app et code de l’app) https://www.yammer.com/oauth2/access_token.json?client_id=%5B:client_id%5D&client_secret=%5B:client_secret%5D&code=%5B:code%5D
3 Un token (Bearer) est fourni afin d’accéder à une requête émise GET /api/v1/messages/following.json HTTP/1.1Host: http://www.yammer.comAuthorization: Bearer abcDefGhi
4 Résultat de la requête en JSON {“type”:”user”,”id”:1534234,”network_id”:464564,”state”:”active” …….

 

L’autre authentification cliente (Client-Side Flow) :

 

  Etapes Requêtes
1 Demande d’authentification depuis une application cliente (un ID Client est fourni et l’url de l’app) https://www.yammer.com/dialog/oauth?client_id=%5B:client_id%5D&redirect_uri=%5B:redirect_uri%5D&response_type=token
2 Redirection automatique vers l’application par le navigateur, avec le token fourni. http://%5B:redirect_uri%5D#access_token=%5B:access_token%5D
3 Résultat de la requête en JSON {“type”:”user”,”id”:1534234,”network_id”:464564,”state”:”active” …….

 

Quels outils dois-je utiliser pour gagner du temps ?

Il est vrai que compte tenu de la multiplicité des « endpoints », le résultat des objets envoyés par les requêtes sont assez complexes et les « parser » toutes un à un prendrait du temps. Si vous faites du C# des outils comme JSON C# Class generator sur CodePlex (https://jsonclassgenerator.codeplex.com ) ou encore un outil online tel http://json2csharp.com peuvent vous faire gagner un temps précieux. Des outils comme RestSharp (http://restsharp.org ) peuvent vous aider dans le fait d’avoir une API purement cliente. Et sans oublier Fiddler (http://www.telerik.com/fiddler) pour débugger vos applications le plus finement possible.

 

Où puis-je trouver des exemples ?

Sans conteste la première source d’exemple est la plateforme GITHUB. Elle offre pléthore  d’implémentations des API Yammer et ce dans plusieurs langages ainsi vous pouvez trouver des « Wrapper » pour Ruby, JS, ou C#… (https://github.com/search?q=yammer )

Plus simplement un projet sur CodePlex, s’intitulant Yammer.SimpleAPI, est un simple « wrapper » pour C# et son utilisation est assez simple (http://yammersimpleapi.codeplex.com ).

 

Un petit exemple pour la route

Ici nous utilisons une bibliothèque graphique JavaScript du nom de Infovis Toolkit (http://philogb.github.io/jit ) permettant d’avoir une vue « Graphe » de nos objets. La librairie utilisée est la suivante (http://philogb.github.io/jit/static/v20/Jit/Examples/ForceDirected/example1.html ) cela vous donnera une bonne base de départ. Dans notre exemple il me suffit d’implémenter simplement comme dans les exemples fournis dans la documentation Yammer et après avoir créé et déclaré une application, les fichiers JavaScript Yammer, implémenter les méthodes «  yam.config » avec les identifiants applicatifs, appeler la méthode « yam.getLoginStatus » comme par exemple :

 

yam.config({
    appId: "APP ID"
});

yam.getLoginStatus(
function(response) {

    if (response.authResponse) {

        var finalObject;

        yam.request({

            url: "https://www.yammer.com/api/v1/users/current.json",

            method: "GET",

            dataType: "json",

            success: function(data) {

                init(data);
                //Appel de notre fonction Graph
                },

            error: function(xhr2, status2) {

                alert(xhr2.status);

            }

        });

    }
 else {

        alert("not logged in")

        }

}
);

 

Une fois que l’on a choisi quel « endpoint » nous voulons requêter, ici les données relatives à l’utilisateur courant, nous pouvons travailler avec les données JSON et les transmettre assez simplement dans notre librairie. Téléchargez l’exemple 1 et rendez-vous directement dans la fonction « init » du fichier « example1.js ».

Voici ce que nous faisons, nous récupérons les données courantes de l’utilisateur ainsi que des préférences et nous les mettons sous formes d’adjacences  dont le point de départ est l’utilisateur courant, ce qui nous donne :

 

function init(paramdata) {

    // init data

    var adj = [];

    for (var i = 0; i < paramdata.web_preferences.home_tabs.length; i++)

    {

        adj.push(paramdata.web_preferences.home_tabs[i].name);

    }

    var json = [

        {

            //root

            id: paramdata["id"],

            name: paramdata["first_name"],

            data: {

                "$color": "#557EAA",

                "$type": "image",

                "$url": paramdata["mugshot_url"]

            },

            //dépendences

            "adjacencies": adj

        }
    ];

    // suite du code

}

Par défaut le code fourni par cette librairie de prend pas en charge les images ! Si vous observez bien nous avons défini un nouveau type «  Image ». Voici l’extension de paramètre pour cette librairie, celui-ci est à mettre en dehors de la fonction « init »

$jit.ForceDirected.Plot.NodeTypes.implement({

    'image': {

        'render': function (node, canvas) {

            var ctx = canvas.getCtx();

            var pos = node.pos.getc(true);

            if (node.getData('image') != 0) {

                var img = node.getData('image');

                ctx.drawImage(img, pos.x - 15, pos.y - 15);

            }

        },

        'contains': function (node, pos) {

            var npos = node.pos.getc(true);

            dim = node.getData('dim');

            return this.nodeHelper.circle.contains(npos, pos, dim);

        }

    }

});

Tout cela nous donne le résultat suivant :

Graph

Conclusion

Nous pouvons faire pléthore de chose avec l’API Yammer, cet article n’est que purement introductif sur les possiblités offertes. Ajoutons que l’exploitation de cette donnée est très rapide ce qui permet d’avoir des résultats assez prometteurs et dans un laps de temps très courts. Avis au amateurs de développement mobiles qui souhaitent se lancer dans des applications révolutionnaires !