A project I’m currently working on, EduTeams, is an interface between our Schook Information System (SIS) and MS Team. The goal is to create educational teams for classes and groups described in our SIS. We used to do this with MS School Data Sync (SDS), but for all sorts of reasons we want to stop doing that.

Pivotal in doing this is being able to create and maintain an educational team. And I learned that the “normal” way of creating teams does not work for educational teams.


This article is the product of my personal experience with creating educational team. No guaranty is given to it’s workings. There can be other (better) ways to do what I’m doing. If you know of a better way, have feedback, please contact me. Always willing to learn and discuss

Assumptions made

I assume the reader is capable of making Graph request, is aware of the process of App registration in Azure to do such things. I’m not giving (coding) examples of the actual request. Links are posted to relevant items on MS Learn. These items contain the latest info from Microsoft on the subject and include examples. A good place to play around witch Graph request would be MS Graph Explorer.
Although I use Perl to write these interfaces this is by no means the only way or even the best way. In fact I think I’m kind of a loner in using Perl for that. Your tool chain could include NodeJS, Powershell, C# or even cURL on the command line. It does not really matter. I make no assumptions as to what you use.

A birds eye view of an EduTeam

At first glance an EduTeam is just like any other team. But when you take a better look you notice some important differences. They are facilitated with all kinds of goodies to act as a place in which you can teach and learn. Most noticeable:

  • Hidden for students by default, teacher can “activate” the team.
  • They have a class-notebook.
  • Can have assignments.
  • Which in turn can have rubrics.
  • And more

EduTeams are created using a special template, “EducationClass”, and are only available in educational tenants.

Creating an EduTeam

Create the group

You would presume that the method of creating a group and transforming it into a team would work. This is in fact the case for “normal” teams, not so for an EduTeam.
To use the EducationClass template the group has to be associated with a class. So instead of creating a group you should create a class. By creating a class the associated (unified) group is created automatically. Both the class and the group share the same identity.

After the group has been created (the background processes can take up to 15 minutes) using the Create educationClass method you can transform it into a educational team using the educationClass template.

Add an owner

The group should have at least one owner to transform it to a team. Since the group is not yet a team you can do this with group methods to add an owner. Take into account that an owner should also be a member of the group.

Transform it to a team

After you’ve created a group (by creating a class) you can transform this group to an educational team. This is not an immediate process. You kind off place a request in a queue. If the transformation request is accepted you’ll get a HTTP result code of 202. In the reply there is a “location”. This location can be can be checked with a new request to check the status of the transformation.

Adding members and owners

Using the group methods

Teams being specialized groups gives the possibility of using the more standard group methods of adding users. But there are drawbacks to this method.
The first thing to take into account is that an owners should also be a member of a team. When using the groups methods you must add an owner both as owner and member. Resulting in two separate transactions.
Next there are delays in effect:

  • A member added to a group will be visible as a team member within the next 24 hours.
  • The member/owner is only added to the team if on of its members has been active in Teams (not in the mobile app).

The thing that made me look further is the limits on members which can be added per transaction: 20. In my organization 20 members would suffice for normal teams, but not for classes. Classes are almost always larger than 20 members. We also facilitate cross section teams (teams in instance for all students of a certain course or grade level) which can easily have hundredth members or more.
Of course you can work around this. You can add members In a loop, add them in batches of 20, you can even use batched JSON (which in fact also imposes a limit of 20 on the number of elements in the batch) to add them. But the result is a lot of transactions and complex coding.

Using the teams methods

Analog to the Groups API methods the Teams API gives you method to add users. An important difference is that users are added to the team with a role. That way you are able to add an owner in one single transaction. These methods also impose the 20 users limit per transaction. But read on…
I guess the guys who programmed the recognized the fact that adding 20 users to a team is not a whole lot. Not sure as to the reason, but there is a method add users in batch. That method can add up to 200 users in one transaction. This suffices for the majority of the teams I need to create. Only a fraction of the teams we facilitate will be larger than that.

Conclusion: Proposed workflow

To conclude I would like to propose the following method for creating educational teams:

laat een reactie achter

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.