KNX2 migration issues

Hello

I am also about to migrate from knx1 to 2 and I have to admit : it is a pain. I was delaying it until now the OH3 migration requires it.
I use a clean setup (Docker) and I gradually want to migrate my items - until I can make the big switch.

If I use the UI - it works fine, so the setup in general works. But creating the files does have it’s pitfalls:

I have tried Jo’s script - but I was not lucky. The resulting Thing file - only contained a generic device with a few channels.
So back to basics and try it manually. With ~70 devices it should be manageable - but I also fail here:

This is my things file:

Bridge knx:ip:bridge "ABB Gateway" [
    ipAddress="192.168.0.119",
    useNAT=true,
    portNumber=3671,
    type="TUNNEL",
    readingPause=50,
    responseTimeout=10,
    readRetriesLimit=3,
    autoReconnectPeriod=31,
    localSourceAddr="0.0.0"
] {
Thing device ABB16Fach "ABB 16Fach Schaltaktor"[
        // device ID: M-0002_H-2CDG.20110.20103.20R0011-1_P-2CDG.20110.20103.20R0011
        address="1.1.101",
        fetch=false,
        pingInterval=600,
        readInterval=0
    ] 
{
    Type switch: Licht_Buero	"Buero"		[ga="1/2/4"]
}
}

When I upload the thing file I get the following error in the log:

  2021-01-11 17:11:20.163 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'knx.things', using it anyway:
Provide a thing UID in this format:
 <bindingId>:<thingTypeId>:<thingId>
2021-01-11 17:11:20.190 [WARN ] [.thing.internal.GenericThingProvider] - Thing device does not have a bridge so it needs to be defined in full notation like <bindingId>:device:ABB16Fach

And the Thing does not appear.

Maybe a wrong file format? should be UTF-8.
Are you sure about useNAT? is that because of Docker?
I would expect the localIp to be set.

As a first atempt, I would recommend to omit all default values as well as all special values. So the configuration would be like this:

Bridge knx:ip:bridge "ABB Gateway" [
    ipAddress="192.168.0.119",
    type="TUNNEL",
    useNAT=true,
    localIp="the.open.hab.ip"
    ] {
    Thing device ABB16Fach "ABB 16Fach Schaltaktor" {
        Type switch: Licht_Buero "Buero" [ ga="1/2/4" ]
    }
}

Magic!
Apparently it was some character encoding issue.

I started using VC and copied the changes over to my Raspi via SCP -> errors all the way.

I copy and pasted the text directly into a VI on the pi through a SSH session -> works like a charm…

Bug or feature? Why would OH be so picky about character encodings? I was not even using any German special characters…

And the userNAT is required because of Docker - without it, the communication does not work at all.