31 janvier 2014

SharePoint 2013 : Intranet call

Un post rapide sur une nouveauté au niveau de la sécurité dans SharePoint 2013 qui peut rapidement devenir un casse-tête!

Contexte :

Sur un site SharePoint 2013, lors de l'utilisation d'un flux RSS provenant d'une autre ferme SharePoint, vous pouvez recevoir le message d'erreur suivant:

    • Version EN : "SharePoint is currently configured to block intranet calls",
    • Version FR : "SharePoint est configuré pour bloquer les appels intranet".

    L'erreur est bien explicite! De base, suite à l'installation de SharePoint 2013, il n'est pas possible de se connecter aux services fournis par une autre ferme SharePoint (quelque soit la version : 2010 ou 2013).


    Solution :

    Pour corriger ce problème, il sera nécessaire de modifier le paramétrage de votre ferme SharePoint 2013 appelante via notre ami PowerShell :

     $farm = Get-SPFarm
     $farm.Properties.DisableIntranetCalls = $false
     $farm.Properties.DisableIntranetCallsFromApps = $false
     $farm.update()



    A l'heure actuelle, cette commande n'est pas documentée sur les sites du Technet ou du MSDN. Je ne suis pas du tout emballé par ce genre de modifications de paramétrage au niveau ferme mais il semble que ce soit le seul solution à l'heure actuelle pour pouvoir appeler des services issus d'une ferme distante.

    Dommage que ce paramètre ne soit pas mis à disposition au niveau des applications web plutôt qu'en paramètre de la ferme SharePoint...

    26 janvier 2014

    SHAREPOINT 2013 : Test des bases de contenu d'une application web

    Aujourd'hui un article sur un point qui devrait être essentiel dans une gouvernance SharePoint! Il s'agit de la surveillance de la santé de votre web application à travers l'état des bases de données de contenu qui y sont rattachées.

    J'ai conçu un petit script PowerShell permettant de réaliser un "Test-SPContentDatabase" sur toutes les bases de contenu associées à votre application web. puis d'exporter le résultat vers un fichier CSV.
    Le parcours de toutes les bases n'est pas négligeable sachant que sur de grandes  fermes GED, vous pouvez atteindre rapidement une centaine de bases de contenus rattachées à une seule web application.

    Voici le script:

    $URL_WebApp="http://mawebapplicationSP";
    $CSV_SaveLocation="E:\ResultTestMaWebApp.csv";
    $DBErrors=@();
    $webApp = Get-SPWebApplication $URL_WebApp;
    Write-Host -foregroundcolor Green "WebApplication: " $webApp.Url;
    $webApp.ContentDatabases|%{
                    $contentDBName = $_.Name;
                    Write-Host -foregroundcolor Green "Parcours de la base de contenu : "$_.Name;
                    $errors = Test-SPContentDatabase -ServerInstance $_.Server  -WebApplication $webApp -Name $contentDBName;
                    if($errors)
                    {
                                   $errors|%{$_|Add-Member -membertype NoteProperty -Name "Database" -Value $contentDBName;}
                                   $DBErrors += $errors;
                    }
    }
    $DBErrors | Select-Object "Database","Category","Error","UpgradeBlocking","Message","Remedy"| Export-CSV $CSV_SaveLocation -Delimiter ";" -encoding "UTF8"


    Selon moi, pour bien faire, ce genre de script devrait être lancé tous les mois sur les environnements SharePoint. Ceci permettra de vous assurer régulièrement de ne pas avoir d'erreurs (missingsetupfile, missingfeature, missingassembly,...) liées à vos solutions SharePoint.
    Ainsi, le travail de mise à jour de votre ferme SharePoint (Cumulative Update, Public update, Service Pack) n'en sera que simplifié et permettra de gagner en sérénité.

    Note : Cet article s'applique aussi à SharePoint 2010.

    21 janvier 2014

    InfoPath : Impossible d'exècuter la requête pour le DataObject

    Lors de l'utilisation de formulaire InfoPath dans SharePoint, de nombreux utilisateurs font face au message d'erreur suivant suite à l'utilisation de connexion de données vers un site SharePoint :

    Impossible d'exécuter la requête pour le DataObject suivant : NomDataObject
    La réponse SOAP indique une erreur :
    Le serveur n'a pas reconnu la valeur de l'en-tête HTTP SOAPAction :

    http://schemas.microsoft.com/sharepoint/soap/GetObjectIdFromUrl.

    Dans 99% des cas, cela provient du fait que la version d'InfoPath utilisée n'est pas identique à la version de votre SharePoint.
    Il faudra ainsi tout d'abord vérifier que le mode de compatibilité de votre formulaire correspond. Pour cela, suivre les actions suivantes:
    1. Cliquer sur "Fichier",
    2. Cliquer sur "Options du formulaire",
    3. Cliquer sur "Compatibilité",
    4. Si vous publiez un formulaire sur SharePoint 2010, il faudra vérifier que vous n'êtes pas en mode de compatibilité "InfoPath Form Services" qui correspond à un InfoPath Forms Services pour SharePoint 2013:



    Ainsi, InfoPath va pouvoir communiquer avec les web services de SharePoint sans erreurs (pas de problème de schéma ou autre,...)
    Simple, mais cela peut éviter de sacrés nœuds au cerveau...

    8 janvier 2014

    SharePoint 2010 : Politique de rétention

    Aujourd'hui un article rapide sur les politiques de rétention dans SharePoint 2010.
    Cette fonctionnalité permet de répartir l'information (supprimer, déplacer, enlever le versioning) selon divers critères (Date de création ou de modification, Fin de publication).
     
     
    Elle permet par exemple de veiller à ce que les préconisations de Microsoft soient respectées en ce qui concerne les limitations du nombre d'éléments dans les listes et bibliothèques.
    Ceci est clairement à utiliser dans le cadre de sites comprenant des informations saisies et mises à jour régulièrement. Dans un cas concret, il sera ainsi possible de déplacer des actualités d'un site vers une liste "Actualités-Archive" en les conditionnant sur le nombre de jours, mois ou années après leur création.

    Pour activer la rétention au niveau d'une liste ou bibliothèque, il suffit de suivre les étapes suivantes:
    • Se placer sur une liste ou bibliothèque,
    • Aller dans les paramètres de celle-ci via le ruban,
    • Cliquer sur "Paramètres de la stratégie de gestion des informations",

    Note : Si vous souhaitez mettre en place une politique de rétention globale, il existe une interface au niveau de l'administration de la collection de sites nommée "Stratégie de la collection de sites".

    Par contre, dans un site de publication par défaut, il est uniquement possible de positionner cette rétention sur un type de contenu.
    Afin de pouvoir l'utiliser au niveau site ou bibliothèque/liste, il faudra activer la fonctionnalité de collection de sites nommée "Rétention basée sur des bibliothèques et des dossiers":

    Il sera à présent possible de définir une politique de rétention au niveau bibliothèque ou dossiers:


     
    Puis de créer la rétention qui convient sur ce contenu: