How to add more than one (existing) User, at a time, to a new Zoom App?

We have an Enterprise license on our Production Account. We maintain over 3000 users / rooms, in 20+ Groups. Each User is a placeholder (not an actual person), to maintain continuous room availability, within each Group. Our goal is to add most, if not all, of our Users to a new Zoom App.

The Zoom App has no user interface. Its purpose is to send meeting.started, meeting.ended, meeting.rtms_started, and meeting.rtms_stopped to a webhook consumer. The Zoom App is meant for “internal” use only. At this time, we have no intention to publish or monetize it.

I am testing against a secondary Account, with a lower licensing level (Business), that we maintain for the purpose of testing (API calls, Zoom Apps, etc).

The Problem: How to add more than one (existing) User, at a time, to our new Zoom App.
We need to add over 3000 users…

Using “Apps on account”, I can select my Zoom app.
I can then select “Users and Groups”, and click on the + Add Users button.

  • When I add individual users, everything works as desired.
  • Attempting to add All Users fails silently, with the User list unchanged.
  • Attempting to add a Group appears to work, but the members of that Group don’t receive the meeting.started or meeting.ended events.

Adding Groups to the Zoom App would be ideal, but as stated above, this appears to work, but doesn’t grant Group members the same access as adding an individual User (to the Zoom App).

Given that your (Beta) interface, for adding Users or Groups to a Zoom App, includes “All Users” (silently fails) and “Groups” (appears to succeed, but fails), it would appear to be on your development radar…

Are there any other options? (bulk load, API, etc…)

Is the structure or licensing of the secondary test Account the problem?

Or, is our RTMS trial period, ending again (on the test account), preventing us from adding All or Groups? (noticed that I can’t add all of the RTMS scopes to a new app, but the existing RTMS apps continue to work)

Thanks.

Hi @Bill3 ,

Not sure if you are using the interface zoom.us or API.

Bulk loading is shown here and for a one-off, I would use this.

API To create users, one at a time, but you can loop. This also gives the limits

https://developers.zoom.us/docs/api/users/ma/#tag/users/post/accounts/{accountId}/users

RTMS will have no affect on this.

all the best

John

Hi John,

Thank you for the information, but adding / creating users is not the problem.

I am operating against our secondary account (Business), used to test API calls, Zoom Apps, etc.

We have an Enterprise license on our primary account, with 3000+ users (placeholders, not people) in 20+ Groups.

Our issue is specific to adding existing Users / Groups, to a new Zoom App, via Marketplace → Manage → Apps on Account, as described in this slightly outdated document: https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057670

I have subsequently learned that this should be working (for both Groups and All Users), so I submitted a trouble ticket to find out why it is not working on our test account. We want to sort out the issues on the test account, before starting implementation on our primary / production account.

Thanks.

Bill Clark

Granted, the actual problem could be related to user or group creation…

A setting that allows individual Users to be added to a Zoom App, but not Groups or All Users???

That’s what we’re trying to figure out.

hi @bill,

This could be an example of Zoom created the system one way and we want to use it another.

I am going to bring this up at our next meetup.
:tada: Developer Office Hours have officially resumed. Our next session will take place on Wednesday, January 28. Register here to join the session!
And we may then bounce this back to the marketplace team. I think this could be a request to upgrade.
Adding via a group seems a good feature, but may not be working as expected for you.

all the best

John

Hi John,

My expectation, when adding a Group to a Zoom App (as described in https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0057670), is that the members of that Group would be treated as though they were added to the Zoom App individually.

If that is not the case, then what is the point / purpose of adding a Group to a Zoom App?

We have most of the nuts and bolts figured out, to achieve our end goal.

Adding Groups to our Zoom App is the last hurdle to implementation.

We don’t really want to add “All Users”, but we haven’t gotten that to work either.

Our primary account has seen a lot of changes over time, shifting from partner to API minutes, and some variations in-between.

Our secondary account has been the playground for API development, so some of the Users created may not be optimal examples…

We’re just trying to figure what “should” work, and if not, what do we need to do to make it work.

Thanks.

Bill Clark

hi @Bill3 ,

I am going to find a better answer. It is something that bugs me too.

John

I am also having this issue - I posted about it in a thread a few weeks ago. Zoom App webhooks not working when app is added to group rather than individual users - #2 by amanda-recallai

Slight complication…. Is there a way to Remove a Group from a Zoom App? Not seeing a disable or remove, like the User listing.

If not, I’ll just de-populate my test group and create new one.

Tomorrow, I’ll try to add a Group via the App Listings Page (Add for Others).

If that fails, then I’ll break my App into two Apps, one for RTMS events and one for Meeting events, and see if I can successfully add a Group to the Meeting events app.

Love the Office Hours. Thanks!

Test 1

  1. I created a new Group: Test Group 1
  2. I moved User A and User B into Test Group 1
  3. I opened the Preview App page for our RTMS App
  • The RTMS App sends the following events to a webhook: meeting.started and meeting.ended, and if RTMS is started, meeting.rtms_started, meeting.rtms_stopped
  1. I clicked on “Add for others” and added Test Group 1 to the RTMS App
  2. I scheduled a Meeting through the User A Account
  3. I joined the Meeting as a Participant (not Host): No event was received
  4. I left the Meeting (and waited for the timeout): No event was received
  5. I returned to the Preview App page for our RTMS App
  6. I clicked on “Add for others” and added User A to the RTMS App
  7. I joined the Meeting as a Participant (not Host): Received the meeting.started event
  8. I left the Meeting (and waited for the timeout): Received meeting.ended event
  9. I then removed User A from the RTMS App
  10. I joined the Meeting as the Host: No event was received
  11. I left the Meeting (and waited for the timeout): No event was received
  12. I added User A to the RTMS App again
  13. I joined the Meeting as a Host: Received the meeting.started event
  14. I left the Meeting (and waited for the timeout): Received meeting.ended event

Test 2 (removing RTMS from the equation)

  1. I created a new Group: Test Group 2
  2. I moved User X and User Y into Test Group 2
  3. I created a new General User Controlled Zoom App: MeetingOnly
  • The MeetingOnly App sends meeting.started and meeting.ended to a webhook (no added scopes)
  1. I opened the Preview App page for the MeetingOnly App
  2. I clicked on “Add for others” and added Test Group 2 to the MeetingOnly App
  3. I scheduled a Meeting through the User X Account
  4. I joined the Meeting as a Participant (not Host): No event was received
  5. I left the Meeting (and waited for the timeout): No event was received
  6. I returned to the Preview App page for our MeetingOnly App
  7. I clicked on “Add for others” and added User X to the MeetingOnly App
  8. I joined the Meeting as a Participant (not Host): Received the meeting.started event
  9. I left the Meeting (and waited for the timeout): Received meeting.ended event
  10. I then removed User X from the MeetingOnly App
  11. I joined the Meeting as the Host: No event was received
  12. I left the Meeting (and waited for the timeout): No event was received
  13. I added User X to the MeetingOnly App again
  14. I joined the Meeting as a Host: Received the meeting.started event
  15. I left the Meeting (and waited for the timeout): Received meeting.ended event

Summary:
My tests demonstrate that (when using our test account) adding a Group to a Zoom App has no noticeable effect, and that RTMS is not the issue.
Test 2 can be easily reproduced (assuming you have something to consume / log the webhook events).

BTW, after adding Test Group 2 to the MeetingOnly App, I went into Test Group 2 >> Settings >> Zoom Apps >> “Auto-open an app in meetings” only offered None.
I added User X and User Y to the MeetingOnly App, as well (added both as Users and as a Group) and “Auto-open an app in meetings” still only offered None.
Instructions: Choose an app to open at meeting start for group members. Only apps already added for group members can be selected. To add one, find it on marketplace.zoom.us and select ‘Add for Others’.

So, in the end, I’m right back where I started… Trying to find a way to add more than one User at a time, to a Zoom App.

Would “Publishing” the Zoom App solve this problem?
It’s only meant for our use, and we have no intention to monetize it (at this time), but I have seen the sweeping authorizations that can be done (via Admin) through the “App approval and authorization” pop-up, for a published app. Is there a way to publish “internally”? or other ways to invoke that interface ; )

I look forward to your thoughts.

Thanks.

Hey @Bill3
Thanks for such a detailed response!
I am currently looking into this! will share more with you as soon as I have more answers.

My only finding so far is that when adding the app for a specific groups and joining a meeting as a participant, I do get the meeting.started event (TEST 2)

I will look into TEST 1 scenario using RTMS too

Hi @elisa.zoom

I’ve been working on other projects and related components, and now I’m winding back to this.

I just retested everything.

· We get no webhook events from our General apps, unless we add individual users to the app.

· Adding users to a Group and then adding that Group to the app has no noticeable effect.

If you succeeded in sending webhook events through a Group membership assignment, then something must be different.

Highest probability scenarios:

· We are doing something different in the process of adding the User to the Group, and then adding the Group to the App.

· Something in our default user configuration is preventing app assignment, through Group membership, from working.

Is there a way to show the Zoom App settings (or any other relevant settings) in the user configuration that worked for you?

Thanks

How I tested:

Consumer: Our webhook consumer (optionally) requests RTMS start for meetings, after receiving a meeting.started event.

Meetings: All meetings were joined as Host.

General OAuth Apps:

1. I created a general app “Meeting Only” that sends two webhook events (meeting.started and meeting.ended) to my dev consumer (via ngrok).

2. I have an existing app “RTMS local dev” that sends meeting.rtms_started, meeting.rtms_stopped, meeting.started, and meeting.ended events to my dev consumer (via ngrok).

3. I added 3 new users (A, B, and C) to our test account, through our client application, using Zoom API.

4. They were all assigned to our default group “All Users”.

5. I created a new group “Dev Test”.

6. I added users A, B, and C to the “Dev Test” group.

7. I removed C from the “All Users” group (just to see if it changed anything).

8. I added the “Dev Test” group to the “Meeting Only” app.

9. I added the “Dev Test” group to the “RTMS local dev” app.

10. I scheduled meetings using users A, B, and C: the webhook consumer receieved nothing (and the apps didn’t log Events).

11. I then added users A, B, and C individucally to the “RTMS local dev” app, scheduled a new meeting for each, and all events were received and logged.

12. I then disabled user A, B, and C in the “RTMS local dev” app, scheduled a new meeting for each, and no events were received (or logged).

13. (odd bit) I then added users A, B, and C individually to the “Meeting Only” app, and scheduled a new meeting for each:

a. Users A and C triggered meeting.started (and meeting.ended) events from the “Meeting Only” app, and the RTMS start request received a (403) Forbidden response.

b. User B triggered meeting.started (and meeting.ended) events from the “Meeting Only” app, and the RTMS start request triggered meeting.rtms_started (and meeting.rtms_stopped) in the “RTMS local dev” app.

I couldn’t find any differences between user A and user B (and user C wasn’t a member of the “All Users” group).

Webhook Only App:

I also created an Account Level Webhook Only app to send meeting.started and meeting.ended.

Activating this app on our test account triggered the meeting.started (and meeting.ended) event, but every attempt to start RTMS received a (403) Forbidden response.

Additional thoughts about users and groups within an app:

Once added, a User can be disabled or removed.

After adding a Group, there are no options…

In theory, one could move all of the Users into a new Group, but it would be nice to have a disable or remove option, after adding a Group.

We figured out how to resolve the (403) Forbidden responses, when trying to manually start RTMS. We needed to make sure that the “Primary Group” was added to our RTMS app. This allowed us to integrate an Account Level Webhook Only app to provide the necessary meeting.started and meeting.ended events. You had some nice forum posts to guide us through URL Validation. We didn’t realize that ngrok was performing this task for us, when testing from local dev.

So, we have a “working” solution that doesn’t require us to add individual users to any of our apps. This is very significant, because in our usage model, we have approximately 5,000 (placeholder) users.

The optimal solution would be to trigger the meeting.started and meeting.ended events through Group assignment (adding a Group to a User Managed General OAuth App).

@elisa.zoom responded to this post, back in February, stating that she had successfully issued meeting events through Group assignment. We have only been able to successfully trigger the meeting.started and meeting.ended events from a (General) app by adding individual users to the app. Our goal is to determine what is different…

The most likely differences are in the default User / Group Settings, but I can’t discount the Process of adding a Group to an App.

Settings: There are no obvious settings in our default user and default group that would prevent webhook events through Group assignment, but allow webhook events through User assignment. But this is a layered system, and we may be missing something that would be obvious to you, but not to us.

Process: We have recently learned that all Groups are not the same, and that the “Primary Group” carries the most weight. We may be missing other notions or actions that could affect the result. Our definitions of Group and User assignments are using the “+ Add User” or “+ Add Group” under Users & Groups for the App.

Are there ways to export User or Group settings? I’m looking for a way to compare one of our Users (or Groups) with one of the Users (or Groups) that @elisa.zoom succeeded with.

Thanks