Affichage des articles dont le libellé est SharePoint 2013. Afficher tous les articles
Affichage des articles dont le libellé est SharePoint 2013. Afficher tous les articles

30 novembre 2015

SHAREPOINT 2013 : Installation sous Windows Server 2012 R2

Lors de l'installation de SharePoint 2013 sous WS2012R2, vous pouvez rencontrez des soucis dans la phase d'installation des prérequis:
"The tool was unable to install Application Server Role, Web Server (IIS) Role"
 
Cette erreur survient avec ou sans l'utilisation de l'AutoSPInstaller.
Après quelques recherches, il s'avère que ce problème est plutôt fréquent. Un article a même été mis à disposition par Microsoft:
https://support.microsoft.com/en-us/kb/2765260
 
La première erreur peut survenir du faire que vous ne possèdez pas le fichier "ServerManagerCmd.exe" sur le serveur. Il ne s'agit que d'une copie de l'exécutable "ServerManager.exe".
Pour se faire, vous pouvez lancer la commande PowerShell suivante:

Import-Module ServerManager
Copy-Item -Path "$($ENV:SystemRoot)\System32\ServerManager.exe" -Destination "$($ENV:SystemRoot)\System32\ServerManagerCmd.exe" -Force


Si le problème persiste, vous pourrez activez manuellement les fonctionnalités nécessaires "Application Server" et "Web Server" via PowerShell:

Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45
Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer, `
 Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing, `
    Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext, `
    Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor, `
    Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering, `
    Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression, `
    Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server, `
    AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation, `
    AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model, `
    WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation, `
    Server-Media-Foundation,Xps-Viewer

Il sera ensuite nécessaire de redémarrer le serveur et le tour est joué.

26 novembre 2015

SHAREPOINT : Repackager un WSP manuellement

Le développement dans SHAREPOINT s'articule autour du déploiement de WSP:
  • Conception de solutions plus ou moins complexes de type ferme ou Sandbox (WebParts, modèles de sites, timer jobs, types de contenus, pages applicatives métiers),
  • Enregistrement de sites en tant que modèle (fonctionnalité offerte nativement par SharePoint qui se déploie en tant que Sandbox).
 
Dans chacun de ces cas, il peut-être demandé de réaliser des modifications sur des WSP en production alors que les sources ne sont plus disponibles (si si, cela arrive...).
Si la modification est minime (pas de DLL à modifier), plutôt que de faire du retro engeneering, il peut-être avantageux de simplement modifier un fichier dans le WSP.
 
Pour se faire, il faut tout d'abord comprendre l'architecture qu'un WSP. Il ne s'agit ni plus ni moins qu'un fichier CAB (ou archive) renommé en WSP. Il est donc possible d'extraire le contenu d'un WSP dans un répertoire après l'avoir renommé en CAB ou RAR puis l'avoir décompressé.
 
Vous accédez donc à présent à l'ensemble des fonctionnalités comprises dans votre WSP et vous pouvez réaliser les modifications apportées. Mais comment reconcevoir le package une fois modifiée? Ce qui ont travaillé avec des archives CAB connaissent l'outil "MAKECAB" mais il est facile de se retrouver avec un package incorrect.
 
Pour se faire, SharePoint intégre une méthode qui peut être appelée via le PowerShell pour SharePoint (il faudra être positionné sur un serveur SharePoint):
 
$destWSPfilename = "C:\TEMP\Repackage\MonNomdeWSP.wsp"
$sourceSolutionDir = [System.IO.DirectoryInfo]"C:\TEMP\Repackage\MonArchiveExtraite"
 
$a = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$ctor = $a.GetType("Microsoft.SharePoint.Utilities.Cab.CabinetInfo").GetConstructors("Instance, NonPublic")[0]
$cabInf = $ctor.Invoke($destWSPfilename);
$mi = $cabInf.GetType().GetMethods("NonPublic, Instance, DeclaredOnly")
$mi2 = $null
foreach( $m in $mi ) {
    if( $m.Name -eq "CompressDirectory" -and $m.GetParameters().Length -eq 4 ) {
        $mi2 = $m;
        break;
    };
}
$mi2.Invoke($cabInf, @( $sourceSolutionDir.FullName, $true, -1,$null ));
 
Il faudra donc uniquement modifier les 2 variables $destWSPFileName (correspondant à l'emplacement de regénrération de votre WSP) et $sourceSolutionDir (correspondant à votre répertoire contenant les fichiers extraits du WSP).
 
Et le tour est joué, vous obtenez un magnifique WSP prêt à être déployé!
 

7 septembre 2015

SharePoint 2013 : Cache de sortie

Un des axes d'amélioration des performances de SharePoint reste l'utilisation de mécanismes de cache. Outre le cache pouvant être mis en place sur les développements (côté client ou serveur), il existe un mécanisme natif de SharePoint nommé "Output Cache" (ou cache de sortie en bon français).
Pour l'activer, il sera tout d'abord nécessaire de l'activer au niveau du web.config de chaque application web concernée. Pour cela, se positionner sur le tag nommé "BlobCache" dans le fichier de configuration. Il faudra préciser l'attribut "Enabled=True" et spécifier les types de fichiers pouvant être mis en cache localement sur le serveur.
 
Par la suite, il est possible de le configurer au niveau du Back-Office de votre site SharePoint en se positionnant sur "Configure output cache settings".
Il est de même possible de réaliser ceci par modèle objet SharePoint si vous souhaitez l'activer lors du provisioning de votre site.
Pour se faire, il faudra utiliser le code managé suivant:
 
// Enable output cache
 SiteCacheSettingsWriter cacheSettingsWriter = new SiteCacheSettingsWriter(site);
 cacheSettingsWriter.EnableCache = true;
 // Set Public internet (purely anonymous) for anonymous page
 cacheSettingsWriter.SetAnonymousPageCacheProfileId(site, 2);
 // Set profile Intranet (collaboration site) for authenticated page
 cacheSettingsWriter.SetAuthenticatedPageCacheProfileId(site, 4);
 cacheSettingsWriter.Update();
 
A présent, votre cache est à présent activé et vous pourrez noter l'amélioration des performances sur votre site SharePoint:

 

10 août 2015

SHAREPOINT 2013 : Contrôle des développements

 
L'utilisation massive de SharePoint dans les entreprises impose aux sociétés de s'assurer de la bonne santé de leur environnement SharePoint 2013.
Cela commence par une infrastructure qui tient la route, une topologie adaptée mais aussi et surtout par un contrôle des développements réalisés.
 
En effet 90% des dégradations des performances sur des environnements SharePoint proviennent de développements ne respectant pas les guidelines et bonnes pratiques de Microsoft (objets SP non disposés, requêtes CAML sans RowLimit,...).

Après l'essai de divers outils du marché, il me semble que l'outil "SPCAF" (SharePoint Code Analysis Framework) est parfaitement adapté à ce genre de besoins. Le site de l'éditeur est disponible à l'adresse suivante : http://www.spcaf.com/
 
Cet outil se décompose en 2 axes principaux :
  • Une application cliente permettant d'inspecter un WSP. Cette partie est plutôt orienté chef de projet avant livraison ou client final,
  • Un add-in pour Visual Studio permettant de contrôler le code tout au long de la phase de conception de la solution VS. Cette partie est donc plutôt orientée développeur SP.
 
Les contrôles de qualité sont réalisés selon diverses catégories :  bonnes pratiques, sécurité, design, déploiement, ressources, interface utilisateur. Les règles sont prédéfinies mais peuvent être étendues si besoin. Après utilisation, je peux vous assurer que les règles natives sont très largement suffisantes!
Chacun des éléments remontés par l'analyse sont classés selon leur criticité : critique, sévérité haute, sévérité moyenne, sévérité faible.
 
Pour compléter le tout, ce produit permet aussi de générer:
  • des métriques de code (XML, ASPX, HTML, CSS, JS),
  • des inventaires (champs, types de contenus, définitions de listes, WebParts),
 
Il est très rare de faire de la promotion pour des outils commerciaux mais la qualité de ce produit en fait un élément incontournable dans la trousse à outils SharePoint!

15 juillet 2015

SHAREPOINT 2013 : Work management service

 
Aujourd'hui un article sur un service applicatif souvent méconnu dans SharePoint : "Work management service". Ce service a fait son apparition dans la version SP2013 et répond à un problème souvent rencontré par les utilisateurs de SharePoint : Comment centraliser les tâches d'un utilisateur dans un seul espace!

Dans les versions précédentes du produit, certains éditeurs s'étaient engoufrés dans le besoin afin de répondre au besoin. Pour combler le manque de solution natives, Microsoft à mis au point ce service qui s'appuie nativement sur des tâches de type:
  • SharePoint : Tâches associées aux types de contenus "TasksWithTimelineAndHierarchy", "Task", "GanttTasks",
  • Project server (si installé et configuré),
  • Exchange server (uniquement pour SharePoint Server).
  • Custom provider : Il est en effet possible d'étendre les capacités de ce service en connectant d'autres systèmes de tâches (tâches TFS,...) via un custom provider.
 
Le principe de fonctionnement du service pour les tâches de type SharePoint est le suivant:
  • Un élément est rajouté dans une liste de tâche SharePoint 2013,
  • Le moteur de recherche indexe le contenu de ma web application (dont ma tâche),
  • Lorsque du rafraichissement de la liste des tâches du site personnel, une interrogation au moteur de recherche permet d'agréger la liste des tâches personnelles de l'utilisateur saisies à cet emplacement avec la liste des tâches disponibles sur les différents environnements (certaines informations telles que les projets sont conservées en cache). Les tâches seront groupées par projet afin d'obtenir une information de qualité.
  • Des notifications d'affectation de tâches apparaissent pour avertir l'utilisateur.
 

7 juillet 2015

SHAREPOINT 2013 : Test-SPContentDatabase

Un axe de gouvernance des fermes SharePoint reste la vérification de vos sources de contenus.
Pour se faire, il existe la commande "Test-SPContentDatabase" qui est souvent utilisée dans le cas des migrations avant de lancer un "Mount" de cette base.
Dans le cadre de migration, elle permet de détecter les différence de configuration entre vos fermes sources et de destinations et permet de s'assurer qu'aucune personnalisation ne soit oubliée:
  • Missing Assembly,
  • Missing SetupFile,
  • Missing Feature,
  • Missing WebPart,
  • Claims configuration,

Mais cette commande peut très bien être utilisée en dehors d'un scénario de migration afin de vérifier l'intégrité de vos bases SharePoint. Il peut devenir un outil de gouvernance révélateur de la bonne santé de vos bases de données de contenus.
 
Voici un petit script PowerShell permettant de scruter la totalité des bases de contenus de votre ferme SharePoint (avec enregistrement des résultats dans un fichier CSV par base):
 
 
Add-PSSnapin Microsoft.SharePoint.PowerShell
$SaveFolder = "C:\TEMP\"
Foreach ($DBContent in Get-SPContentDatabase)
{
 Write-Host "Testing Web Application -" $DBContent.WebApplication.DisplayName -ForegroundColor Green ;
 Test-SPContentDatabase -Name $DBContent.Name -WebApplication $DBContent.WebApplication.Url -ServerInstance $DBContent.Server | ConvertTo-Csv | Out-File -Encoding default -FilePath $($SaveFolder + $DBContent.Name + ".csv")
}

3 juin 2015

SHAREPOINT 2013 : The Managed Metadata Service or Connection is currently not available

Lors de l'administration de vos fermes SharePoint, il peut arriver de rencontrer cette erreur sur le service de métadonnées gérées (qui fonctionnait parfaitement la veille).
 
 
L'erreur disponible dans les logs ULS n'est généralement pas très parlante:
Failed to get term store for proxy ‘Managed Metadata Service’. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
 
Après les vérifications d'usage, il est possible de réaliser les étapes suivantes pour essayer de corriger le dysfonctionnement:
  • Redémarrer le service métadonnées géréees sur la ferme (depuis "manage services on server"),
  • Vérifier que les autorisations et permissions sont correctement positionnées sur le service de métadonnées.
 
Si cela ne fonctionne pas suite à ces modifications, il est possible de réaliser la modification suivante pour remettre le service en état actif:
  • Cliquer sur "Propriétés" sur le service de métadonnées gérées (depuis "Manage service applications"),
  • Modifier le nom de la base de données associée au service, ainsi une nouvelle base de données sera créée sur le serveur (par exemple "SP13_MMS_TEMP"),
  • Suite à cette manipulation, vérifier que le service s'ouvre correctement (il n'affichera pas de données car la base créée précédemment est vierge),
  • Repositionner l'ancien nom de la base de données de métadonnées (avant le renommage en "SP13_MMS_TEMP"),
  • Vérifier que votre service de métadonnées gérées est à présent opérationnel.
 


 
 

26 mai 2015

SHAREPOINT 2013 : Filtrer une vue par format date et heure

Aujourd'hui, un retour sur un besoin simple : Comment filtrer une vue SharePoint selon un format date/heure?
Nativement, via l'interface de conception de vue SharePoint, il n'est pas possible de filtrer sur autre chose qu'une date (le format heure n'est pas pris en compte et vous empêchera de valider vote filtre : "Le format de date de la valeur de filtre n'est pas pris en charge").
 
Pour réaliser ce besoin, il sera nécessaire d'utiliser du PowerShell afin de modifier la requête CAML permettant de filtrer la vue. La solution réside dans l'utilisation de l'attribut "IncludeTimeValue" qui permet d'utiliser des filtres sur les dates et heures:
 
$web = get-spweb "http://spdemolab/"
$list = $web.Lists["ListeAModifier"]
$view = $list.Views["Tous les éléments"]
$view.Query = "2015-05-22T19:40:00Z"
$view.Update()
$web.Dispose()
 
 
Le principe est donc une modification de la vue via son attribut "Query" puis une mise à jour de celles-ci.

5 mai 2015

SHAREPOINT 2013 : Supprimer les pages systèmes des résultats de recherche

Une remarque récurrente des clients lors de l'utilisation du moteur de recherche SharePoint par les clients est la remontée des pages systèmes dans les résultats.
Nous pouvons citer par exemple les pages allitems.aspx (associées aux vues), les "thumbnail.aspx" (pour les images), les pages situées dans le répertoire forms (excepté le dispform.aspx).
 
Pour supprimer ces résultats, il existe deux façons:
  • Vue une crawl rule (Règle d'analyse) dans le moteur de recherche de l'administration centrale. Dans "Chemin", entrer la valeur http://*/allitems.aspx puis sélectionner exclure dans la "analyser la configuration" associée:

    En utilisant cette technique, le nombre d'éléments dans le crawl va grandement décroitre (cf dans la copie d'écran ci-dessous, nous passons de 182 à 46):
 
  • En modifiant la requête sur chaque page de recherche. Il faudra alors ajouter la partie de requête suivante : "-filename:allitems.aspx" à la suite de l'habituel {searchTerms}. Le signe "-" permet de supprimer l'élément des résultats de recherche.
 
 
La deuxième solution reste plus fine et n'impactera pas tous les résultats de votre ferme SharePoint. Je pense notamment qu'elle pourrait s'appliquer à certaines pages de recherches spécifiques mais vous pourrez toujours renvoyer les bibliothèques et listes dans vos résultats de recherche sur les autres pages.

23 avril 2015

SHAREPOINT 2013 : Vérifier page en mode édition


Aujourd'hui un petit post sur la détection en JavaScript du mode édition sur une page SharePoint.
Sur une page de publication, il suffit d'interroger la valeur d'une variable existante:



Il est de même possible d'utiliser les modifications suivantes dans la page maitre sur un site de publication:



Il suffira à présent d'utiliser la variable "IsEditMode" pour tester que la page est bien en mode édition.
Mais ce serait trop simple si tous les cas étaient traités avec cette simple manipulation. Sur les pages Wiki, il faudra ajouter le script suivant pour détecter le mode édition:



Pour les pages de WebPart, il faudra utiliser le script suivant:

 
 
Il sera tout de même nécessaire de tester sur les 2 derniers scripts que les valeurs ne sont pas nulles avant d'accéder à la propriété value: 
(typeof document.forms[MSOWebPartPageFormName]._wikiPageMode != 'undefined'
(typeof document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode!= 'undefined'

17 avril 2015

SHAREPOINT 2013 : Mapper propriété UPS sur attribut AD

Le service de profil utilisateur de SharePoint 2013 met à disposition des propriétés utilisateurs pouvant être utilisées dans vos applications. Dans ce contexte, il peut être intéressant de mapper ces propriétés sur des attributs de l'Active Directory.
 
Pour se faire, il peut être intéressant d'utiliser un script PowerShell (l'avantage est qu'il permet un déploiement uniforme entre les divers environnements).

Le script suivant permet de parcourir chacune de vos connexions AD définies dans l'UPS et d'ajouter le mappage de la propriété AD "mail" sur la propriété utilisateur "WorkEmail".
# Récupération du UPS associé au site sharepointsite
$site = New-Object Microsoft.SharePoint.SPSite "http://Sharepointsite"
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($site)
$configManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager $context
# Parcours de toutes les connexions AD définies dans l'UPS
foreach ($ADConnection in $configManager.ConnectionManager)
{
     Write-Host $ADConnection.DisplayName -foregroundcolor blue
     # Ajout du mappage de la propriété "WorkEmail" sur l'attribut AD nommé "mail"
     Write-Host $ADConnection.DisplayName "- Workemail" -foregroundcolor green
     $ADConnection.PropertyMapping.AddNewMapping([Microsoft.Office.Server.UserProfiles.ProfileType]::User,"WorkEmail","mail")
     ...
}
 

12 avril 2015

SHAREPOINT 2013 : Liste des collections de sites

Aujourd'hui, une petite commande PowerShell utile pour tout administrateur SharePoint.
En effet, certaines interfaces de l'administration centrale de SharePoint ne sont pas conçues pour synthétiser l'information, il est donc nécessaire de réaliser des extractions ou des audits via les applets de commandes PowerShell pour SharePoint.

La commande ci-dessous permet de d'obtenir la liste des collections de sites présentes sur une ferme SharePoint ou sur une application web spécifique.
 
Get-SPWebApplication -Limit All | Get-SPSite | Format-Table -Property URL,ContentDatabase, Owner, SecondaryOwner
 
Pour expliquer le fonctionnement:
  • Get-SPWebApplication récupère une collection d'applications web. Le paramètre -Limit All permet de ramener toutes les applications web de la ferme SP. Il serait possible de spécifier une application web particulière en précisant l'url,
  • Get-SPSite : Récupère la liste des collections de sites associées à la (ou les) application(s) web SharePoint.
  • Format-Table : Affiche les données en renvoyant les propriétés sélectionnées.


Tout cela en une seule ligne, merci Powershell! Réaliser la même chose en code managé aurait pris au moins une vingtaine de lignes.
L'utilisation de PowerShell pour administrer et auditer SharePoint doit être un reflexe.
 

17 mars 2015

SHAREPOINT 2013 : Envoi de mail sur liste de tâche

Aujourd'hui, une petite astuce lors de la conception de modèle de listes basés sur le modèle "Tâches" de SharePoint 2013.
 
Le fonctionnement natif est l'envoi automatique d'un mail lorsqu'une tâche est affectée à l'utilisateur. Cette option est visible dans les paramètres avancés de la liste de tâches, puis "Email notification option":
 
 
 
Mais comment intégrer automatiquement cette option dans un modèle de liste?
Pour se faire, il faut rajouter l'attribut "EmailAssignTo" dans la définition de votre modèle de liste (sur le nœud "List"):
 
<List xmlns:ows="Microsoft SharePoint" Title="MyTask" Name="MyTask" ... EmailAssignTo="TRUE" ...>
 
 
Cette propriété n'est actuellement pas documentée sur le MSDN : https://msdn.microsoft.com/en-us/library/ms415091.aspx . Malgré tout, cela fonctionne correctement.

3 mars 2015

SharePoint 2013 : Envoi d'un mail via l'API REST

L'ouverture de SharePoint 2013 vers le modèle client (notamment grâce aux API Rest ou au JSOM : JavaScript Model Object) ouvre désormais de nouvelles possibilités dans les développements sur cette plateforme.
Pour illustrer ce propos, prenons un "use case" simple : Développer une fonctionnalité "Need Help" permettant de saisir quelques informations puis d'envoyer un  mail à un destinataire (spécifique ou non) lors du clic sur un bouton.

La méthode généralement employée dans ce genre de cas était la conception d'une WebPart (en code managée ou CSOM) ou la conception d'un flux de travail d'envoi de mail déclenché lors de l'enregistrement des informations dans une listes.
A présent, il n''est plus nécessaire de disposer de Visual Studio pour réaliser ce genre de besoins simple. Il peut être réalisé en réalisant un vulgaire formulaire HTML utilisant du JavaScript.
 
Voici l'exemple d'une fonction JavaScript permettant l'envoi du mail via la fonctionnalité offerte par SharePoint (en pouvant définir l'adresse de provenance, les destinataires, sujets, corps des mails) :
function sendEmail(from, to, body, subject) {
 var urlSendMailRest = _spPageContextInfo.webServerRelativeUrl + "/_api/SP.Utilities.Utility.SendEmail";
 $.ajax({
     contentType: 'application/json',
     url: urlSendMailRest,
     type: "POST",
     data: JSON.stringify({
         'properties': {
             '__metadata': { 'type': 'SP.Utilities.EmailProperties' },
             'From': from,
             'To': { 'results': ['to'] },
             'Body': body,
             'Subject': subject
         }
     }),
     headers: {
         "Accept": "application/json;odata=verbose",
         "content-type": "application/json;odata=verbose",
         "X-RequestDigest": $("#__REQUESTDIGEST").val()
     },
     success: function (data) {
        alert("Mail envoyé");
     },
     error: function (err) {
         alert(JSON.stringify(err));
     }
 });
}
Et voila, le tour est joué! Vous avez conçu votre premier formulaire permettant d'envoyer des mails à vos utilisateurs SP sans ouvrir un IDE.

25 février 2015

SHAREPOINT 2013 : Vérouillage des autorisations

Aujourd'hui, un article sur une nouvelle fonctionnalité souvent méconnue de SharePoint 2013 nommée "Limited-access user permission lockdown mode". Ce qui signifie en bon français : "Mode de verrouillage des autorisations d'utilisateur ayant un accès limité".

La description du feature dans SharePoint 2013 est la suivante : "Lorsque cette fonctionnalité est activée, les autorisations des utilisateurs au niveau Accès limité (tels que les utilisateurs anonymes) sont réduites, ce qui les empêche d'accéder aux pages des applications."
 
Cette fonctionnalité est activée ou non selon le type de site:
  • Désactivée sur un site d'équipe,
  • Activée sur un site de publication.
 
Elle permet de refuser l'accès d'un utilisateur pour un container (liste ou bibliothèque) sur lesquels il possède uniquement l'autorisalition "Accès limité". Concrètement cela signifie que si l'utilisateur dispose de droits uniquement sur un document mais pas sur la bibliothèque, il ne pourra pas accèder à la bibliothèque pour accèder à ce document. Il ne pourra le faire que si quelqu'un lui envoie un lien vers le document ou qu'il utilise le moteur de recherche.
 
En fait, la question se pose aussi sur des sites anonymes. Si vous souhaitez que les utilisateurs puissent accèder aux bibliothèques, il faudra impérativement désactiver cette fonctionnalité (après avoir positionné "Anonymous users" dans les permissions du site).

8 février 2015

INFOPATH 2013 : Rediriger un formulaire

Une demande récurrente dans la conception des formulaires InfoPath Forms Services est la possibilité de rediriger le formulaire vers une URL spécifique lors de l'enregistrement, la fermeture ou l'annulation du formulaire.
 
Il existe une méthode "classique" qui consiste à modifier l'adresse dans le paramètre "Source" de l'url du formulaire. Lorsque le formulaire se ferme, vous êtes automatiquement redirigé vers la valeur précisée dans le paramètre source.
Cette technique fonctionne très bien uniquement lorsque que vous restez sur votre tenant SharePoint.

Si vous devez préciser une URL externe, il sera nécessaire de passer par une page intermédiaire stockée dans SP.
Afin de contourner le problème de limitation d'une redirection vers une url externe, vous pouvez suivre les étapes suivantes:
  • Créer un fichier ".aspx" sur votre PC,
  • Dans ce fichier, insérer uniquement une balise JavaScript et insérer le code de redirection suivant : "window.location="monurl":

  • Télécharger ce fichier dans une bibliothèque SharePoint en l'approuvant ou le publiant si nécessaire,
  • Faire pointer le paramètre "Source" de l'url de votre formulaire vers l'adresse de ce fichier.
 
Note : Si vous concevez un fichier HTML (à la place d'une page ASPX), celui-ci ne sera pas être ouvert directement par SharePoint et il vous sera demandé de le télécharger. Ce comportement reste tout de même modifiable en changeant le mode de sécurité de l'application web de 'Strict' à 'Permissif' (attention cette option n'est pas disponible sur Office 365).
 
 
Ceci est une version basique fonctionnant sur SharePoint 2013 et Office 365. Il serait possible d'être plus intelligent et dynamique en réalisant des redirections en fonction:
  • de valeurs du formulaire (interrogation via JSOM),
  • du type de formulaires,
  • du type d'utilisateurs,...

Pour cela, il suffira uniquement de passer les paramètres souhaités à la page de redirection qui comprendra l'intelligence métier.

26 janvier 2015

SHAREPOINT 2013 : Ouvrir un lien dans un nouvel onglet

Une des nouvelles fonctionnalités à utiliser dans SharePoint 2013 est le "JSLINK".
Le "JSLink" est une nouvelle propriété apparue sur les WebPart de type ListView : utilisées dans les containeurs de type liste, bibliothèque ainsi que lors de l'ajout sur des pages. Cette propriété permet de surcharger l'affichage d'une liste en utilisant du JavaScript.

Ceci est une grande avancée comparé à SharePoint 2010 sur lequel nous étions obligé de modifier les affichages en utilisant du XSLT (puissant mais pas très user-friendly...).

Prenons un besoin simple : Ouvrir les liens disponibles dans une liste de liens SharePoint dans un nouvel onglet.
Pour se faire, il suffit de concevoir un fichier "JSLink_OpenInNewTab.js" qui comprendra les éléments suivants:



Nous pouvons voir ici que l'affichage du champ natif SP "UrlwMenu" est surchargé par notre fonction JS "OpenTitleInNewTab".
Il vous suffit ensuite de définir la propriété de la WP en spécifiant le chemin d'accès au fichier JS et le tour est joué:

14 janvier 2015

SHAREPOINT 2013 : Accélérer la mise à jour logicielle

L'installation de mise à jour SharePoint (Cumulative Update, Primary Update, Service Pack) peut vite devenir un cauchemar à cause de la durée d'installation des binaires.
Cependant, ce temps d'installation peut-être grandement amélioré (de quelques heures à quelques minutes), en effectuant les opérations suivantes sur vos serveurs SharePoint lors de la mise à jour:
  • Suspendre la recherche (Commande PS : "Suspend-SPEnterpriseSearchServiceApplication"). Ceci est à réaliser si vous mettez à jour un serveur présent dans votre topologie de recherche),
  • Stopper et désactiver le service windows SPTimer,
  • Stopper et désactiver le service windows OSearch15,
  • Stopper et désactiver le service windows Search Host Controller,
  • Lancer la mise à jour (si vous passez '/passive' en paramètre de l'exécutable, la mise à jour ne demandera pas de confirmation. Attendre la fin de l'installation,
  • Réactiver et démarrer le service Search Host Controller,
  • Réactiver et démerrer le service 0Search15,
  • Réactiver et démarrer le service SPTimer.
  • Relancer la recherche (Commande PS: "Resume-SPEnterpriseSearchServiceApplication") uniquement si vous l'aviez arrêté à l'étape 1,

L'article officiel du Technet sur les méthodes de patch est situé ici : http://technet.microsoft.com/fr-fr/library/ff806338(v=office.15).aspx

Si vous souhaitez patcher un serveur de développement, n'hésitez pas à couper le service "ISS Admin".
Grâce à ces diverses opérations, le temps de mise à jour de vos plateformes SP sera grandement amélioré.

10 janvier 2015

SHAREPOINT 2013 : Changer d'utilisateur

De nombreux utilisateurs regrettent la fonctionnalité native de SharePoint 2010 permettant de se connecter sur un site en tant qu'une autre personne. En effet, cette fonctionnalité a été supprimé dans SharePoint 2013. Malgré tout, seule l'entrée dans le menu a disparue, la page permettant de réaliser ce traitement existe toujours.

Si vous souhaitez utiliser cette fonctionnalité, il existe donc 2 moyens:

24 décembre 2014

SHAREPOINT 2013 : Provisionner WebPart de recherche

Lors de l'utilisation de SharePoint, il est possible de provisionner des composants WebParts directement dans les pages. Cela peut être réalisé via du code managé ou de manière déclaration via du XML.
Certaines WebPart comprennent diverses propriétés (correspondant au paramétrage) qui devront être définies lors du provisioning pour que les composants WebPart fonctionnent.
 
Lors de la définition de ces propriétés de manière déclarative (via XML), il est souvent nécessaire d'utiliser des "tokens" tels que par exemple "~SiteCollection" ou "~Site" permettant de dynamiser les localisations utilisées (notamment pour les "display templates" de la WebPart de recherche ou des références au "JSLINK").
 
Malheureusement, les "~" sont incorrectement encodés lors du provisioning via XML. Afin de contourner ce problème, il sera nécessaire de les remplacer par le caractère encodé suivant: "#126;" (en rajoutant un & avant le # : je ne peux pas le mettre à cause de l'éditeur blogger).

 
Par exemple:
 ~sitecollection/_catalogs/masterpage/Display Templates/MySearchWP/SearchWP.js
 
deviendra (toujours en rajoutant le "&")
 #126;sitecollection/_catalogs/masterpage/Display Templates/MySearchWP/SearchWP.js