Scott,

take a look inside iam-setup.sh

Based on the inputs it constructs a URL and then tries to 'curl' it.

And fails for some reason. Check which URL it constructs and check if curl indeed works fine for that URL

The URL should look like:

https://IAM:
@xxx.xxx.xxx.xxx:443/api/iam/license

Check if you can access it from the bash

Can you provide small test case. It works fine for me. dc.demo is the same as HS.Local.CZ.OR.ROUTER.Service.Data.KeyProperty

dc.demoser is:

Class dc.demoser Extends %SerialObject
{

Property A As %String;

}

Test program:

set p = ##class(dc.demo).%New()
set x = ##class(dc.demoser).%New()
set x.A = "a1"
set p.Serial = x

set y= ##class(dc.demoser).%New()
set y.A = "a2"
do p.SerialList.Insert(y)

set ec= p.%Save()
zw ec

And then runnning:

USER>do ##class(dc.demo).test()
ec=1

USER>zw ^dc.demoD
^dc.demoD=1
^dc.demoD(1)=$lb("",$lb("a1"),$lb($lb($lb("a2"))),"",0,0,"","","","","","",0)

I never saw such direct of %SerialObject. Why do you need it? I wonder if %DynamicAbstractObject and JSON representation suits you here better