21.2.14

Fonctionnalités SharePoint 2013: WMSA - Work Management Service Application



Introduction

Service Application introduit avec la dernière version de SharePoint 2013. Un Service qui permet de regrouper des tâches à partir des différents sources dans une location centralisée:
  • Les utilisateurs ont la possibilité de visualiser et contrôler leurs listes des tâches 
  • Les tâches sont disponibles dans la cache du site personnel de l'utilisateur
  • Les tâches sont synchronisées avec Outlook et pourront être visualisées et modifiées avec un accès direct via ce dernier 
  • Les tâches sont regroupées à partir de Exchange, Project Manager, et SharePoint
  • Le service est basé sur un "Provider Model", donc un système ouvert qui peux être intégré dans le futur

Le service est normalement utilisé comme part intégrante de chaque My Site / Newsfeed.

Important

Le Search Service Application doit être paramétré et activé. En effet, le service WMA est basé sur les résultats du service de recherche.
    1. Donner de user policy sur l application web au WMA
    2. Donner des permissions de WSS_Content_Application_Pools sur le config database au WMA account
    3. Donner des permissions de SPDataAccess sur le content database au WMA account

# Add the managed account to the SPDataAccess database role in SharePoint content database$w = Get-SPWebApplication -Identity $url $W.GrantAccessToProcessIdentity("domain\ServiceAccount")


Les tâches sont archivées dans une liste cachée "WmaAggregatorList_User" sur le site personnel de chaque utilisateur

Exchange Server

Pour avoir la synchronisation avec les tâches stockées sur Exchange Server est nécessaire établir une OAuth Trust and Service Permission et donc exécuter sur le serveur Exchange le script Powershell dans la directory : "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"

.\Configure-EnterprisePartnerApplication.ps1 -ApplicationType Sharepoint -AuthMetadataUrl https://<SP_FQDN>/_layouts/15/metadata/json/1

<SP_FQDN>   est l URL de la collection de site SharePoint

Erreur recurrente : “We are having trouble refreshing your tasks”

  • Le WMA doit avoir le même compte de l application web
  • Le WMA compte doit avoir le Full Control permission sur le User Profile Service
  • La tâche content type doit être le Default Content Type de la liste
  • Associé le WMA service au proxy groupe de la web application 



7.11.13

Update taxonomy field Process Batch Data TaxonomyFieldValueCollection

public static string XmlToUpdate(List<XmlDataDoc> lstKeyValues, string InternalColmnName, string listGuid, bool isDocLibrary)
        {
            StringBuilder methodBuilder = new StringBuilder();
            string batchFormat =
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<ows:Batch OnError=\"Continue\">{0}</ows:Batch>";
            string methodFormat = "<Method ID=\"{0}\">" +
                "<SetList>{1}</SetList>" +
                "<SetVar Name=\"Cmd\">Save</SetVar>" +
                "<SetVar Name=\"ID\">{2}</SetVar>" +
                "<SetVar Name=\"urn:schemas-microsoft-com:office:office#{3}\">{4}</SetVar>" +

//Requiredf only for Document Library             
 ((isDocLibrary) ? "<SetVar Name=\"owsfileref\">{5}</SetVar>" : "") +
           
   "</Method>";
           
              foreach (XmlDataDoc KeyValue in lstKeyValues)
            {
                methodBuilder.AppendFormat(methodFormat, KeyValue.ID, listGuid, KeyValue.ID, InternalColmnName, KeyValue.Value, KeyValue.RelativeUrl);
            }
            return string.Format(batchFormat, methodBuilder.ToString());
        }

        public static string XmlToNew(List<Dictionary<string, string>> lstColNameEtValue, string listGuid)
        {
            string batchFormat =
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<ows:Batch OnError=\"Continue\">{0}</ows:Batch>";
            StringBuilder methodFormat = new StringBuilder();
            foreach (Dictionary<string, string> items in lstColNameEtValue)
            {
                methodFormat.Append("<Method ID=\"LaunchMeta\">" +
                    "<SetList>" + listGuid + "</SetList>" +
                    "<SetVar Name=\"Cmd\">Save</SetVar>" +
                    "<SetVar Name=\"ID\">New</SetVar>");
                foreach (KeyValuePair<string, string> ColNameEtValue in items)
                {
                    methodFormat.Append("<SetVar Name=\"urn:schemas-microsoft-com:office:office#" + ColNameEtValue.Key + "\">" + ColNameEtValue.Value + "</SetVar>");
                }
                methodFormat.Append("</Method>");
            }
            return string.Format(batchFormat, methodFormat.ToString());
        }
       
public static string TaxoCollToXmlInput(TaxonomyFieldValueCollection TaxoColl)
        {
            string metaList = string.Empty;
            foreach (TaxonomyFieldValue itm in TaxoColl)
            {
                metaList += itm.WssId + ";#" + itm.Label + "|" + itm.TermGuid + ";";
            }
            return metaList;
        }
    }

    public class XmlDataDoc
    {
        public int ID { get; set; }
        //item.file.RelativeUrl not item.url
        public string RelativeUrl { get; set; }
        public string Value { get; set; }
    }
}