Cannot create online meeting with Enterprise Application
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- azure, java
- Domain
- api, authentication, authorization
Research direction
Start with the GraphServiceClient users().byUserId(...).onlineMeetings().post(meeting) call and the reported application access policy error. Review the service-principal permissions and Exchange Online policy setup described in the issue, then verify the request against the documented application-permission flow. Done means identifying whether the SDK request or the external policy configuration causes the failure.
Written by the indexing model from the issue text.
Description
Describe the bug
We're unable to create an online meeting using the Microsoft Graph SDK with a service principal. We're following the application permissions flow (not delegated) and calling the Graph API with the correct scopes and payload, but the request fails withthe follwing error
com.microsoft.graph.models.odataerrors.ODataError: No application access policy found for this app.
Expected behavior
Online meeting created
How to reproduce
- Added deps
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.4</version>
</dependency>
<dependency>
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph</artifactId>
<version>6.36.0</version>
</dependency>
- Created an Enterprise Application and corresponding Service Principal.
- Granted all required application permissions, including:
OnlineMeetings.ReadWrite.AllUser.Read.AllCalendars.ReadWrite- All permissions have been admin-consented.
- Created a mail-enabled security group and added all relevant users to it.
- Used the following code to try to create an online meeting:
@Override
public Event createCall(CallDTO callData) throws TechnicalUserIsNullException {
try {
GraphServiceClient graphClient = accessTokenGenerationService.getGraphServiceClient();
User organizerUser = accessTokenGenerationService.getTechnicalUser();
// 2.Create online meeting
OnlineMeeting meeting = createOnlineMeeting(callData, graphClient);
OnlineMeeting createdMeeting = graphClient.users()
.byUserId(organizerUser.getId())
.onlineMeetings()
.post(meeting);
} catch (ODataError error) {
log.error("Error calling Microsoft Graph API: {} - {} - {}", error.getError().getCode(), error.getError().getMessage(), error.getError().getTarget());
log.error("Error calling Microsoft Graph API Inner clientRequestId: {} - requestId: {} - OdataType: {}", error.getError().getInnerError().getClientRequestId(), error.getError().getInnerError().getRequestId(), error.getError().getInnerError().getOdataType());
throw error;
} catch (Exception ex) {
log.error("Error creating Teams call: {}", ex.getLocalizedMessage(), ex);
throw ex;
}
}
private OnlineMeeting createOnlineMeeting(CallDTO callData, GraphServiceClient graphClient) {
OnlineMeeting meeting = new OnlineMeeting();
meeting.setStartDateTime(OffsetDateTime.of(callData.from(), ZoneOffset.UTC));
meeting.setEndDateTime(OffsetDateTime.of(callData.to(), ZoneOffset.UTC));
meeting.setSubject(callData.title());
meeting.setParticipants(buildMeetingParticipants(callData.organizerEmail(), callData.otherParticipants(), graphClient));
meeting.setAllowedLobbyAdmitters(AllowedLobbyAdmitterRoles.OrganizerAndCoOrganizersAndPresenters);
meeting.setRecordAutomatically(callData.recordCall());
return meeting;
}
private MeetingParticipants buildMeetingParticipants(String organizer, List<String> otherParticipants, GraphServiceClient graphClient) {
MeetingParticipants participants = new MeetingParticipants();
participants.setOrganizer(createMeetingParticipantInfo(organizer, graphClient, true));
participants.setAttendees(otherParticipants.stream()
.map(email -> createMeetingParticipantInfo(email, graphClient, false))
.toList());
return participants;
}
Then i created the application policy using powershell on portal azure
Install-Module ExchangeOnlineManagement
Connect-ExchangeOnline
New-ApplicationAccessPolicy `
-AppId 41874eeb-9f6f-45b6-bb20-becdcb0d461e `
-PolicyScopeGroupId group-for-meeintg@example.com `
-AccessRight RestrictAccess `
-Description "A sample description"
SDK Version
6.36.0
Latest version known to work for scenario above?
No response
Known Workarounds
No response
Debug output
Click to expand log
```</details>
### Configuration
_No response_
### Other information
_No response_
- Dominant language
- Java
- Stars
- 444
- Forks
- 154
- Avg merge
- 18h 28m
- Merged PRs (30d)
- 4
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoftgraph/msgraph-sdk-java
-
status:waiting-for-triage type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
microsoftgraph/msgraph-sdk-java#2610 ·
-
status:waiting-for-triage type:bug
Difficulty 3/5 1-2 days Newbie friendliness 55/100
microsoftgraph/msgraph-sdk-java#2656 ·
-
status:waiting-for-triage type:bug
Difficulty 4/5 3-5 days Newbie friendliness 38/100
microsoftgraph/msgraph-sdk-java#2654 ·
-
status:waiting-for-triage
Difficulty 4/5 3-5 days Newbie friendliness 35/100
microsoftgraph/msgraph-sdk-java#2639 ·
-
status:waiting-for-triage type:bug
Difficulty 3/5 1-2 days Newbie friendliness 35/100
microsoftgraph/msgraph-sdk-java#2589 · 1 comment ·
All issues in microsoftgraph/msgraph-sdk-java
Similar issues
-
certification
Difficulty 1/5 Under an hour Newbie friendliness 80/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Openbug ecr
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Needs: Triage Type: Feature request
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
github/copilot-sdk#2760 ·