We are experiencing an issue with Apple Business Manager (ABM) synchronization that is blocking our device management workflow.
Issue Description:
During the ABM sync process in our MDM, we receive the error:
"ABM Terms and Conditions not signed."
What We’ve Checked:
Logged into the ABM portal as the Administrator and confirmed that the latest Terms and Conditions.
Attempted to renew the ABM token on our existing server, but the same error message continues to appear in MDM. Tried creating a brand new ABM server integration, which also fails with the same error.
We checked with our MDM provider and they shared the logs, response received from ABM. It says T_C_NOT_SIGNED. But we have already accepted all the new Terms in ABM.
We would appreciate any help in resolving this issue or guidance on what steps to take next.
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
Hi,
My client has already developed an ios app and they need an enterprise account to publish the app. What are the procedures to create enterprise account?
Why don't obtain equipment list (https://mdmenrollment.apple.com/server/devices) interface returns "device_family" contour information. This interface only returns some fields, and many field values are not returned
can you make a profit with the seed program
Topic:
Business & Education
SubTopic:
General
I am a developer distributing an enterprise app.
Recently, some users have intermittently encountered an error message on iOS 18.5 stating:
"Unable to install this app because its integrity could not be verified."
While the issue could not be reproduced on iPhone 15 / iOS 18.5, we have received reports that it does occur on the following devices:
iPhone 14 / iOS 18.5,
iPhone 14 Pro / iOS 18.5,
iPhone 14 Plus / iOS 18.5,
iPhone 16 Pro Max / iOS 18.5,
Are there any known issues or recommended solutions regarding this behavior?
Thank you in advance for your assistance.
Topic:
Business & Education
SubTopic:
General
We install two in-house apps.
The first app is installed using the standard in-house method, while the second app is installed via MDM commands.
Both apps share the same Team ID and use Keychain sharing to exchange data.
However, when the MDM profile is deleted and the second app is removed, the first app intermittently encounters issues and does not function properly.
However, when the MDM mobileconfig is reinstalled and the second app is installed again, the first app that was not functioning starts working properly.
We have thoroughly reviewed the logs but have not been able to find a solution.
Your assistance would be greatly appreciated.
We have extracted and attached the device logs that were generated during the error occurrence.
log.log
Hi,
I have created a game for all platforms (except VisionOS) and would like to release each version separately. Can I upload the iOS version without uploading the other versions?
Thanks,
Dan Uff
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
Three months ago I molded a mold program. I believe could be tweaked and tried unlined zero code. swear. anyway I would like to scale with some people if I can go to commercial area code phoned series and calls.and if I have rights. but my next moves for them. on iOS I think they should have a seri settings. where they can call seri.on settings, and it jump many codes-and navigation is hard. plus I think seri can help in settings expecially since seri settings is verbal drop. if the words fit or are similar it cues goes to but you have to hard call the switch.so there’s no hey no Sami where you setting no Sammy right I think it could skip cauldron and everything verbally either. Seri settings I think iOS should try it.
Topic:
Business & Education
SubTopic:
Device Management
Hi Apple Team & Community,
The new Introduction of Platform SSO during ADE Enrollment is Great And we tried implementing this. As a Rule mentioned in the Documentation Initially MDM Server should send 403 response with Response Body adhering to ErrorCodePlatformSSORequired when HTTP Header for MachineInfo request contains MDM_CAN_REQUEST_PSSO_CONFIG and set to true
There are contradictory claims mentioned in Document,
In Process Platform SSO Required Response it is mentioned that MDM Server should send body as JSON Object for ErrorCodePlatformSSORequired Example below
>>>>> Response
HTTP/1.1 403 Forbidden
Content-Type: application/json
Content-Length: 558
{
"code": "com.apple.psso.required",
"description": "MDM Server requires the user to authenticate with Identity Provider - BY MEMDM",
"message": "The MDM server requires you to authenticate with your Identity Provider. Please follow the instructions provided by your organization to complete the authentication process - BY MEMDM",
"details": {
"Package": {
"ManifestURL": "https://platform-sso-node-server.vercel.app:443/manifest"
},
"ProfileURL": "https://platform-sso-node-server.vercel.app:443/profile",
"AuthURL": "https://platform-sso-node-server.vercel.app:443/auth"
}
}
But in the same Document a Sample HTTP Response was Provided but seems to be XML format as below
>>>>> Response
HTTP/1.1 403 Forbidden
Content-Type: application/xml
Content-Length: 601
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Code</key>
<string>com.apple.psso.required</string>
<key>Details</key>
<dict>
<key>ProfileURL</key>
<string>https://mdmserver.example.com/psso.mobileconfig</string>
<key>Package</key>
<dict>
<key>ManifestURL</key>
<string>https://mdmserver.example.com/psso-app.plist</string>
</dict>
<key>AuthURL</key>
<string>https://idp.example.com/authenticate</string>
</dict>
</dict>
</plist>
From Github I assume that both Response Types are welcomed hence I tried with Both
Followed in JSON Mode, I redirected the HTTP request if MachineInfo contains MDM_CAN_REQUEST_PSSO_CONFIG and set to true to https://platform-sso-node-server.vercel.app/redirectedDEPJSON
Followed in XML Mode, I redirected the HTTP request if MachineInfo contains MDM_CAN_REQUEST_PSSO_CONFIG and set to true to https://platform-sso-node-server.vercel.app/redirectedDEPXML
In both Response Modes OS is not proceeding after and a error Stating Enrollment with Management Server Failed , Forbidden request (403) appears
Can someone kindly guide on where I missed, or is this any OS Bug in Tahoe 26?
Topic:
Business & Education
SubTopic:
Device Management
Tags:
Apple Business Manager
Device Management
Platform SSO
I'm currently implementing a managed app using the new AppConfig specification. I referred to Apple's official documentation: Specifying and decoding a configuration.
Based on the example provided in the "Publish your configuration specification" section, I structured my application configuration plist like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>configuration</key>
<dict>
<key>account</key>
<dict>
<key>username</key>
<string>test user</string>
<key>password</key>
<string>test 123</string>
</dict>
<key>domain</key>
<string>test example.com</string>
</dict>
</dict>
</plist>
When I deployed this configuration via my MDM server, the server reported valid for the activation, configuration and asset (which is the plist), but the configuration did not reflect or apply within my app. My app was unable to retrieve these settings.
After some troubleshooting, I found that removing the top-level <key>configuration</key> wrapper resolved the issue. The following plist structure successfully pushed the configuration to my app:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>account</key>
<dict>
<key>username</key>
<string>test user</string>
<key>password</key>
<string>test 123</string>
</dict>
<key>domain</key>
<string>test example.com</string>
</dict>
</plist>
My question is:
Is the inclusion of the <key>configuration</key> wrapper (as shown in the Apple documentation example) incorrect for the current AppConfig implementation? Or is this structure intended for a future release (e.g., iOS 26 or beyond) and the documentation implicitly refers to it, causing confusion for current implementation?
Any clarification would be greatly appreciated!
Thank you!
We have an office application used internally within our enterprise. The Provisioning Profiles (PP) for the app were about to expire, so we updated the PP and released a new version. However, we've encountered an issue where some users did not update their phones in time. After the app expired, they found it unusable and downloaded the new version, but the newly downloaded app also crashes on launch. Restarting the phone does not resolve the issue, and this primarily occurs on iOS 18.3.2. What could be the cause of this problem, and how should we address it?
Topic:
Business & Education
SubTopic:
General
The MDM was installed correctly and other commands are working fine. I have tried to send the InstallProfile with custom configuration to the device, but it was displayed as not signed. How to sign the payload for InstallProfile command and where it should be included in the payload / command?
The payload I sent to a mac with MDM installed:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Payload</key>
<data>
BASE64_HERE
</data>
<key>RequestType</key>
<string>InstallProfile</string>
</dict>
</plist>
Decoded base64 from the payload above was:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadContent</key>
<dict>
<key>com.example.myapp</key>
<dict>
<key>test_key</key>
<string>test_value</string>
</dict>
</dict>
<key>PayloadDisplayName</key>
<string>My App Configuration</string>
<key>PayloadIdentifier</key>
<string>com.org_name.mdm.profile.uq_id_here</string>
<key>PayloadType</key>
<string>com.apple.ManagedClient.preferences</string>
<key>PayloadUUID</key>
<string>UUID4 HERE</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDisplayName</key>
<string>App Configuration Profile</string>
<key>PayloadIdentifier</key>
<string>com.example.myapp.config</string>
<key>PayloadOrganization</key>
<string>ORG NAME</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>ANOTHER UUID4 HERE</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
System logs from Device:
[*] Processing server request: InstallProfile for: <Device>
[ERROR] System keychain reported it is unavailable but will proceed as if it is.
[*] === CPF_InstallProfile === com.example.myapp.config (user: <Computer>) (source: 'MDM')
[*] >>>>> Sending HTTP request (PUT) [Acknowledged(InstallProfile)
[*] <<<<< Received HTTP response (200) [Acknowledged(InstallProfile)
[*] Processing server request: ProfileList for: <Device>
[*] >>>>> Sending HTTP request (PUT) [Acknowledged(ProfileList)
[*] <<<<< Received HTTP response (200) [Acknowledged(ProfileList)
Also the ProfileList didn't include the installed profile. Is it because it was unsigned? How it should be signed?
Topic:
Business & Education
SubTopic:
General
Tags:
Enterprise
macOS
Business and Enterprise
Device Management
Hi everyone,
I’m working as an IT engineer in the cruise industry and need to troubleshoot passenger complaints about Apple’s new RCS messaging feature (introduced with iOS 18). Could someone help confirm which domains and ports iPhones use when they send RCS messages? My firewall team wants specifics: domains (or subdomains) that need whitelisting and the ports involved.
Any official or community-sourced info would be super helpful—thanks in advance!
Topic:
Business & Education
SubTopic:
General
I have a simple organization-info declaration that contains the following:
"Identifier": "com.example.declaration.org-info",
"Payload": {
"Email": "info@example.com",
"Name": "Example Organization Info",
"URL": "http://example.com"
},
"ServerToken": "c23b40ca47b11420",
"Type": "com.apple.management.organization-info"
}
And an activation that includes the org-info declaration:
"Identifier": "com.example.activation.org-info",
"Payload": {
"StandardConfigurations": [
"com.example.declaration.org-info"
]
},
"ServerToken": "5f6c37a6a0c44e35",
"Type": "com.apple.activation.simple"
}
When I check the status of the declaration, I see the following error:
"StatusItems": {
"management": {
"declarations": {
"activations": [
{
"reasons": [
{
"details": {
"Identifier": "com.example.activation.org-info",
"ServerToken": "5f6c37a6a0c44e35",
"ConfigurationIdentifiers": "com.example.declaration.org-info"
},
"description": "Activation (com.example.activation.org-info:5f6c37a6a0c44e35) is missing configurations.",
"code": "Error.MissingConfigurations"
}
],
"active": false,
"identifier": "com.example.activation.org-info",
"valid": "valid",
"server-token": "5f6c37a6a0c44e35"
}
],
"configurations": [],
"assets": [],
"management": [
{
"active": false,
"identifier": "com.example.declaration.org-info",
"valid": "valid",
"server-token": "542fded47e432de3"
}
]
}
}
},
"Errors": []
}
I'm not seeing the error in either the activation or the declaration that might throw this error. Does anyone have any insight?
Topic:
Business & Education
SubTopic:
Device Management
We are using management properties in DDM to assign configurations and assets to a particular device, and one of those properties should be updated by a business app on the device.
For example, if the business application is not launched every 30 days, then a predicate should evaluate to false and the device put into single app mode to force the application to run.
If, however, the app is launched any time in the 30 days, then the counter should be reset. Essentially trying to enforce that users in the field cannot work offline for extended periods of time without getting the latest dataset from the company.
The single app mode part is very clear and the predicate to assign the configuration based on the date in the management property seems logical.
However, the question is: Can a predicate be built upon data that is updated by the custom MDM app? ie: If the app is launched on the device without connectivity, can a property be updated that the DDM predicate system can access that can be used as an input property? such as "last launch time" or "last check-in" of the custom app?
Alternately, could the custom MDM app read any of the management properties set via DDM? That way the user would know the value that the DDM configuration for restricting the device.
Hi everyone,
I’m working as an IT engineer in the cruise industry and need to troubleshoot passenger complaints about Apple’s new RCS messaging feature (introduced with iOS 18). Could someone help confirm which domains and ports iPhones use when they send RCS messages? For the fortigate and palo alto firewalls I need specifics: domains (or subdomains) that need whitelisting and the ports involved.
Any official or community-sourced info would be super helpful—thanks in advance!
Topic:
Business & Education
SubTopic:
Device Management
I have an MDM supervised device with an installed managed app, that activates a content-filter solution to filter traffic system-wide. Is it possible in any way for the user to install a third party content-filter app that would somehow overtake the control of content filtering from my app? I'm asking this because I've tested such a case with my another test content-filter solution and it takes control over content filtering from my content-filter – I think this is possible only because my device is in developer mode, but I'm not entirely sure, and I need a confirmation that it would not be possible to happen in an end used environment.
My company signed the application with enterprise certificate, the Provisioning Profile expired on March 20, 2025. Some iPhones didn't update the application before the expiration.
We have update the Provisioning Profile and repackaged application. However, these iPhones still can't use the application after reinstalling the new ipa. After opening the application, the screen is blank and then flashes back without any error prompt.
Restarting iPhone didn't help.
Hello All,
I am currently developing a mobile management system using declarative management and for the most part it is pretty great. There is one consistent issue I have run into and it comes when testing VPP app installs with not enough licenses.
When my server detects that it can't provide a license ID it will return a 404, which causes the rest of the DM syncing to stop, and the activation to throw an error.
Per the documentation for using simple activation:
An array of strings that specify the identifiers of configurations to install. A failure to install one of the configurations doesn’t prevent other configurations from installing
The above would imply that if a config fails it should not affect anything else (aside from possibly reporting an error.
Am I returning the wrong error code for it to continue or is the behavior correct and the documentation is wrong?
Any additional info would be useful