Add Teams group to Project for the Web with Power Automate

Occasional Visitor

Hello,

 

we are looking for a solution to add  a Teams group to a project in "Project for the Web" with a flow. 

In the web we have just to select the group and click on "Add" like in the screenshot:

 

elmirt_0-1623421273045.png

 

 

Now we have a flow which creates a Teams team (it works fine) and we want to add the created team to a project in PftW. 

We tried it with the standard Dataverse connectors but didnt find the correct field for this:

elmirt_1-1623421609025.png

We also checked the new API: https://docs.microsoft.com/en-us/dynamics365/project-operations/project-management/schedule-api-prev... 

 

Is it possible to add a team to the project with a flow?

 

 

Thanks in advance 

Elmir 

 

 

14 Replies
We are in the same situation... Maybe the solution is in the entity called "msdyn_projectteamschannelmapping" or "msdyn_projectinternalconfiguration" or

@elmirt I'm looking for the same, did you find out how to do it?

 

Br

Anders

@elmirt Did you find a solution to this issue. We are also trying to find an automated way to integrate in teams.

@elmirt  We are in the same situation. If you do this via the web interface, the "ownerid" and "owningteam" values are updated in the "msdyn_projects" entity.

The AAD group is then connected to a team (entity teams). If I do the whole thing via HTTP-PATCH, the attributes are also set accordingly, but the group is still not displayed as connected in the web interface.

We have now solved the whole thing using an Azure Function (within a Logic App) and corresponding C# code.

We create a team and link it to an AAD group. The team is then assigned the appropriate security role. (https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/org-service/sa...)

 

 

 

var projectteam = new Entity("team", Guid.NewGuid());
projectteam["name"] = officeGroupName;
projectteam["businessunitid"] = new EntityReference("businessunit",Guid.Parse("GUID_BUSINESSUNIT_HERE"));
projectteam["azureactivedirectoryobjectid"] = officeGroupId;
projectteam["teamtype"] = 3;
projectteam["membershiptype"] = 0;
projectteam.Id = crmServiceClient.Create(projectteam);

// Add the role to the team.
crmServiceClient.Associate(
    "team",
    projectteam.Id,
    new Relationship("teamroles_association"),
    new EntityReferenceCollection() { new EntityReference("role", Guid.Parse("SEC-ROLE-GUID-HERE")) });

 

 

 

We then create the project with the API "msdyn_CreateProjectV1". Here we then set the "ownerid" to the ID of the created team.

 

 

 

project["ownerid"] = new EntityReference("team", Guid.Parse(projectteam.Id.ToString()));

 

 

It takes some time until the connection is shown in P4W.

Hello @PatrickGrebe,

 

I use Power Automate to update the ownerid field from the entity msdyn_project with the teamid field located in the entity "Team" but it still does not update this change on Project for the web:

 

gbartumeu_0-1645812571710.png

 

I haven't tested this with a flow. However, the project creation should take place via an unbound action and the API "msdyn_CreateProjectV1". We do not update the ownerid, but maintain it directly when it is created. Here you can then set the "ownerid" directly to the team. As already mentioned, it takes 15-30 minutes before the connection is shown in P4W.

Important: If the team was newly created, a role must be added to it.

Hello @PatrickGrebe,

 

Thanks for your response. As you said, it took a while but now I see the project it's being assigned to the team! :stareyes:

 

Could you explain me which role and how I must assign it to the Team? Do you refer the "team" entity record or the AAD Group?

 

Thanks in advance,

 

 

Sounds good.
We currently do it like this:

1. Create a Microsoft 365 Group (including a Microsoft Team)
2. Create a new record in the "team(s)" entity (connected to the AAD group created in step 1) (https://XXX.crm4.dynamics.com/api/data/v9.1/teams) .
3. Connect the role (https://XX.crm4.dynamics.com/api/data/v9.1/roles) "Project Team Member" to the team created in step 2.

Also see my code from the previous answer. azureactivedirectoryobjectid equals to the group id created in step 1.

Anyone has an idea how to give prvCreateTeam permissions to the Teams table? I've granted full permissions in the default environment Business Management Section but I keep getting below error:

{"error":{"code":"0x80040220","message":"Principal user (Id=c2500728-e5e7-ec11-bb3c-0022489f76c6, type=8, roleCount=4, privilegeCount=256, accessMode=0), is missing prvCreateTeam privilege (Id=4807b998-6b4f-4d57-9cf6-515f50e43d79) on OTC=9 for entity 'team' (LocalizedName='Team').
context.Caller=c2500728-e5e7-ec11-bb3c-0022489f76c6. Or identityUser.SystemUserId=d9e8da9f-e1e7-ec11-bb3c-0022489f76c6, identityUser.Privileges.Count=260, identityUser.Roles.Count=4 is missing prvCreateTeam privilege (Id=4807b998-6b4f-4d57-9cf6-515f50e43d79) on OTC=9 for entity 'team' (LocalizedName='Team')."}}

 

EDIT:

 

I managed to solve the issue, I'm delegating to a licensed service account but the application registration user also needed permissions on the Teams table.

@PatrickGrebe 

Hi Patrick,

Is the mechanism you described still functional? We tried the exact same steps through code in order to create and assign a P4TW project, using the exact steps (Create a group, create a Team with reference to the group, assign a role to a team, create the project with the team as the owner), however while the project is created successfully, along with the group and the respective teams and roles, we still don't get to see it "linked" to the newly created Group (even after several hours).

The user has to open the project and manually and link the project with the group:

 

SpyrosM1980_0-1661526670416.png

 

We compared the rows created in the dataverse from manual assignment, to the ones auto created by our code and they are exactly the same. Are we missing any step? 

 

Thanks

 

 

@SpyrosM1980 Hi, the whole thing works smoothly for us as I described above. (just tested)

We create the Office365 group via LogicApp. Then we wait about 2 minutes before we create the team in Dynamics and connect it to the Office365 group. (via Azure Function)

It takes between 15-60 minutes until the connection is displayed correctly in P4W.

Thanks. The truth is that we are currently missing the "wait 2 minutes after o365 group" creation step. Instead, we are immediately creating the team with reference to the group. We will add the first wait also and let you know if that works.
Thanks again,
Spyros
just wanted to say thanks, and followup to any one who is interested:
Indeed the key here was waiting for a couple of minutes after group creation. When we inserted a delay among these two actions, the group was linked correctly in P4TW. So to sum up, the process is:
1) Create Group in O365
2) wait for 2 minutes
3) Create a record in Teams entity with azureactivedirectoryobjectid=[group id]
4) Assign the role "Project Team Member" to the newly created Team
5) [Create the project if not exists]
6) Set the owner to the id of the newly created team
7) [wait for 15-60 minutes to see the linked group in P4TW]

To be honest, our users are frustrated especially with the last delay, if anybody knows how to force any refresh job to run let us know, because the process runs from the UI in seconds, so something different may be happening there.

Thanks again for your help