12 décembre 2012

SharePoint 2010 : Permission groupe AD non immédiat

Lors de l'utilisation quotidienne SharePoint 2010, vous pouvez être amené à vouloir ajouter un groupe AD dans un groupe SharePoint afin de faciliter l'administration des accès aux sites.
Si vous utilisez le mode d'authentification " Claims" sur votre Web application, vous pourrez être surpris du fait qu'un membre de votre groupe AD n'ait pas accès au site immédiatement au site, ni 1h après d'ailleurs...
 
Après quelques recherches, il s'avère que ce fonctionnement provient du "token-timout" utilisé par la méthode d'authentification "Claims".
Par défaut, cette valeur est définie à 1440 minutes (soit 24 heures)... Ce qui signifie que les modifications effectuées sur les membres d'un groupe AD ne sont pas répercutées en temps réel dans notre cher SharePoint.

 
Pour obtenir la valeur en vigueur sur votre ferme:
stsadm -o getproperty -propertyname token-timeout

Pour modifier temporairement cette valeur, vous pouvez utiliser la commande suivante:
stsadm -o setproperty -propertyname token-timeout -propertyvalue
 
 

30 novembre 2012

SHAREPOINT 2013 : Déploiement de solution

Aujourd'hui un article concernant SharePoint 2013 et une grande nouveauté concernant le déploiement des solutions.
 
A présent, SharePoint dispose de 2 répertoires dans le file system nommés "14" et "15".
  • Le répertoire "14" permettant de gérer le sites migrés en mode de compatibilité SharePoint 2010,
  • Le répertoire "15" permettant de gérer les nouveaux sites et les sites migrés en SharePoint 2013.
 
En effet, la grande nouveauté dans le déploiement est qu'un site migré peut toujours utiliser la définition 2010 puis pourra à tout moment être upgradé vers la définition 2013! Cela permet de proposer une migration rapide et transparente vers les nouvelles versions de SharePoint.
 
Par contre, il est évident que ce principe de double répertoire entraine une problématique dans le déploiement des fonctionnalités!
Il existe un nouveau paramètre : "CompatibilityLevel" (sur la commande "Install-SPSolution") permettant de préciser le mode de déploiement de la solution dans l'administration centrale:
Les valeurs possible pour ce paramètre sont les suivantes:
  • "14" : Installe la solution dans le répertoire "14" de SharePoint 2013,
  • "OldVersions" ou "Old" : Installe la solution dans le répertoire "14" de SharePoint 2013,
 
  • "15" : Installe la solution dans le répertoire "15" de SharePoint 2013,
  • "NewVersion" ou "New" : Installe la solution dans le répertoire "15" de SharePoint 2013,
 
  • "14,15" : Installe la solution dans les deux répertoires de SharePoint 2013,
  • "AllVersions" ou "All" : Installe la solution dans les deux répertoires de SharePoint 2013,
 
Il faudra donc retravailler quelques peu certains WSP afin de les adapter à leur cible!
Par exemple certains modèles de sites personnalisés devront faire partie d'un nouveau WSP dédié au répertoire 15 tandis que certaines fonctionnalités pourront être déployées dans les 2 répertoires sans ajustement.
 
Une grande attention devra être apportée à cette nouvelle méthode de compatibilité et à la méthodologie de repackaging des solutions car cette architecture sera amenée à perdurer dans les prochaines versions.

25 novembre 2012

INFOPATH : Supprimer lignes extensibles

Aujourd'hui un petit article relatif à une question récurrente sur les éléments extensibles d'InfoPath. Bien souvent, les utilisateurs ont besoin de supprimer toutes les lignes d'un tableau ou d'une section extensible.
Il n'existe aucun moyen simple de réaliser ceci en travaillant par l'interface. Par contre cela se fait assez facilement en utilisant du code managé.
 
Pour se faire, il est possible d'utiliser la procédure C# ci-dessous.
Comme son nom l'indique, cette procédure permet de supprimer tous les nœuds enfants d'un nœud spécifié en paramètre :
 
        private void RemoveAllChildren(string strNode, XPathNavigator formNavigator)
        {

            try
            {
                XPathNavigator rowsNav = formNavigator.SelectSingleNode(strNode, NamespaceManager);
                XPathNavigator lastChild = rowsNav.SelectSingleNode("child::*[position() = last()]", NamespaceManager);
                XPathNavigator firstChild = rowsNav.SelectSingleNode("child::*[position() =1]", NamespaceManager);

                if ((firstChild != null) && (lastChild != null))
                {
                    firstChild.DeleteRange(lastChild);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Une erreur est survenue lors de la fonction 'RemoveAllChildren' appliquée sur le noeud '" + strNode + "'.", ex);
            }
        }
 
 
Pour appeler cette procédure, il suffit d'utiliser le code de la manière suivante:
      RemoveAllChildren("//my:NomParentExtensible", this.Maindatesource.CreateNavigator());

5 novembre 2012

SharePoint 2013 : Cache distribué

Aujourd'hui, un nouvel article sur SharePoint 2013 et l'optimisation des ses performances sur nos machines de développement!
 
Comme cela a été évoqué dans un article précédent, la version de SharePoint Server 2013 nécessite 24 Go de RAM disponible pour un serveur en mode Standalone...

Malheureusement tout le monde n'a pas la chance de pouvoir jouer avec du SSD sur un PC portable, donc le besoin d'optimisation des performances devient vite très important.

Après l'article permettant de diminuer l'impact de la recherche sur la RAM (lire ici), nous allons à présent nous attaquer au cache distribué utilisé par SharePoint 2013. En effet, le service "Distributed cache" se situe souvent dans le haut du panier lorsque l'on cherche les services gourmands dans le gestionnaire des tâches.
Il est possible d'éteindre tout simplement ce service mais une solution plus élégante reste tout de même de le paramétrer correctement...
Il est donc possible d'influer sur la taille de ce cache distribué en suivant les actions suivantes:
  • Se connecter à l'administration centrale de votre serveur SharePoint,
  • Se placer dans la catégorie "Services sur le serveur",
  • Arrêter le service de cache distribué,
  • Lancer la commande Powershell suivante : "Update-SPDistributedCacheSize -CacheSizeInMB CacheSize", où CacheSize représente l'allocation maximale autorisée en MB (équivalent à : (RAM maximale sur la machine - 2Go) / 2).
  • Redémarrer le service de cache distribué
  
En combinant le paramétrage de la recherche rédigé dans l'article disponible ici, et ce paramétrage du cache distribué, il est possible de lancer une machine virtuelle de démonstration SharePoint Server 2013 (embarquant SQL Server 2012 et Visual Studio 2012 et Office 2013) avec seulement 5 Go de RAM.

22 octobre 2012

SharePoint 2013 : Géolocalisation

Aujourd'hui un petit article sur SharePoint 2013 et une nouveauté sympathique qui est la géolocalisation!
 
Au premier abord, il ne semble pas possible d'utiliser cette fonctionnalité car le type de colonne associé ne peut pas être créé. 
Pour réaliser notre besoin, il faudra lancer une commande PowerShell sur les sites (ou réaliser ceci par du code managé):
 
$weburl = "http://votresite"
$fieldXml = ""
$web = get-spweb $weburl
$field = $web.Fields.AddFieldAsXml($fieldXml)
$web.Update()
 
Suite au passage de ces commandes, une nouvelle colonne de site nommée 'Localisation" sera ajoutée à votre site.
Cette colonne est à présent disponible pour être utilisée. Pour cela, nous allons créer une liste personnalisée. Dans les paramètres de cette liste, il est possible de rajouter une colonne à partir d'une colonne de sites puis il faudra sélectionner la colonne "Localisation".

Vous pourrez à présent ajouter des éléments dans votre liste en utilisant la géolocalisation. Le champ nous permet de saisie la géolocalisation en utilisant les éléments suivants:
  • Position actuelle en utilisant le paramètre du navigateur.
  • Coordonnées GPS en remplissant les latitudes et longitudes.
Le rendu basique des éléments de la bibliothèque sera le suivant:
 
 
Lors du clic sur l'image globe, vous verez apparaitre une carte détaillée correspondant à la localisation renseignée. Ce composant utilise Bing Maps mais nécessite la création d'un compte d'utilisation sous peine d'avoir un joli message en plein milieu de la carte...
Pour utiliser pleinement les fonctionnalités de géolocalisation, il faudra affecter un compte Bing à votre ferme SharePoint: http://msdn.microsoft.com/en-us/library/jj163283(v=office.15).aspx
 
Il est ensuite possible de présenter la liste des points sur la même carte. Pour cela il faut créer une nouvelle vue de type "Carte" dans cette bibliothèque. Ce genre de vue a été rajouté automatiquement par SharePoint suite à l'utilisation de la colonne de type "Géolocalisation" à votre liste SharePoint.
 
Une fois cette vue de type "Carte" créée, vous pourrez présenter l'information comme vous le souhaitez. Par exemple, vous pourrez ajouter une WebPart sur la page d'accueil de votre site et avoir la présentation suivante:
 
 
 
Ceci vous permettra d'avoir une présentation centralisée des points de géolocalisation de votre liste.
Ce genre d'intégration offre de nouvelles perspectives pour les entreprises. Nous pouvons par exemple penser aux cas métiers suivants:
  • Localisation des hôtels et restaurants pour les déplacements des collaborateurs,
  • Localisation des points de ventes, d'une entreprise
  • Conception d'application métiers de détection d'évènements,
  • ...
 
Bienvenue dans votre SharePoint à la carte!