Wawasan

Android Device Lifecycle Reporting: Reconcile Batch Records and Management Status

A missing or old status report is the wrong record for a handset that was replaced or retired. Map the batch record to the Android Management API device fields below, and leave every unread cell blank.

Diperbarui

Three unbranded handsets face-down on a wooden bench beside a closed gray notebook
Panduan
Dirancang berdasarkan kondisi penerapan nyata

What goes wrong when the batch record and the status report are not the same row?

A missing or old status report is the wrong record for a device that was replaced or retired. Confirm the batch identifier, the accepted version, the reported version, the report time, the asset assignment, and the exception owner before anyone treats the console row as current. This page is a field dictionary for that check. It is not an automatic sync, and it does not turn one vendor's console into a shared report. The batch side is the record described on lifecycle management: firmware, Android version, app package, policy version, accessory kit, and packaging state for each batch. The report side is the Device resource in the Android Management API, fetched on 2026-10-11. A console that is not that API does not inherit these field names. Copy a value only when the cited side states it. Otherwise leave the cell blank.

Three unbranded handsets face-down on a wooden bench beside a closed gray notebook
Three unbranded handsets lying face-down on a wooden bench beside a closed gray notebook.
Field dictionary. Blank cells were not in the page read for that column.
ItemBatch recordDevice resource, fetched 2026-10-11Leave blank when
Device idname, in the form enterprises/{enterpriseId}/devices/{deviceId}The console does not show that name
Batch idKept per batch, with the six items named on the lifecycle pageThe Device resource has no batch-id field in this read
Physical device across enrollmentspreviousDeviceNames lists earlier device names when the same physical device enrolled again. The serial number is the identifier used for that match. Names are in chronological orderThe device has not enrolled before, or serialNumber is absent
Serial numberhardwareInfo.serialNumber. On a personally-owned device running Android 12 and above, that field is the same value as enterpriseSpecificIdserialNumber is absent. The paragraph that defines hardwareInfo does not add a softwareInfoEnabled-style switch
ModelhardwareInfo.model, the model of the devicemodel is absent. Do not fill it from a catalog
Accepted versionFirmware, Android version, app package, and policy version recorded for that batchThe API page does not store the accepted batch baseline
Accessory kit and packaging stateRecorded for each batch on the lifecycle pageThis Device read has no field for either item
Reported policy versionappliedPolicyVersion, an int64, the version of the policy currently applied. appliedPolicyName is the name of that policyappliedPolicyVersion is absent
Named policypolicyName, enterprises/{enterpriseId}/policies/{policyId}. If policyName is not specified, the policy name for the device's user is applied. This field can be changed by a patchDo not read a blank policyName as 'no policy'
Reported Android version stringsoftwareInfo.androidVersion, the user-visible Android version string. softwareInfo is available only when softwareInfoEnabled is true in the device's policyThe switch is not true, or softwareInfo is absent
Reported build idsoftwareInfo.androidBuildNumber, the Android build ID string meant for display. Same softwareInfo switch as the version stringThe switch is not true, or androidBuildNumber is absent
API levelapiLevel, the API level of the Android platform version running on the deviceapiLevel is absent. Do not invent a level from the version string
Reported appapplicationReports[] when applicationReportsEnabled is true. packageName is the package name. versionName is the app version as displayed to the user. versionCode is the app version code, which that page says can be used to tell whether one version is more recent than anotherThe switch is not true, or that package is absent. Do not copy the batch app package into this cell
Report timelastStatusReportTime, RFC 3339, the last time the device sent a status reportThe field is absent. Do not substitute another timestamp
Policy fetch timelastPolicySyncTime, RFC 3339, the last time the device fetched its policy. A different event from the status reportThe field is absent
Deprecated compliance timelastPolicyComplianceReportTime is marked deprecated on the same pageDo not use it as the report time
Asset assignmentuserName, the resource name of the user that owns the device, enterprises/{enterpriseId}/users/{userId}A warehouse asset tag is not this field. Leave the tag blank until the project supplies it
Exception ownerThe lifecycle page says the matrix should name owners. It lists the app team for app updates, the MDM vendor for policy-console behavior, the OEM for hardware warranty, the partner for field support, and Vantora for batch records, reorders, and device-build coordinationNo person is named yet. The Device resource has no owner field in this read

Which timestamp is the status report?

Record lastStatusReportTime as the report time. The Device resource defines it as the last time the device sent a status report, in RFC 3339. lastPolicySyncTime is the last time the device fetched its policy. A fresh policy fetch does not fill the status-report cell. lastPolicyComplianceReportTime is marked deprecated on that page, so it is not the report time either. enrollmentTime is the time of enrollment, not a later status report. The page does not set a maximum age for lastStatusReportTime. If the project has a window, write that window next to the timestamp. If it has no window, leave the age cell blank and still keep the raw timestamp. An absent timestamp stays absent.

When can a reported version be read?

Read appliedPolicyVersion when it is present. It is the version of the policy currently applied, as an int64. appliedPolicyName is the name of the policy currently applied. policyName is the policy named for the device. Those are three fields. A difference between policyName and appliedPolicyName goes on the exception queue so a person can check it. It is not, by itself, a failed batch. Read softwareInfo only when softwareInfoEnabled is true in the device's policy. androidVersion is the user-visible Android version string. androidBuildNumber is the Android build ID string meant for display. apiLevel is a separate integer, the API level of the Android platform version running on the device. Do not derive one of these from another, and do not paste an example from the documentation into a device row. Read applicationReports only when applicationReportsEnabled is true. For each reported app, packageName is the package name, versionName is the version displayed to the user, and versionCode is the integer used to tell whether one version is more recent than another. The batch record's app package stays on the batch side until this array includes that package. Compare a batch policy version with appliedPolicyVersion only when both strings are present. If they differ, queue the row. The lifecycle page does not say that its policy-version string uses the same identifier as appliedPolicyVersion, so a difference is a check, not a verdict. If either side is absent, leave the comparison blank.

An unbranded handset standing in a cradle, screen dark, beside a foam tray with empty slots
An unbranded handset standing in a gray cradle, screen dark, next to a foam tray with empty slots.

Which rows belong on the exception queue?

Queue a row when the two sides do not name the same device, the same version, or the same report time, or when a required field is absent. Assign the exception owner from the matrix on the lifecycle page. Do not mark the row resolved by copying the batch value into the report column. State is separate from a missing row. On the Device resource, state is the state to apply. A patch accepts only ACTIVE or DISABLED. DELETED is requested with enterprises.devices.delete. appliedState is the state currently applied. ACTIVE means the device is active. DISABLED means it is disabled. LOST means it is lost, and that state is only possible on organization-owned devices. PROVISIONING means the device is being provisioned, and newly enrolled devices stay there until a policy is applied. DELETED is not returned by an API call. It is used in the final status report when the device acknowledges deletion. If the user deletes the work profile or resets the device, the state remains unknown to the server. A missing row is not LOST, and an unknown state after a reset is not a returned DELETED. The two rows below use demonstration identifiers. They are not devices we observed. Every version, time, assignment, and owner cell stays empty.

Two unbranded handsets with dark screens beside a coiled black cable
Two unbranded handsets with dark screens beside a coiled black cable on a gray table.
Demonstration identifiers only. Empty cells were not observed.
RowDevice or batch idAccepted versionReported versionReport timeAsset assignmentException owner
DemonstrationDEMO-BATCH-014
Demonstrationenterprises/demo/devices/demo-device-014

How do you recognize each exception without filling the blank?

Use the signal that was actually read. Do not promote a blank into a zero, a current timestamp, or a matching version.

Exception queue. The age window is a project input and is not set on this page.
ExceptionSignal you can checkDo not fill
No management rowThe batch record names a device, and the Device list or get has no matching nameA report time or a reported version
No batch rowA Device name exists and no batch record names itAn accepted version
Stale or missing reportlastStatusReportTime is absent, or older than the window the project writes downA number of days, or lastPolicySyncTime copied into the report-time cell
Policy name differs from applied namepolicyName and appliedPolicyName are both present and are not the same nameA pass or fail for the batch
Version strings differThe batch policy version and appliedPolicyVersion are both present and are not the same stringA verdict that they name the same object
Software or app report gated offsoftwareInfoEnabled or applicationReportsEnabled is not trueThe batch Android version or app package copied into the reported column
Lost, disabled, or deletion acknowledgedappliedState is LOST, DISABLED, or the device acknowledged deletionLOST from a missing row, or DELETED when a reset left the server state unknown

When this does not apply

Skip this page when the job is to wipe a device and hand it over. That check stays on Android device deprovisioning and handover. Skip it when the job is the supply window, spares, or reorder baseline. Those records stay on the lifecycle page. Skip these field names when the console is not the Android Management API. This page does not claim a live status feed, a cross-console sync, or one report layout for every management product. What a device still has to carry beyond MDM enrollment, so the batch can survive a later reorder, stays on MDM-ready vs rollout-ready Android devices.

What to send us

Send us the project model and build, the app package name, the management platform, and which of these fields the console returns: device name, appliedPolicyVersion, lastStatusReportTime, softwareInfo, and applicationReports. We reply within 1 business day. The reply names which exception rows still need an owner, and which cells stay blank. Use the button on this page. It opens the project brief with those inputs.

Method and sources

The dictionary is a reading of two pages, not a device test and not a ranking. The Device resource was fetched on 2026-10-11 from the Android Management API enterprises.devices reference. The batch fields are the ones stated on lifecycle management, read in the current page source on 2026-10-14, which matches the fetch of that URL on 2026-10-11. The demonstration ids were written for this table. They are not serial numbers, not enrollments, and not prices. Updated October 2026.

Pertanyaan Umum

Is lastStatusReportTime the same event as lastPolicySyncTime?

No. The Device resource defines lastStatusReportTime as the last status report and lastPolicySyncTime as the last policy fetch. A new policy fetch does not fill the status-report cell.

Does a missing Device row mean the device is LOST?

No. LOST is an appliedState, and the same page says it is only possible on organization-owned devices. A missing row stays a missing row.

Can the batch Android version fill a blank softwareInfo cell?

No. softwareInfo is available only when softwareInfoEnabled is true. Copying the batch string into the reported column hides the gap.

Ceritakan alur kerja dan aturan Anda.

Kami mengubah persyaratan menjadi perangkat yang siap diterapkan.