Forum Discussion
Common identifier between AMAPI & Require for setup app for validation
We are enrolling devices using AMAPI by generating a QR code with an assigned policy either for work profile or fully managed enrollment.
During enrollment, the device prompts for a require for setup app, which, after configuration, returns RESULT_OK, marking the setup as complete and finalizing the device enrollment.
Before returning RESULT_OK, To identify the enrolling device, the backend gets the device ID and enterprise ID from the Pub/Sub provisioning notification. The device ID (which matches the GSF ID) is then sent by the require for setup app to the backend for validation. This identifier is also used to enforce enrollment limits based on the enterprise license count.
The Issue:
Up to Android 14, retrieving the GSF ID was possible. However, in Android 15, it now returns null.
Question:
Is there an alternative identifier that can be used to identify the enrolling device—one that the backend can retrieve and that the setup app can also access during enrollment?
Below is the information we receive from Pub/Sub when a device is enrolled:
{
"name": [*Hidden for privacy reasons]
"managementMode": "PROFILE_OWNER",
"state": "PROVISIONING",
"enrollmentTime": "2025-04-04T06:17:02.751Z",
"lastPolicySyncTime": "2025-04-04T06:17:02.817Z",
"softwareInfo": {
"androidVersion": "15",
"androidDevicePolicyVersionCode": 10323580,
"androidDevicePolicyVersionName": "128.32.3 (10323580)",
"androidBuildNumber": "AP3A.240905.015.A2",
"deviceKernelVersion": "5.15.149-android13-8-00010-gc2e0ba41ba85-ab12040008",
"bootloaderVersion": "unknown",
"androidBuildTime": "2025-03-11T13:26:50Z",
"securityPatchLevel": "2025-03-01",
"primaryLanguageCode": "en-IN",
"deviceBuildSignature": "c9009d01ebf9f5d0302bc71b2fe9aa9a47a432bba17308a3111b75d7b2143456",
"systemUpdateInfo": {
"updateStatus": "UP_TO_DATE"
}
},
"hardwareInfo": {
"brand": "Redmi",
"hardware": "mt6835",
"deviceBasebandVersion": "MOLY.NR17.R1.TC8.PR2.SP.V1.P51,MOLY.NR17.R1.TC8.PR2.SP.V1.P51",
"manufacturer": "Xiaomi",
"serialNumber": [*Hidden for privacy reasons]
"model": "23124RN87I",
"enterpriseSpecificId": [*Hidden for privacy reasons]
},
"policyName": [*Hidden for privacy reasons]
"memoryInfo": {
"totalRam": "5865836544",
"totalInternalStorage": "806965248"
},
"userName": [*Hidden for privacy reasons]
"enrollmentTokenName": [*Hidden for privacy reasons]
"securityPosture": {
},
"ownership": "PERSONALLY_OWNED"
}
*Updated by Community admin - removed due to privacy reasons 4 April
5 Replies
- Emilie_BGoogle Community Manager15 days ago
Hello shivam11 - it's been a little while so, I hope you're doing well!
I just wanted to reach out and check if you had an update; kirk-467 and collin-93 have provided some useful advice only recently (thank you both 😉) so, it'd be great to know what's been happening on your end.
Looking forward to reading your update,
Emilie
- kirk-467Level 1.6: Donut17 days ago
With Android 15 no longer providing the GSF ID, you can use the enterpriseSpecificId or the device’s serialNumber (if accessible) as a unique identifier for enrollment validation. Both are included in the Pub/Sub provisioning notifications and can be retrieved by the setup app during enrollment, allowing the backend to enforce license limits and track devices reliably. Make sure your setup app handles null or missing values gracefully for devices where these fields might be restricted.
- collin-93Level 1.6: Donut18 days ago
Thanks for sharing the details! Since GSF ID is no longer available in Android 15, you might consider using alternative stable identifiers such as the Enterprise Specific ID from the enrollment payload or the device serial number (if accessible). Both can be retrieved by the backend and the setup app during enrollment, helping enforce license limits and validate devices.
- soumyaLevel 1.5: Cupcake3 months ago
Hi we also facing same issue without gsf id we didn't get any device details and any do any action on device without gsf id how we can do if not get gsf id
- jeremyLevel 3.0: Honeycomb8 months ago
You could add the a device unique identifier to the managed configuration of the application and retrieve it inside your app programmatically. That's how we do it on our side, send back any identifier to the device using managed configuration
Related Content
- 2 years ago
- 4 months ago