ABM has introduced a target date for moving a device from one MDM server to a new one.
However, there's nothing in the API for setting that when you use the API to move MDM server
Am I missing something or does it just not exist?
Thanks
Caroline
Explore the intersection of business and app development. Discuss topics like device management, education, and resources for aspiring app developers.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Recently, we have encountered some users who have been unable to open the enterprise signature application after upgrading to version 18.3.2, without an IPS file. Through system logs, we found that signature verification has occurred SecKeyVerifySignature failed: Error Domain=NSOSStatusErrorDomain Code=-50 "rsa_pub_crypt failed, ccerr=-7" UserInfo={numberOfErrorsDeep=0, NSDescription=rsa_pub_crypt failed, ccerr=-7} Waiting for the information, I will provide the obtained system logs below. The application package name that crashed is com. mobile. moa
aa.txt
new
Hello,
I'm currently working on implementing app installation features, referencing the app.managed.yaml declaration on GitHub: https://github.com/apple/device-management/blob/0a4527c5ea21825fd23e08273ccdb9e2302458ce/declarative/declarations/configurations/app.managed.yaml
My question pertains to the InstallBehavior.Version key. The current specification indicates its type as <integer>:
key: Version
title: Version
supportedOS:
iOS:
introduced: '26.0'
macOS:
introduced: '26.0'
visionOS:
introduced: '26.0'
type: <integer>
Is there a way to specify the app version using a string format, such as x.y.z, instead of the integer (App Store External Version Identifier - EVID)?
Allowing for a simpler version specification would make app version management through MDM more flexible and efficient. I believe this would significantly streamline the deployment and operation of Apple devices within organizations.
Any guidance or consideration for this would be greatly appreciated.
Thank you.
Hello, I have implemented my virtual meeting extension and my application shows no issues in the calendar application, with a join button displayed. Everything is great!.
However, with the help of EKEventEditViewController and EKEvent instances, when creating an event from the main target of the application using EventKitUI, the event will not be displayed as a virtual meeting.
I have seen that other applications like Zoom have already implemented this, and I find it difficult to find relevant documentation on how to link events created by the program to virtual meetings.
How do I set an event as a meeting when I want to add it to the main program? In addition, the function in the VirtualConferenceProvider.swift file of the extension program fetchVirtualConference(identifier: EKVirtualConferenceRoomTypeIdentifier, completionHandler: @escaping (EKVirtualConferenceDescriptor?, (any Error)? )->Void) How are the parameters in this function obtained? It's impossible for every conference related link to be the same
"To receive payments from Apple, you must add a bank account."
As an Apple "Individual" developer, can I accept payments to my corporate card?
When I try to sign in Managed Apple ID in supervised device there appears a prompt stating that "Apple ID" is a work account.This account must be signed in as a work account on this device.When I click continue it takes to VPN and device management tab where MDM profile already exists.
Note:The managed Apple ID has a ICloud subscription for it.
When I remove the subscription for the Apple ID and try to sign in, it works.
Kindly help on this or advise on any additional steps required to enable sign in for managed Apple ID in this scenario
Topic:
Business & Education
SubTopic:
Device Management
Tags:
Apple Business Manager
Device Management
Is there any mechanism to restrict camera usage on a user-owned device, once they have opted in, consented to the restriction, and installed a management profile?
Documentation suggests it was possible with allowCamera, but has be deprecated on unsupervised devices. Am I understanding correctly that it's simply not possible anymore unless the device is supervised?
short version question:
why some users after deleting and downloading back my in-house app, cannot start the new process for approving developer, but instead it tries to start and then crashes immediately?
long question version
I am maintaining an in-house distributed enterprise app.
due to update in iOS 18 update here users need to trust the developer via a new procedure that involves restarting device and inserting the phone code.
after thousands (more or less 30.000) of users with no issue at all, some of them has this problem, the old (expired)trust seems to be persistent and never updated.
Standard events
a user deletes the app via settings > general > VPN & device management or via classic persistent touch procedure
checks no other presence of the app is on the device via spotlight.
since it is the only app with "MyDeveloperName" on the phone, if users goe back to VPN & device management screen, no app or developer will be present.
user downloads new version of the app. If taps directly on the icon there is a system alert with says the developer must be trusted.
a this point in settings > general > VPN & device management you can find a line with developer name, tapping on it we find a screen where user finds a white button with BLUE message "authorize MyDeveloperName" and follows procedure.
My issue is that some users get following different behavior, and I do not understand why:
❌ tapping on downloaded app icon: no alert, but app tries to start then crashes.
❌ going in VPN & device management screen there is only RED write button "delete app"
in both paths, working and not working, the app results "verified" in VPN & device management screen (Apple says old authorizations are preserved.)
Hi,
We're having problems starting an Ad Hoc ipa on an iPad with iOS 12.7.7 and 12.7.8, probably iOS 12 in general. The iPad's UUID is added to the certificate. And we don't have problems with iOS versions > iOS 12. Here is the anonymized Console Log:
default 09:05:12.088994+0100 SpringBoard immediate edge swipe: failed
default 09:05:12.095189+0100 SpringBoard Icon touch began: <private>
default 09:05:12.096204+0100 SpringBoard Found a reasonable launch image for <private>, not pre-warming SplashBoard. Load image into the snapshot instance.
default 09:05:12.117737+0100 powerd Activity changes from 0x2 to 0x1. UseActiveState:1
default 09:05:12.118572+0100 powerd hidActive:1 displayOff:0 assertionActivityValid:0 now:0xcb6 hid_ts:0xcb6 assertion_ts:0x0
default 09:05:12.145354+0100 backboardd [HID] [MT] dispatchEvent Dispatching event with 1 children, _eventMask=0x23 _childEventMask=0x3 Cancel=0 Touching=0 inRange=0
default 09:05:12.152820+0100 SpringBoard Icon tapped: <private>
default 09:05:12.158236+0100 dasd Trigger: <private> is now [1]
default 09:05:12.159538+0100 dasd Don't have <private> for type 1
default 09:05:12.170128+0100 trustd cert[0]: SubjectCommonName =(leaf)[]> 0
default 09:05:12.170407+0100 trustd cert[0]: LeafMarkerOid =(leaf)[]> 0
default 09:05:12.182388+0100 trustd OCSPSingleResponse: nextUpdate 0.54 days ago
default 09:05:12.186084+0100 trustd OCSPSingleResponse: nextUpdate 0.62 days ago
default 09:05:12.187067+0100 SpringBoard Trust evaluate failure: [leaf IssuerCommonName LeafMarkerOid SubjectCommonName]
default 09:05:12.238604+0100 trustd Task <TASK_UUID_REDACTED_1>.<1> resuming, QOS(0x19)
default 09:05:12.240650+0100 trustd TIC TCP Conn Start [12:0xADDR_REDACTED]
default 09:05:12.241136+0100 trustd [C12 Hostname#HASH_REDACTED:80 tcp, pid: PID_REDACTED, url hash: HASH_REDACTED] start
default 09:05:12.245884+0100 trustd TIC TCP Conn Start [13:0xADDR_REDACTED]
default 09:05:12.246361+0100 trustd [C13 Hostname#HASH_REDACTED:80 tcp, pid: PID_REDACTED, url hash: HASH_REDACTED] start
default 09:05:12.256520+0100 trustd nw_connection_report_state_with_handler_locked [C12] reporting state failed error Network is down
error 09:05:12.256978+0100 trustd TIC TCP Conn Failed [12:0xADDR_REDACTED]: 1:50 Err(50)
error 09:05:12.262697+0100 trustd Task <TASK_UUID_REDACTED_1>.<1> HTTP load failed (error code: -1009 [1:50])
error 09:05:12.271646+0100 trustd Task <TASK_UUID_REDACTED_1>.<1> load failed with error Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
default 09:05:12.271898+0100 trustd Failed to download ocsp response http://ocsp.apple.com/ocsp03-wwdrg311/... with error Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
default 09:05:12.280643+0100 SpringBoard Activating <private> from icon
default 09:05:12.281399+0100 CommCenter #I CTServerConnection from pid PID_REDACTED has closed (conn=0xADDR_REDACTED)
default 09:05:12.513629+0100 SpringBoard Bootstrapping com.example.myapp with intent foreground-interactive
default 09:05:12.514084+0100 assertiond Submitting new job for "com.example.myapp" on behalf of <BKProcess: 0xADDR_REDACTED; SpringBoard; com.apple.springboard; pid: PID_REDACTED; ...>
default 09:05:12.514909+0100 assertiond Submitted job with label: UIKitApplication:com.example.myapp[REDACTED][REDACTED]
error 09:05:12.516769+0100 SpringBoard [com.example.myapp] Bootstrap failed with error: <NSError: 0xADDR_REDACTED; domain: BKSProcessErrorDomain; code: 1 (bootstrap-failed); reason: "Failed to start job">
error 09:05:12.516935+0100 SpringBoard Bootstrapping failed for <FBApplicationProcess: 0xADDR_REDACTED; com.example.myapp; pid: -1> with error: Error Domain=BKSProcessErrorDomain Code=1 "Unable to bootstrap process with bundleID com.example.myapp"
default 09:05:12.517589+0100 SpringBoard <FBApplicationProcess: 0xADDR_REDACTED; com.example.myapp; pid: -1> exited.
default 09:05:12.542638+0100 SpringBoard Application process state changed for com.example.myapp: <SBApplicationProcessState: 0xADDR_REDACTED; pid: -1; taskState: Not Running; visibility: Unknown>
default 09:05:13.072994+0100 SpringBoard Front display did change: <SBApplication: 0xADDR_REDACTED; com.example.myapp>
Is there any know problem with running Ad Hoc ipas on iOS 12?
Thanks
Christian
"If your app includes any links outside the app, or offers any in-app or other purchasing opportunities, make sure these are behind a parental gate"
Super Awesome and Kidoz are proving with a parental gate on ad click and they also claim that all ads are manually approved (another criteria for ads in Kids apps).
So these two are the only ad networks we can use moving forward. Or we can use ad networks like Admob as well?
I dont intend not to be in Kids category - so leaving Kids category is not a choice.
We want to set key-value pair (installation_token: xxxxx) into an app installed by MDM.
Formerly we could set the key-value using Settings MDM command like this.
<dict>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>Settings</string>
<key>Settings</key>
<array>
<dict>
<key>Configuration</key>
<dict>
<key>installation_token</key>
<string>xxxxxxx</string>
</dict>
<key>Identifier</key>
<string>com.cloudflare.cloudflareoneagent</string>
<key>Item</key>
<string>ApplicationConfiguration</string>
</dict>
</array>
</dict>
We can still use this for the apps installed withInstallApplication MDM command, however we cannot apply this configuration into the app using Declarative Device Management. When we try it, we got an error like this.
<dict>
<key>CommandUUID</key>
<string>.............</string>
<key>Settings</key>
<array>
<dict>
<key>ErrorChain</key>
<array>
<dict>
<key>ErrorCode</key>
<integer>12008</integer>
<key>ErrorDomain</key>
<string>MDMErrorDomain</string>
<key>LocalizedDescription</key>
<string>Could not modify apps managed by Declarative Device Management.</string>
<key>USEnglishDescription</key>
<string>Could not modify apps managed by Declarative Device Management.</string>
</dict>
</array>
<key>Identifier</key>
<string>com.cloudflare.cloudflareoneagent</string>
<key>Item</key>
<string>ApplicationConfiguration</string>
<key>Status</key>
<string>Error</string>
</dict>
</array>
How can we work with managed application configuration with DDM?
Hello All,
I come to ask a question that I haven't been able to find the docs. I continue to work on implementing declarative management and while working there is a question/concern I have.
I have noticed that during some destructive testing, if the device is attempting to fetch a configuration and the server responds with a 503 (or any server related error) then the device will wipe all configurations and attempt to reapply them.
Is there any way to prevent this by intercepting status codes or would the only real solution be to force down a temp/test config if the real config can't be fetched from the server?
I found that "search" endpoint is recently added to api.ent.apple.com : https://developer.apple.com/documentation/devicemanagement/get-catalog-search-results
However it seems we cannot find custom apps using this API even with sToken.
Is it not suppoted yet?
Thank you
Hello All,
I am currently attempting to get application config working with enterprise apps but it seems as though the asset config is not applying at all. While the asset and application install correctly it does not seem that the config is read at all judging from the status message returned.
"StatusItems" : {
"app" : {
"managed" : {
"list" : [
{
"name" : "apps",
"config-state" : {
"app-config-state" : {
"state" : "unknown"
}
},
"identifier" : "app.identifier",
"version" : "3.2",
"short-version" : "3.2.0",
"state" : "managed",
"declaration-identifier" : "dec-identifier"
}
]
}
}
},
"Errors" : [
]
}
The asset file being sent down is as follows:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Config 1</key>
<string>Value 1</string>
<key>Config 2</key>
<string>Value 2</string>
<key>Config 3</key>
<string>Value 3</string>
</dict>
</plist>
This is the config report being sent back by the device after everything has been fetched:
"StatusItems" : {
"management" : {
"declarations" : {
"activations" : [
{
"active" : true,
"identifier" : "group.activation.payload",
"valid" : "valid",
"server-token" : "56792E4AE25C3286640B45E6BD265AE97545B2B87F90A6355919FD8B2E3C3AB3"
}
],
"configurations" : [
{
"active" : true,
"identifier" : "app.install",
"valid" : "valid",
"server-token" : "34D7ACECAE16EE9EEAC0630FF2FF85524FFBB5BA3CB18CFB6296FBC860368C85"
},
{
"active" : true,
"identifier" : "ios.policy.subscription.list",
"valid" : "valid",
"server-token" : "376913E11BE7D26EC745B3B68C6FA94C4FC061B1B736D143EBE0F12FF73ADFF8"
}
],
"assets" : [
{
"active" : true,
"identifier" : "app.config.reference",
"valid" : "valid",
"server-token" : "1CFBE30EB56309005F742D667B80242E6A3CDC08ED228D0BC5F87749C6BBAB77"
}
],
"management" : [
]
}
},
"app" : {
"managed" : {
"list" : [
{
"state" : "downloading",
"declaration-identifier" : "app.install",
"identifier" : "app.identifier",
"name" : "apps",
"config-state" : {
"app-config-state" : {
"state" : "unknown"
}
}
}
]
}
}
},
"Errors" : [
]
}
Additional info would be useful, though a sysdiagnosis will be submitted to feedback as well.
Config did apply correctly when sending down through Install application command
Hi.
I am writing a little MDM application.
Despite the basic task (add a password for 'remove profile' button in settings), it seems I am stuck with a problem:
When I try to enroll my device with enrollment.mobileconfig file, Apple Configurator app, I receive an error
The profile “Enrollment Profile” could not be installed because it is invalid.
Make sure the profile is valid and try installing it again.
The original architecture of my .mobileconfig contains of two payloads (com.apple.security.scep , com.apple.mdm), and it works correctly. However, when I try to add a third payload of com.apple.profileRemovalPassword , I receive the error stated above.
From logs collected on iPhone, here's what was found :
Failed to parse profile data. Error: NSError:
Desc : The profile “Enrollment Profile” is invalid.
Sugg : A profile containing an MDM payload must be removable.
US Desc: The profile “Enrollment Profile” is invalid.
US Sugg: A profile containing an MDM payload must be removable.
Domain : MCProfileErrorDomain
Code : 1000
Type : MCFatalError
Params : (
"Enrollment Profile"
)
...Underlying error:
NSError:
Desc : A profile containing an MDM payload must be removable.
US Desc: A profile containing an MDM payload must be removable.
Domain : MCProfileErrorDomain
Code : 1000
Type : MCFatalError
Extra info:
{
isPrimary = 1;
}
My main dictionary contains
HasRemovalPasscode
Also, I have tried playing around with
PayloadRemovalDisallowed
setting it to true and false, however, I keep getting the same error message.
There is also a second error produced:
Profile MCConfigurationProfile, version 1:
Display Name: “Enrollment Profile”
Description : “***”
Identifier : ***
UUID : ***
Organization: ***
Is Stub : No
Locked : Yes
Removal passcode present
Encrypted : No
Trusted : 0
Signed : No
Device Type : 0
Payloads:
Payload MCSCEPPayload, version 1
Description : “***”
Identifier : ***
UUID : ***
Type : com.apple.security.scep
Display name: ***
Organization: ***
Payload MCMDMPayload, version 1
Description : “***”
Identifier : ***
UUID : ***
Type : com.apple.mdm
Organization: ***
Payload MCRemovalPasswordPayload, version 1
Identifier : com.examp Can't parse profile: <decode: missing data>
The code for com.apple.profileRemovalPassword is taken from apple documentation (https://developer.apple.com/documentation/devicemanagement/profileremovalpassword)
I have also tried the automatic way - creating it from Apple Configurator, so it is correct in terms of syntax 100%.
Several important notes:
Creating a fresh new profile with just password removal protection single payload allows to perform a download of the profile
If I comment out the whole com.apple.mdm payload block, I will be able to download this profile on iPhone also
The com.apple.mdm block is also valid by itself, and works correctly
I have tried implementing other types of "dummy" payloads - for example com.apple.dock
<dict>
<key>PayloadType</key>
<string>com.apple.dock</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>com.example.test.dock</string>
<key>PayloadUUID</key>
<string>22222222-3333-4444-5555-666666666666</string>
<key>PersistentApps</key>
<array/>
</dict>
And everything worked out fine.
So my hypothetical conclusion out of these four notes might be in some type of interconnection between mdm and profileRemovalPassword, which isn't really listed anywhere? Or am I missing something ? Thank you in advance.
We are going to replace our iPhone SE to iPhone 16e.
The issue is that we are unable to install an in-house app on the new iPhone 16e. The app works on the iPhone SE
Both phones run on the same iOS version (18.5)
Has anyone else experienced the same issue?
I initially thought the iPhone 16e was the successor to the iPhone SE
Topic:
Business & Education
SubTopic:
Device Management
Hello world! First post here.
Developing my first app. It primarily targets supervised and MDM managed devices. A few questions:
For supervised devices, is serial number available? I want to get the number and use it for app auto activation
Is MDM required for supervised devices? Or, as long as a device is enrolled through Apple Business Manager?
Which capacity shall I request for the app?
Thanks so much!
Hello, this may not be the correct place to ask this question so I apologize in advance if this is the case.
We are currently having some issues when attempting to restore device back ups via iCloud that where previously enrolled to our MDM solution, as upon the restore no app data seems to be persisted over (we have tested restoring the backup on the same device and we have been able to have data persist between wipes)
On the initial device we have ensured that the restrictions
allowCloudKeychainSync
allowManagedAppsCloudSync
are set to true, and can see that the initial devices back up has the app data backed up, yet despite this data is not persisted when restoring from back up on a new device.
On the device where the back up was initially done when restoring the applications are applied but indicated that they must be re-installed via our management console, once the app has been uninstalled and reinstalled the old data does show up, when applied to the new device our mdm solution pushes down the app.managed config but the device treats it as a new install.
Could this possibly be due to us using Device Licensing when assigning apps? Or is it due to the intial device only performing a token update request when restoring and the new device going through the entire checkin proccess?
Both devices are provisioned via DEP, and applications where assigned initially via VPP
Any insight on this would be useful
(For reference this is an MDM solution of our own making so we are attempting to sus out if there is a configuration issue we could be overlooking).
Hi guys, I need to configure a VPN to work only for specific apps. I already have a supervised iPhone, and I’ve successfully configured the VPN, but right now it applies to the whole phone. I need it to work just for some apps.
I tried using both Apple Configurator and iMazing, but I can’t find this option there.
Summary:
When applying a configuration profile that uses allowListedAppBundleIDs to permit a defined set of apps, essential Apple Watch apps are unexpectedly removed from the paired Watch — even though their associated iPhone bundle IDs are explicitly included.
This issue occurs with a minimal profile, and has been consistently reproducible on the latest versions of iOS and watchOS.
Impact:
This behavior severely limits the use of Apple Watch in managed environments (e.g., education, family management, accessibility contexts), where allowlisting is a key control mechanism. It also suggests either:
Undocumented internal dependencies between iOS and watchOS apps, or
A possible regression in how allowlists interact with Watch integration.
Steps to Reproduce:
Create a configuration profile with a Restrictions payload containing only the allowListedAppBundleIDs key.
Allow a broad list of essential system apps, including all known Apple Watch-related bundle IDs:
com.apple.NanoAlarm
com.apple.NanoNowPlaying
com.apple.NanoOxygenSaturation
com.apple.NanoRegistry
com.apple.NanoRemote
com.apple.NanoSleep
com.apple.NanoStopwatch
com.apple.NanoWorldClock
(All the bundles can be seen in the Attached profile)
Install the profile on a supervised or non-supervised iPhone paired with an Apple Watch.
Restart both devices.
Observe that several core Watch apps (e.g. Heart Rate, Activity, Workout) are missing from the Watch.
Expected Behavior:
All apps explicitly included in the allowlist should function normally. System apps — especially those tied to hardware like Apple Watch — should remain accessible unless explicitly excluded.
Actual Behavior:
Multiple Apple Watch system apps are removed or hidden, despite their iPhone bundle IDs being listed in the allowlist.
Test Environment:
iPhone running iOS 18
Apple Watch running watchOS 11
Profile includes only the allowListedAppBundleIDs key
Issue confirmed on fresh devices with no third-party apps
Request for Apple Engineering:
Please confirm whether additional internal or undocumented bundle IDs are required to preserve Apple Watch functionality when allowlisting apps.
If this behavior is unintended, please treat this as a regression or bug affecting key system components.
If intentional, please provide formal documentation listing all required bundle IDs for preserving Watch support with allowlisting enabled.
Attachment:
.mobileconfig profile demonstrating the issue (clean, minimal, reproducible)
Attached test profile = https://drive.google.com/file/d/12YknGWuo1bDG-bmzPi0T41H6uHrhDmdR/view?usp=sharing
Topic:
Business & Education
SubTopic:
Device Management
Tags:
Managed Settings
Apple Watch
Device Management