jamf / JamfMigrator

A tool to migrate data granularly between Jamf Pro servers
MIT License
140 stars 10 forks source link

iconMigrate function passes a URL which has no scheme #55

Closed pythoninthegrass closed 3 years ago

pythoninthegrass commented 4 years ago

Running into an URL error that sometimes crashes the jamf-migrator v5.2.5 following the Illegal instruction: 4 stderr. Even if it doesn't crash, the program never makes it past "Starting to Migrate" (i.e., doesn't POST.)

Have everything checked under General and macOS tabs except for users and computers; nothing's checked in iOS.

Credentials and permissions for both source and destination servers are valid and have been tested.

2020-06-17 10:31:38.385 jamf-migrator[3230:83817] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.
[iconMigrate] GET
2020-06-17 10:35:09.427 jamf-migrator[3230:85838] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
2020-06-17 10:35:11.023 jamf-migrator[3230:85373] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
[iconMigrate] GET
2020-06-17 10:35:12.069 jamf-migrator[3230:87414] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
2020-06-17 10:35:12.349 jamf-migrator[3230:83976] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
2020-06-17 10:35:13.344 jamf-migrator[3230:87414] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
[iconMigrate] GET
2020-06-17 10:35:15.402 jamf-migrator[3230:83828] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
file error: Error Domain=NSCocoaErrorDomain Code=516 "“CFNetworkDownload_7AaMee.tmp” couldn’t be moved to “Caches” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_7AaMee.tmp, NSUserStringVariant=(
    Move
), NSDestinationFilePath=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/date_time.png, NSFilePath=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_7AaMee.tmp, NSUnderlyingError=0x7fa001ec53b0 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
2020-06-17 10:35:15.469 jamf-migrator[3230:85837] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
[iconMigrate] GET
2020-06-17 10:35:16.979 jamf-migrator[3230:85837] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
Illegal instruction: 4

Think it might be related to this SO article and occurs in the ViewController.swift code block starting on line 4824:

func iconMigrate(action: String, ssIconUri: String, ssIconName: String, iconToUpload: String, createDestUrl: String, completion: @escaping (Int) -> Void) {

        var curlResult = 0

        switch action {
        case "GET":
            print("[iconMigrate] GET")

            // https://developer.apple.com/documentation/foundation/url_loading_system/downloading_files_from_websites
            let url = URL(string: "\(ssIconUri)")!

Not familiar with Swift so rewriting the let url = URL(string: "\(ssIconUri)")! line to both interpolate a variable and set the mime type is non-trivial on my end. It may also impact other functions across scripts that set URLs.

Will try to capture the verbose output from when it passes/skips icons and find out if there's a related issue precluding POST'ing XMLs from the current server into our new one.

BIG-RAT commented 4 years ago

Haven't been able to replicate the issue yet. Wonder if you could launch the app in debug mode (.../path/to/jamf-migrator.app/Contents/MacOS/jamf-migrator -debug) and post (part of) the log along with what you see in Terminal. I get the following in the migrator log:

20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050543 [- debug -] [CreateEndpoints] after icon download.
20200619_050543 [- debug -] [CreateEndpoints] retrieved icon from https://your.jamfcloud.com/iconservlet/?id=18
20200619_050543 [- debug -] [icons] Saving icon id: ACA5_1_201707211178817124.jpg for policies.
20200619_050543 [- debug -] [saveXML] saving ACA5_1_201707211178817124.jpg, format: raw, to folder selfservicepolicyicon
20200619_050543 [- debug -] [endPointByID] create func: 2 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-2   Total: 6    Succeeded: 3    No Failures: true   SuccessArray 3
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: AppUsage
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [endPointByID] create func: 5 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-5   Total: 6    Succeeded: 4    No Failures: true   SuccessArray 4
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: dockutil
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [endPointByID] create func: 6 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-6   Total: 6    Succeeded: 5    No Failures: true   SuccessArray 5
20200619_050543 [- debug -] [CreateEndpoints] Last item in policies complete.
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: Enable ARD
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050544 [- debug -] [CreateEndpoints] result of icon POST: <?xml version="1.0" encoding="UTF-8"?><policy><id>3210</id></policy>.
20200619_050544 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050544 [- debug -] [CreateEndpoints] after icon download.
20200619_050544 [- debug -] [CreateEndpoints] retrieved icon from https://your.jamfcloud.com/iconservlet/?id=2227
20200619_050544 [- debug -] [icons] Saving icon id: ToolbarCustomizeIcon.png for policies.
20200619_050544 [- debug -] [saveXML] saving ToolbarCustomizeIcon.png, format: raw, to folder selfservicepolicyicon
20200619_050545 [- debug -] [CreateEndpoints] result of icon POST: <?xml version="1.0" encoding="UTF-8"?><policy><id>3209</id></policy>.
20200619_050545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050545 [- debug -] [CreateEndpoints] after icon download.
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050543 [- debug -] [CreateEndpoints] after icon download.
20200619_050543 [- debug -] [CreateEndpoints] retrieved icon from https://your.jamfcloud.com/iconservlet/?id=18
20200619_050543 [- debug -] [icons] Saving icon id: ACA5_1_201707211178817124.jpg for policies.
20200619_050543 [- debug -] [saveXML] saving ACA5_1_201707211178817124.jpg, format: raw, to folder selfservicepolicyicon
20200619_050543 [- debug -] [endPointByID] create func: 2 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-2   Total: 6    Succeeded: 3    No Failures: true   SuccessArray 3
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: AppUsage
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [endPointByID] create func: 5 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-5   Total: 6    Succeeded: 4    No Failures: true   SuccessArray 4
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: dockutil
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050543 [- debug -] [endPointByID] create func: 6 of 6 complete.
20200619_050543 [- debug -] [endPointByID] Returned from cleanupXml
20200619_050543 [- debug -] [CreateEndpoints] POST or PUT Operation: POST
20200619_050543 [- debug -] [CreateEndpoints] endpoint: policies-6   Total: 6    Succeeded: 5    No Failures: true   SuccessArray 5
20200619_050543 [- debug -] [CreateEndpoints] Last item in policies complete.
20200619_050543 [- debug -]     [CreateEndpoints] [policies] succeeded: Enable ARD
20200619_050543 [- debug -] [CreateEndpoints] before icon download.
20200619_050544 [- debug -] [CreateEndpoints] result of icon POST: <?xml version="1.0" encoding="UTF-8"?><policy><id>3210</id></policy>.
20200619_050544 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050544 [- debug -] [CreateEndpoints] after icon download.
20200619_050544 [- debug -] [CreateEndpoints] retrieved icon from https://your.jamfcloud.com/iconservlet/?id=2227
20200619_050544 [- debug -] [icons] Saving icon id: ToolbarCustomizeIcon.png for policies.
20200619_050544 [- debug -] [saveXML] saving ToolbarCustomizeIcon.png, format: raw, to folder selfservicepolicyicon
20200619_050545 [- debug -] [CreateEndpoints] result of icon POST: <?xml version="1.0" encoding="UTF-8"?><policy><id>3209</id></policy>.
20200619_050545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_050545 [- debug -] [CreateEndpoints] after icon download.

And the following in Terminal:

./jamf-migrator.app/Contents/MacOS/jamf-migrator -debug
2020-06-19 04:59:37.145 jamf-migrator[1400:2243034] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.
[iconMigrate] GET
[iconMigrate] GET
[iconMigrate] GET
[iconMigrate] GET
[iconMigrate] GET
pythoninthegrass commented 4 years ago

Hi @BIG-RAT. That's helpful, thanks! Appears to be failing on three files with Domain=NSCocoaErrorDomain Code=262:

UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/MicrosoftOneNote365.png}
UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/iconfinder_barista-icons_espresso_889370.png}
UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/postman.png}

There's also the issue of handling files that already exist with NSCocoaErrorDomain Code=516 and NSPOSIXErrorDomain Code=17.

stdout

2020-06-19 11:35:44.974 jamf-migrator[46572:1555493] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.
[iconMigrate] GET
[iconMigrate] GET
file error: Error Domain=NSCocoaErrorDomain Code=516 "“CFNetworkDownload_lUUyIn.tmp” couldn’t be moved to “Caches” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_lUUyIn.tmp, NSUserStringVariant=(
    Move
), NSDestinationFilePath=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/MicrosoftOneNote365.png, NSFilePath=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_lUUyIn.tmp, NSUnderlyingError=0x7fcbacdafb10 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
2020-06-19 11:35:45.148 jamf-migrator[46572:1565935] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
2020-06-19 11:35:45.227 jamf-migrator[46572:1565591] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
2020-06-19 11:35:45.418 jamf-migrator[46572:1565591] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
[iconMigrate] GET
file error: Error Domain=NSCocoaErrorDomain Code=516 "“CFNetworkDownload_BIU4YZ.tmp” couldn’t be moved to “Caches” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_BIU4YZ.tmp, NSUserStringVariant=(
    Move
), NSDestinationFilePath=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/image (1).png, NSFilePath=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_BIU4YZ.tmp, NSUnderlyingError=0x7fcbae36f250 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
Illegal instruction: 4

20200619_113050_migration.log

20200619_113051 [- debug -] ----- Debug Mode -----
20200619_113051 [- debug -] jamf-migrator Version: 5.2.5 Build: 1
20200619_113541 [- debug -] Start Migrating/Removal
20200619_113541 [- debug -] Migrating data from https://jss.source:8443 to https://jss.destination.
20200619_113541 [- debug -] go sender tag: Optional(0)
20200619_113541 [- debug -] Go button pressed from: goButton
20200619_113541 [- debug -] Active tab: macOS
20200619_113541 [- debug -] Migration Mode (Go): bulk
20200619_113541 [- debug -] [checkURL2] --- checking availability of server: https://jss.source:8443
20200619_113541 [- debug -] [checkURL2] checking: https://jss.source:8443
20200619_113541 [- debug -] [checkURL2] --- checking healthCheck page.
20200619_113541 [- debug -] --- checking authentication to source server: https://jss.source:8443
20200619_113541 [- debug -] checking: https://jss.source:8443/JSSResource/buildings
20200619_113542 [- debug -] [checkURL2] Server check: https://jss.source:8443, httpResponse: 200
20200619_113542 [- debug -] [checkURL2] checkURL2 data: []
20200619_113542 [- debug -] https://jss.source:8443/JSSResource/buildings auth check httpResponse: 200
20200619_113542 [- debug -] [source server] https://jss.source:8443/JSSResource/buildings auth httpResponse, between 199 and 299: 200
20200619_113542 [- debug -] --- checking authentication to dest server: https://jss.destination
20200619_113542 [- debug -] [startMigrating] enter
20200619_113542 [- debug -] Start Migrating/Removal
20200619_113542 [- debug -] platform: macOS.
20200619_113542 [- debug -] Migration Mode (startMigration): bulk.
20200619_113542 [- debug -] Types of objects to migrate: macOS.
20200619_113542 [- debug -] objects: ["policies"].
20200619_113542 [- debug -] ----------- Starting Migration -----------
20200619_113542 [- debug -] migrating/removing 1 sections
20200619_113542 [- debug -] Starting to process policies
20200619_113542 [- debug -] getting endpoint: policies
20200619_113542 [- debug -] [readNodes] enter
20200619_113542 [- debug -] getting endpoint: policies
20200619_113542 [- debug -] [getEndpoints] enter
20200619_113542 [- debug -] [getEndpoints] Getting policies
20200619_113542 [- debug -] [readNodes] exit
20200619_113543 [- debug -] [getEndpoints] Getting all endpoints from: https://jss.source:8443/JSSResource/policies
20200619_113543 [- debug -] [getEndpoints] endpointJSON: ["policies": <__NSArrayI 0x7fcbaa0cd600>(
...
{
    id = 451;
    name = "Update iTunes to v12.5.5";
},
{
    id = 1583;
    name = "Update Zoom Plist (Allow management of 'Use Dual Monitors' Settings)";
}
...
)
])
20200619_113543 [- debug -] [getEndpoints] processing policies
20200619_113543 [- debug -] [getEndpoints] policies found: 1468
20200619_113543 [- debug -] [existingEndpoints] enter
20200619_113543 [- debug -] [getEndpoints] Returned from existing endpoints:  Current endpoints - saveOnly, not needed.
20200619_113543 [- debug -] [getEndpoints] check for ID on Install Latest Microsoft OneNote: nil
20200619_113543 [- debug -] [getEndpoints] Install Latest Microsoft OneNote - create
20200619_113543 [- debug -] [getEndpoints] function - endpoint: policies, endpointID: 1541, endpointCurrent: 1, endpointCount: 1468, action: "create", destEpId: 0
...
20200619_113545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_113545 [- debug -] [CreateEndpoints] after icon download.
20200619_113545 [- debug -] [CreateEndpoints] retrieved icon from https://jss.source:8443/iconservlet/?id=13807
20200619_113545 [- debug -] [icons] Saving icon id: MicrosoftOneNote365.png for policies.
20200619_113545 [- debug -] [saveXML] saving MicrosoftOneNote365.png, format: raw, to folder selfservicepolicyicon
20200619_113545 [- debug -] [CreateEndpoints] unable to delete /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/MicrosoftOneNote365.png.  Error Error Domain=NSCocoaErrorDomain Code=262 "The file couldn’t be opened because the specified URL type isn’t supported." UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/MicrosoftOneNote365.png}.
20200619_113545 [- debug -] [endPointByID] HTTP response code of GET for Caffeinate: 200
20200619_113545 [- debug -] [endPointByID] Saving raw XML for Caffeinate with id: 1482.
20200619_113545 [- debug -] [endPointByID] Starting to clean-up the XML.
20200619_113545 [- debug -] [cleanUpXml] enter
20200619_113545 [- debug -] [endPointByID] Returned from cleanupXml
20200619_113545 [- debug -] [endPointByID] processing policies - verbose
20200619_113545 [- debug -] Removing blank lines.
20200619_113545 [- debug -] Removing blank lines.
20200619_113545 [- debug -] [CreateEndpoints] enter
20200619_113545 [- debug -] [CreateEndpoints] Save only selected, skipping create for: policies
20200619_113545 [- debug -] [CreateEndpoints] Original Dest. URL: https://jss.destination/JSSResource/policies/id/0
20200619_113545 [- debug -] [CreateEndpoints] Saving trimmed XML for Caffeinate with id: 1482.
SResource/policies/id/1287
20200619_113545 [- debug -] [saveXML] saving Caffeinate, format: raw, to folder policies
20200619_113545 [- debug -] [tagValue] invalid input for tagValue function or tag not found.
20200619_113545 [- debug -]     [tagValue] tag: id
20200619_113545 [- debug -]     [tagValue] xml:
20200619_113545 [- debug -] [CreateEndpoints] before icon download.
20200619_113545 [- debug -] [Xml.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/policies
20200619_113545 [- debug -] [saveXML] saving Caffeinate, format: trimmed, to folder policies
20200619_113545 [- debug -] [Xml.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/trimmed/policies
20200619_113545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_113545 [- debug -] [CreateEndpoints] after icon download.
20200619_113545 [- debug -] [CreateEndpoints] retrieved icon from https://jss.source:8443/iconservlet/?id=12300
20200619_113545 [- debug -] [icons] Saving icon id: iconfinder_barista-icons_espresso_889370.png for policies.
20200619_113545 [- debug -] [saveXML] saving iconfinder_barista-icons_espresso_889370.png, format: raw, to folder selfservicepolicyicon
20200619_113545 [- debug -] [CreateEndpoints] unable to delete /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/iconfinder_barista-icons_espresso_889370.png.  Error Error Domain=NSCocoaErrorDomain Code=262 "The file couldn’t be opened because the specified URL type isn’t supported." UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/iconfinder_barista-icons_espresso_889370.png}.
20200619_113545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_113545 [- debug -] [CreateEndpoints] after icon download.
20200619_113545 [- debug -] [CreateEndpoints] retrieved icon from https://jss.source:8443/iconservlet/?id=12626
20200619_113545 [- debug -] [icons] Saving icon id: postman.png for policies.
20200619_113545 [- debug -] [saveXML] saving postman.png, format: raw, to folder selfservicepolicyicon
20200619_113545 [- debug -] [CreateEndpoints] unable to delete /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/postman.png.  Error Error Domain=NSCocoaErrorDomain Code=262 "The file couldn’t be opened because the specified URL type isn’t supported." UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/postman.png}.
20200619_113545 [- debug -] [endPointByID] HTTP response code of GET for Install Tableau Reader: 200
20200619_113545 [- debug -] [endPointByID] Saving raw XML for Install Tableau Reader with id: 807.
20200619_113545 [- debug -] [endPointByID] Starting to clean-up the XML.
20200619_113545 [- debug -] [cleanUpXml] enter
20200619_113545 [- debug -] [endPointByID] Returned from cleanupXml
20200619_113545 [- debug -] [endPointByID] processing policies - verbose
20200619_113545 [- debug -] Removing blank lines.
20200619_113545 [- debug -] Removing blank lines.
20200619_113545 [- debug -] [CreateEndpoints] enter
20200619_113545 [- debug -] [CreateEndpoints] Save only selected, skipping create for: policies
20200619_113545 [- debug -] [CreateEndpoints] Original Dest. URL: https://jss.destination/JSSResource/policies/id/0
20200619_113545 [- debug -] [CreateEndpoints] Saving trimmed XML for Install Tableau Reader with id: 807.
20200619_113545 [- debug -] [endPointByID] fetching XML from: https://jss.source:8443/JSSResource/policies/id/1457
20200619_113545 [- debug -] [saveXML] saving Install Tableau Reader, format: raw, to folder policies
20200619_113545 [- debug -] [tagValue] invalid input for tagValue function or tag not found.
20200619_113545 [- debug -]     [tagValue] tag: id
20200619_113545 [- debug -]     [tagValue] xml:
20200619_113545 [- debug -] [CreateEndpoints] before icon download.
20200619_113545 [- debug -] [Xml.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/policies
20200619_113545 [- debug -] [saveXML] saving Install Tableau Reader, format: trimmed, to folder policies
20200619_113545 [- debug -] [Xml.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/trimmed/policies
20200619_113545 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200619_113545 [- debug -] [CreateEndpoints] after icon download.
20200619_113545 [- debug -] [CreateEndpoints] retrieved icon from https://jss.source:8443/iconservlet/?id=3752
20200619_113545 [- debug -] [icons] Saving icon id: image (1).png for policies.
BIG-RAT commented 4 years ago

@pythoninthegrass - Made some changes on migrating icons. Wasn't able to recreate your issue, fingers crossed v5.2.7 will improve the app performance for you.

pythoninthegrass commented 4 years ago

Output looks similar. stdout

2020-06-22 18:26:02.713 jamf-migrator[9693:566664] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.
2020-06-22 18:30:06.717 jamf-migrator[9693:566679] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
2020-06-22 18:30:13.697 jamf-migrator[9693:567260] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
...
2020-06-22 18:31:32.495 jamf-migrator[9693:568917] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme
2020-06-22 18:31:32.708 jamf-migrator[9693:571779] CFURLCopyResourcePropertyForKey failed because it was passed an URL which has no scheme

20200622_182538_migration.log

20200622_182539 [- debug -] ----- Debug Mode -----
20200622_182539 [- debug -] jamf-migrator Version: 5.2.8 Build: 1
20200622_182600 [- debug -] Start Migrating/Removal
20200622_182600 [- debug -] Migrating data from https://jss.source:8443 to https://jss.destination.
20200622_182600 [- debug -] go sender tag: Optional(0)
20200622_182600 [- debug -] Go button pressed from: goButton
20200622_182600 [- debug -] Active tab: macOS
20200622_182600 [- debug -] Migration Mode (Go): bulk
20200622_182600 [- debug -] [checkURL2] --- checking availability of server: https://jss.source:8443
20200622_182600 [- debug -] [checkURL2] checking: https://jss.source:8443
20200622_182600 [- debug -] [checkURL2] --- checking healthCheck page.
20200622_182600 [- debug -] --- checking authentication to source server: https://jss.source:8443
20200622_182600 [- debug -] checking: https://jss.source:8443/JSSResource/buildings
20200622_182600 [- debug -] [checkURL2] Server check: https://jss.source:8443, httpResponse: 200
20200622_182600 [- debug -] [checkURL2] checkURL2 data: []
20200622_182601 [- debug -] https://jss.source:8443/JSSResource/buildings auth check httpResponse: 200
20200622_182601 [- debug -] [source server] https://jss.source:8443/JSSResource/buildings auth httpResponse, between 199 and 299: 200
20200622_182601 [- debug -] --- checking authentication to dest server: https://jss.destination
20200622_182601 [- debug -] [startMigrating] enter
20200622_182601 [- debug -] Start Migrating/Removal
20200622_182601 [- debug -] platform: macOS.
20200622_182601 [- debug -] Migration Mode (startMigration): bulk.
20200622_182601 [- debug -] Types of objects to migrate: macOS.
20200622_182601 [- debug -] objects: ["distributionpoints", "directorybindings", "diskencryptionconfigurations", "dockitems", "softwareupdateservers", "netbootservers", "computerextensionattributes", "scripts", "printers", "packages", "computergroups", "restrictedsoftware", "osxconfigurationprofiles", "macapplications", "patchpolicies", "advancedcomputersearches", "computerconfigurations", "policies"].
20200622_182601 [- debug -] ----------- Starting Migration -----------
20200622_182601 [- debug -] migrating/removing 18 sections
20200622_182601 [- debug -] Starting to process distributionpoints
20200622_182601 [- debug -] getting endpoint: distributionpoints
20200622_182601 [- debug -] [readNodes] enter
20200622_182601 [- debug -] getting endpoint: distributionpoints
20200622_182601 [- debug -] [getEndpoints] enter
20200622_182601 [- debug -] [getEndpoints] Getting distributionpoints
20200622_182601 [- debug -] [readNodes] exit
20200622_182602 [- debug -] [getEndpoints] Getting all endpoints from: https://jss.source:8443/JSSResource/distributionpoints
20200622_182602 [- debug -] [getEndpoints] endpointJSON: ["distribution_points": <__NSArrayI 0x7f942b35b680>(
...
20200622_183132 [- debug -] [endPointByID] HTTP response code of GET for Quick Tuneup: 200
20200622_183132 [- debug -] [endPointByID] Saving raw XML for Quick Tuneup with id: 1548.
20200622_183132 [- debug -] [endPointByID] Starting to clean-up the XML.
20200622_183132 [- debug -] [cleanUpXml] enter
20200622_183132 [- debug -] [endPointByID] Returned from cleanupXml
20200622_183132 [- debug -] [endPointByID] processing policies - verbose
20200622_183132 [- debug -] Removing blank lines.
20200622_183132 [- debug -] Removing blank lines.
20200622_183132 [- debug -] [CreateEndpoints] enter
20200622_183132 [- debug -] [CreateEndpoints] Save only selected, skipping create for: policies
20200622_183132 [- debug -] [CreateEndpoints] Original Dest. URL: https://jss.destination/JSSResource/policies/id/0
20200622_183132 [- debug -] [CreateEndpoints] Saving trimmed XML for Quick Tuneup with id: 1548.
20200622_183132 [- debug -] [XmlDelegate.save] saving Quick Tuneup, format: raw, to folder policies
20200622_183132 [- debug -] [tagValue] invalid input for tagValue function or tag not found.
20200622_183132 [- debug -]     [tagValue] tag: id
20200622_183132 [- debug -]     [tagValue] xml: 
20200622_183132 [- debug -] [CreateEndpoints.icon] before icon download.
20200622_183132 [- debug -] [CreateEndpoints.iconMigrate] fetching icon: https://jss.source:8443/iconservlet/?id=13227.
20200622_183132 [- debug -] [XmlDelegate.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/policies
20200622_183132 [- debug -] [XmlDelegate.save] saving Quick Tuneup, format: trimmed, to folder policies
20200622_183132 [- debug -] [XmlDelegate.save] saved to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/trimmed/policies
20200622_183132 [- debug -] [Xml.save] Problem moving icon: Error Error Domain=NSCocoaErrorDomain Code=516 "“CFNetworkDownload_Kr3Qjn.tmp” couldn’t be moved to “13227” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_Kr3Qjn.tmp, NSUserStringVariant=(
    Move
), NSDestinationFilePath=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/13227/iconfinder_desktop_tools_tuneup.png, NSFilePath=/var/folders/9w/0mr2lrk13f1cq1zyj5g6nx6m0000gp/T/com.jamf.jamf-migrator/CFNetworkDownload_Kr3Qjn.tmp, NSUnderlyingError=0x7f942f679610 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
20200622_183132 [- debug -] [CreateEndpoints] result of Swift icon GET: 200.
20200622_183132 [- debug -] [CreateEndpoints.icon] after icon download.
20200622_183132 [- debug -] [CreateEndpoints.icon] retrieved icon from https://jss.source:8443/iconservlet/?id=13227
20200622_183132 [- debug -] [icons] saving icon: iconfinder_desktop_tools_tuneup.png for policies.
20200622_183132 [- debug -] [XmlDelegate.save] saving iconfinder_desktop_tools_tuneup.png, format: raw, to folder selfservicepolicyicon
20200622_183132 [- debug -] [CreateEndpoints.icon] unable to delete /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/13227/.  Error Error Domain=NSCocoaErrorDomain Code=262 "The file couldn’t be opened because the specified URL type isn’t supported." UserInfo={NSURL=/Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/13227/}.
20200622_183132 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/13227/iconfinder_desktop_tools_tuneup.png

For the file already exists errors, Error Domain=NSCocoaErrorDomain Code=516 and Error Domain=NSPOSIXErrorDomain Code=17 "File exists", I'll try starting from scratch because GET seems to work just fine. Not sure if that will do anything for POST though.

BIG-RAT commented 4 years ago

@pythoninthegrass - you win. Updated to not remove the download until it's copied to the raw/trimmed folder. You can grab it here: https://github.com/jamf/JamfMigrator/releases/tag/5.2.9b1

pythoninthegrass commented 4 years ago

Definitely a lot quieter stdout -- only seeing one warning now.

stdout

2020-06-25 10:55:57.174 jamf-migrator[90788:2856715] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.

Hangs on the id=294 icon. There are 264 policies that it's pulling and it appears to do that as expected.

Unless I'm missing something, seems like prompting to keep identical files instead of removing the cached icons would be quicker. Or toggling the preference would work too.

Maybe a timeout for individual GET items or the option to POST what's currently cached could narrow down what the bottleneck is?

20200625_105535_migration.log

20200625_105536 [- debug -] ----- Debug Mode -----
20200625_105537 [- debug -] jamf-migrator Version: 5.2.9b1 Build: 1
20200625_105553 [- debug -] Start Migrating/Removal
20200625_105553 [- debug -] Migrating data from https://jss.source:8443 to https://jss.destination.
20200625_105553 [- debug -] go sender tag: Optional(0)
20200625_105553 [- debug -] Go button pressed from: goButton
20200625_105553 [- debug -] Active tab: macOS
20200625_105553 [- debug -] Migration Mode (Go): bulk
20200625_105553 [- debug -] [checkURL2] --- checking availability of server: https://jss.source:8443
20200625_105553 [- debug -] [checkURL2] checking: https://jss.source:8443
20200625_105553 [- debug -] [checkURL2] --- checking healthCheck page.
20200625_105553 [- debug -] --- checking authentication to source server: https://jss.source:8443
20200625_105553 [- debug -] checking: https://jss.source:8443/JSSResource/buildings
20200625_105553 [- debug -] [checkURL2] Server check: https://jss.source:8443, httpResponse: 200
20200625_105553 [- debug -] [checkURL2] checkURL2 data: []
20200625_105554 [- debug -] https://jss.source:8443/JSSResource/buildings auth check httpResponse: 200
20200625_105554 [- debug -] [source server] https://jss.source:8443/JSSResource/buildings auth httpResponse, between 199 and 299: 200
20200625_105554 [- debug -] --- checking authentication to dest server: https://jss.destination
20200625_105555 [- debug -] [startMigrating] enter
20200625_105555 [- debug -] Start Migrating/Removal
20200625_105555 [- debug -] platform: macOS.
20200625_105555 [- debug -] Migration Mode (startMigration): bulk.
20200625_105555 [- debug -] Types of objects to migrate: macOS.
20200625_105555 [- debug -] objects: ["policies"].
20200625_105555 [- debug -] ----------- Starting Migration -----------
20200625_105555 [- debug -] migrating/removing 1 sections
20200625_105555 [- debug -] Starting to process policies
20200625_105555 [- debug -] getting endpoint: policies
20200625_105555 [- debug -] [readNodes] enter
20200625_105555 [- debug -] getting endpoint: policies
20200625_105555 [- debug -] [getEndpoints] enter
20200625_105555 [- debug -] [getEndpoints] Getting policies
20200625_105555 [- debug -] [readNodes] exit
20200625_105555 [- debug -] [getEndpoints] Getting all endpoints from: https://jss.source:8443/JSSResource/policies
20200625_105555 [- debug -] [getEndpoints] endpointJSON: ["policies": <__NSArrayI 0x7fc25095e000>(
...
20200625_105555 [- debug -] [getEndpoints] processing policies
20200625_105555 [- debug -] [getEndpoints] policies found: 1468
20200625_105555 [- debug -] [existingEndpoints] enter
20200625_105555 [- debug -] [getEndpoints] returned from existing endpoints:  Current endpoints - export.saveOnly, not needed.
20200625_105555 [- debug -] [getEndpoints] check for ID on Prompt to Update Slack : nil
20200625_105555 [- debug -] [getEndpoints] Prompt to Update Slack  - create
20200625_105555 [- debug -] [getEndpoints] function - endpoint: policies, endpointID: 1492, endpointCurrent: 1, endpointCount: 1468, action: "create", destEpId: 0
20200625_105555 [- debug -] [endPointByID] enter
20200625_105555 [- debug -] [endPointByID] saveRawXml: true
20200625_105555 [- debug -] [endPointByID] saveRawXmlScope: true
20200625_105555 [- debug -] [endPointByID] endpoint passed to endPointByID: policies
...
20200625_105719 [- debug -] [CreateEndpoints.icon] retrieved icon from https://jss.source:8443/iconservlet/?id=294
20200625_105719 [- debug -] [CreateEndpoints.icons] saving icon: hyacinth.png for policies.
20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/13227/iconfinder_desktop_tools_tuneup.png/
20200625_105719 [- debug -] [XmlDelegate.save] saving macOS.png, format: raw, to folder selfservicepolicyicon
20200625_105719 [- debug -] [XmlDelegate.save] removing currently saved icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/8611/macOS.png
20200625_105719 [- debug -] [XmlDelegate.save] saving icon to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/8611/macOS.png
20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/8611/macOS.png/
20200625_105719 [- debug -] [XmlDelegate.save] saving hyacinth.png, format: raw, to folder selfservicepolicyicon
20200625_105719 [- debug -] [XmlDelegate.save] removing currently saved icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/294/hyacinth.png
20200625_105719 [- debug -] [XmlDelegate.save] saving icon to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/294/hyacinth.png
20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/294/hyacinth.png/
BIG-RAT commented 4 years ago

Keep hoping for a way to manage icons in the database. Wondering if it's better to not delete the cached icons until they've all been saved (and/or migrated), which would allow the app to only download icons used multiple time once. ​

[NSURL init]​ - Been looking for the cause of that error but (obviously) haven't been able to pin it down.


From: pythoninthegrass notifications@github.com Sent: Thursday, June 25, 2020 12:24 PM To: jamf/JamfMigrator Cc: Leslie N. Helou; Mention Subject: Re: [jamf/JamfMigrator] iconMigrate function passes a URL which has no scheme (#55)

Definitely a lot quieter stdout -- only seeing one warning now.

stdout

2020-06-25 10:55:57.174 jamf-migrator[90788:2856715] -[NSURL init] called; this results in an NSURL instance with an empty URL string. Please use one of the documented NSURL initialization methods instead (initWithString:, initFileURLWithPath:, etc.). This message shown only once.

Hangs on the id=294 icon. There are 264 policies that it's pulling and it appears to do that as expected.

Unless I'm missing something, seems like prompting to keep identical files instead of removing the cached icons would be quicker. Or toggling the preference would work too.

Maybe a timeout for individual GET items or the option to POST what's currently cached could narrow down what the bottleneck is?

20200625_105535_migration.log

20200625_105536 [- debug -] ----- Debug Mode ----- 20200625_105537 [- debug -] jamf-migrator Version: 5.2.9b1 Build: 1 20200625_105553 [- debug -] Start Migrating/Removal 20200625_105553 [- debug -] Migrating data from https://jss.source:8443 to https://jss.destination. 20200625_105553 [- debug -] go sender tag: Optional(0) 20200625_105553 [- debug -] Go button pressed from: goButton 20200625_105553 [- debug -] Active tab: macOS 20200625_105553 [- debug -] Migration Mode (Go): bulk 20200625_105553 [- debug -] [checkURL2] --- checking availability of server: https://jss.source:8443 20200625_105553 [- debug -] [checkURL2] checking: https://jss.source:8443 20200625_105553 [- debug -] [checkURL2] --- checking healthCheck page. 20200625_105553 [- debug -] --- checking authentication to source server: https://jss.source:8443 20200625_105553 [- debug -] checking: https://jss.source:8443/JSSResource/buildings 20200625_105553 [- debug -] [checkURL2] Server check: https://jss.source:8443, httpResponse: 200 20200625_105553 [- debug -] [checkURL2] checkURL2 data: [] 20200625_105554 [- debug -] https://jss.source:8443/JSSResource/buildings auth check httpResponse: 200 20200625_105554 [- debug -] [source server] https://jss.source:8443/JSSResource/buildings auth httpResponse, between 199 and 299: 200 20200625_105554 [- debug -] --- checking authentication to dest server: https://jss.destination 20200625_105555 [- debug -] [startMigrating] enter 20200625_105555 [- debug -] Start Migrating/Removal 20200625_105555 [- debug -] platform: macOS. 20200625_105555 [- debug -] Migration Mode (startMigration): bulk. 20200625_105555 [- debug -] Types of objects to migrate: macOS. 20200625_105555 [- debug -] objects: ["policies"]. 20200625_105555 [- debug -] ----------- Starting Migration ----------- 20200625_105555 [- debug -] migrating/removing 1 sections 20200625_105555 [- debug -] Starting to process policies 20200625_105555 [- debug -] getting endpoint: policies 20200625_105555 [- debug -] [readNodes] enter 20200625_105555 [- debug -] getting endpoint: policies 20200625_105555 [- debug -] [getEndpoints] enter 20200625_105555 [- debug -] [getEndpoints] Getting policies 20200625_105555 [- debug -] [readNodes] exit 20200625_105555 [- debug -] [getEndpoints] Getting all endpoints from: https://jss.source:8443/JSSResource/policies 20200625_105555 [- debug -] [getEndpoints] endpointJSON: ["policies": <__NSArrayI 0x7fc25095e000>( ... 20200625_105555 [- debug -] [getEndpoints] processing policies 20200625_105555 [- debug -] [getEndpoints] policies found: 1468 20200625_105555 [- debug -] [existingEndpoints] enter 20200625_105555 [- debug -] [getEndpoints] returned from existing endpoints: Current endpoints - export.saveOnly, not needed. 20200625_105555 [- debug -] [getEndpoints] check for ID on Prompt to Update Slack : nil 20200625_105555 [- debug -] [getEndpoints] Prompt to Update Slack - create 20200625_105555 [- debug -] [getEndpoints] function - endpoint: policies, endpointID: 1492, endpointCurrent: 1, endpointCount: 1468, action: "create", destEpId: 0 20200625_105555 [- debug -] [endPointByID] enter 20200625_105555 [- debug -] [endPointByID] saveRawXml: true 20200625_105555 [- debug -] [endPointByID] saveRawXmlScope: true 20200625_105555 [- debug -] [endPointByID] endpoint passed to endPointByID: policies ... 20200625_105719 [- debug -] [CreateEndpoints.icon] retrieved icon from https://jss.source:8443/iconservlet/?id=294 20200625_105719 [- debug -] [CreateEndpoints.icons] saving icon: hyacinth.png for policies. 20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/13227/iconfinder_desktop_tools_tuneup.png/ 20200625_105719 [- debug -] [XmlDelegate.save] saving macOS.png, format: raw, to folder selfservicepolicyicon 20200625_105719 [- debug -] [XmlDelegate.save] removing currently saved icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/8611/macOS.png 20200625_105719 [- debug -] [XmlDelegate.save] saving icon to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/8611/macOS.png 20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/8611/macOS.png/ 20200625_105719 [- debug -] [XmlDelegate.save] saving hyacinth.png, format: raw, to folder selfservicepolicyicon 20200625_105719 [- debug -] [XmlDelegate.save] removing currently saved icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/294/hyacinth.png 20200625_105719 [- debug -] [XmlDelegate.save] saving icon to: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Downloads/Jamf Migrator/raw/selfservicepolicyicon/294/hyacinth.png 20200625_105719 [- debug -] [XmlDelegate.save] removing cached icon: /Users/lance.stephens/Library/Containers/com.jamf.jamf-migrator/Data/Library/Caches/icons/294/hyacinth.png/

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/jamf/JamfMigrator/issues/55#issuecomment-649672835, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFJYQF5EZSCPULT27QXOI4DRYN24DANCNFSM4OAZI5RQ.

[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/jamf/JamfMigrator/issues/55#issuecomment-649672835", "url": "https://github.com/jamf/JamfMigrator/issues/55#issuecomment-649672835", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

pythoninthegrass commented 4 years ago

Hard to say. Is there an easy way to POST all the icons even if they aren't attached to the original policies? Like a for loop over the cached icons and shotgun upload everything?

BIG-RAT commented 4 years ago

@pythoninthegrass - unfortunately there is no endpoint to upload self service icons to without associating them with a policy. I'd suggesting upvoting the following: https://www.jamf.com/jamf-nation/feature-requests/1474/manage-self-service-policy-icons If you get a chance the latest build has been working well for me: https://github.com/jamf/JamfMigrator/releases/tag/5.3.0b1

pythoninthegrass commented 4 years ago

Upvoted. Working with Jamf support to find out what happened with our S3 bucket wiping itself out from the primary JSS node. Will try the latest build once we're confident the API or something else didn't cause the data loss.

Thanks for your help @BIG-RAT

BIG-RAT commented 3 years ago

Replaced NSURL references (which caused the scheme message) with URL.