web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

How to retrieve a user's teams? Javascript.

(0) ShareShare
ReportReport
Posted on by

I am trying to retrieve a user's team. The teams the user is a member of.

I trying to do this in JavaScript for CRM 2013 or 2015.

any ideas how?

appreciate all the help i can get!

*This post is locked for comments

I have the same question (0)
  • Verified answer
    Andreas Cieslik Profile Picture
    9,267 on at

    Old CRM versions:

    Get current user id:

    Xrm.Page.context.getUserId()

    On this blog:

    http://crmxpg.nl/wp/2010/05/27/determine-teams-for-any-user-in-javascript/

    Use method

    getUserTeams (userid)

    In CRM 2016 ODATA v8.1:

    https://customer.crm.dynamics.com/api/data/v8.1/teams$select=name&$expand=teammembership_association($filter=systemuserid eq 014853d6-4f9f-e611-80e6-c4346bacbcbc)

    Result:

    {
      "@odata.context":"https://customer.crm.dynamics.com/api/data/v8.1/$metadata#teams(name,teammembership_association)","value":[
        {
          "@odata.etag":"W/\"596262\"","name":"Contoso","teamid":"56031a5c-4296-e611-80e4-c4346bad0070","ownerid":"56031a5c-4296-e611-80e4-c4346bad0070","teammembership_association":[
            
          ],"teammembership_association@odata.nextLink":"https://customer.crm.dynamics.com/api/data/v8.1/teams(56031a5c-4296-e611-80e4-c4346bad0070)/teammembership_association$filter=systemuserid%20eq%20014853d6-4f9f-e611-80e6-c4346bacbcbc"
        }
      ]
    }
  • Community Member Profile Picture
    on at

    Using your JavaScript code to call code generated by Dynamics CRM REST Builder

  • Verified answer
    Abed Haniyah Profile Picture
    4,287 on at

    function GetRequestObject() {
    if (window.XMLHttpRequest) {
    return new window.XMLHttpRequest;
    } else {
    try {
    return new ActiveXObject("MSXML2.XMLHTTP.3.0");
    } catch (ex) {
    return null;
    }
    }
    }


    function makeRequest(query) {
    var serverUrl = Xrm.Page.context.getClientUrl();

    var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/";
    oDataEndpointUrl += query;

    var service = GetRequestObject();

    if (service != null) {
    service.open("GET", oDataEndpointUrl, false);
    service.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    service.setRequestHeader("Accept", "application/json, text/javascript, */*");
    service.send(null);

    var retrieved = JSON.parse(service.responseText).d;

    var results = new Array();
    for (var i = 0; i < retrieved.results.length; i++) {
    results.push(retrieved.results[i]);
    }

    return results;
    }
    return null;
    }

    function getUserTeam()
    {
    var myTeamId = null;
    var myTeamName = null;

    var guid = "[A-z0-9]{8}-[A-z0-9]{4}-[A-z0-9]{4}-[A-z0-9]{4}-[A-z0-9]{12}";

    var serverUrl = Xrm.Page.context.getClientUrl();
    var userId = Xrm.Page.context.getUserId();
    userId = userId.match(guid);
    userId = userId.input;

    // Retrieve TeamIds of the Teams Current SystemUser belongs to
    var userTeamsQuery = "TeamMembershipSet?$select=TeamId&$filter=SystemUserId eq guid'"+ userId +"'";
    var userTeams = makeRequest(userTeamsQuery);

    var teamQuery = null;
    var teams = null;

    if(userTeams !== null){

    for(var i = 0; i< userTeams.length; i++){

    userTeams[i] = userTeams[i].TeamId;

    console.log("Team Id : " + userTeams[i]); // to see TeamIds of user in Console

    var teamId = "{" + userTeams[i] + "}";

    // Retrieve Name and TeamIds of the Teams via given TeamId that we already have above
    teamQuery = "TeamSet?$select=Name, TeamId&$filter=TeamId eq guid'" + teamId + "'";
    teams = makeRequest(teamQuery);

    myTeamId =teamId;

    if(teams !== null && teams.length >0){
    myTeamName = teams[0].Name;
    }

    alert(myTeamName); // alert name of the teams user belongs to

    }
    }
    }

  • Community Member Profile Picture
    on at

    thanks, this is just what i needed it!

  • Suggested answer
    Community Member Profile Picture
    on at

    To make it easy in CRM 2016 / 365, I found the following works well using the new Web API functionality.

    function someFunction() {

      if (checkTeam('System Administrator') == false )

      {

            Xrm.Page.getControl("expireson").setDisabled(true);

      }

    }

     

    function checkTeam(teamName) {

      var clientURL = Xrm.Page.context.getClientUrl();

      var req = new XMLHttpRequest();

      var userId = Xrm.Page.context.getUserId().substr(1, 36);

      var query = "/api/data/v8.2/systemusers(" + userId + ")?$expand=teammembership_association($select=name;$filter=name eq '" + teamName + "')";

      req.open("GET", encodeURI(clientURL + query), false);  

      req.setRequestHeader("Accept", "application/json");

      req.setRequestHeader("Content-Type", "application/json;charset=utf-8");

      req.setRequestHeader("OData-MaxVersion", "4.0");

      req.setRequestHeader("OData-Version", "4.0");

      req.send();

      if (req.status == 200) {

        var data = JSON.parse(req.response).teammembership_association;

                    if (data.length > 0)

        { return true; } else { return false; }

      };

    }

  • Community Member Profile Picture
    on at

    I believe the verified answer is missing a '?' before 'teams' and '$select....'

  • NK Bhairi Profile Picture
    244 on at

    What if a user belongs to multiple teams?

  • Andreas Cieslik Profile Picture
    9,267 on at

    Please check my answer above. It will enlist all teams that the user belongs to.

  • Suggested answer
    Community Member Profile Picture
    on at

    Hello All,

    If you want to achieve the same using latest Web API please try below sample code:  

    Note : I have added few additional filter conditions. If you do not want them just remove . Also , i am considering only first team for my functionality. If you want all teams just use for reach loop.

    // Retreive Data using Web.API ..........................................................................
    var userSettings = Xrm.Utility.getGlobalContext().userSettings; // userSettings is an object with user information.
    var current_User_Id = userSettings.userId; // The user's unique id
    var UserID = current_User_Id.slice(1, -1);

    Xrm.WebApi.online.retrieveMultipleRecords("systemuser", "?$expand=teammembership_association($filter=name ne 'Web' and ltf_teamtype eq 100000000;$select=ltf_teamtype,name,teamid)&$filter=systemuserid eq "+UserID+"").then(
    function success(results) {
    if (results.entities.length > 0) {
    var teammembership_association = results.entities[0]["teammembership_association"];
    if (teammembership_association.length > 0) {
    var UserTeamName = teammembership_association[0].name;
    var UserTeamGUID = teammembership_association[0].teamid;
    }
    var systemuserid = results.entities[0]["systemuserid"];
    }
    },
    function(error) {
    Xrm.Utility.alertDialog(error.message);
    }
    );

    Other way to do the same using Fetch XML -  

    // Retreive Data using fetchXML ......................................................................
    var objectTeamAttributes = new Object();


    var fetchXML = "<fetch mapping='logical' output-format='xml-platform' version='1.0' distinct='true'>\
    <entity name='team'>\
    <attribute name='name' />\
    <attribute name='businessunitid' />\
    <attribute name='teamid' />\
    <attribute name='teamtype' />\
    <order descending='false' attribute='name' />\
    <filter type='and'>\
    <condition value='100000000' attribute='ltf_teamtype' operator='eq' />\
    <condition value='Web Specialist' attribute='name' operator='ne' />\
    </filter>\
    <link-entity name='teammembership' to='teamid' from='teamid' intersect='true' visible='false'>\
    <link-entity name='systemuser' to='systemuserid' from='systemuserid' alias='ag'>\
    <filter type='and'>\
    <condition attribute='systemuserid' operator='eq-userid' />\
    </filter>\
    </link-entity>\
    </link-entity>\
    </entity>\
    </fetch>";

    var encodedFetchXml = encodeURI(fetchXML);
    var queryPath = "/api/data/v9.1/teams?fetchXml=" + encodedFetchXml;
    var requestPath = Xrm.Utility.getGlobalContext().getClientUrl() + queryPath;

    var req = new XMLHttpRequest();

    req.open("GET", requestPath, true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");

    req.onreadystatechange = function ()
    {
    if (this.readyState === 4)
    {
    this.onreadystatechange = null;
    if (this.status === 200)
    {
    var returned = JSON.parse(this.responseText);
    var results = returned.value;

    if (results.length > 0)
    {
    var TeamName = results[0]["name"];
    var TeamGUID = results[0]["teamid"];
    objectTeamAttributes.TeamName = TeamName;
    objectTeamAttributes.TeamGUID = TeamGUID;
    //alert(objectTeamAttributes.TeamName);
    //alert(objectTeamAttributes.TeamGUID);
    }

    }
    else
    {
    alert(this.statusText);
    }
    }
    };
    req.send();

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans