Apparently, parsing vmx.genid is not as easy as I thought. Anyway, it was brought up in a private thread that libvirt doesn't report correct UUIDs. For instance for the following input: vm.genid = "-8536691797830587195" vm.genidX = "-1723453263670062919" Libvirt would report: <genid>8987940a-0951-2cc5-e815-10634ff550b9</genid> while virt-v2v would report: <genid>09512cc5-940a-8987-b950-f54f631015e8</genid> Another example: vm.genid = "-6284418052148993891" vm.genidX = "-649955058627554545" Libvirt: <genid>a8c94313-ed9b-609d-f6fa-e5515a89530f</genid> virt-v2v: <genid>ed9b609d-4313-a8c9-0f53-895a51e5faf6</genid> To test my patch I modified tests/vmx2xmldata/esx-in-the-wild-10.vmx (because it already contains vmx.genid, but any file can be modified really), and then ran: libvirt.git/_build/tests $ VIR_TEST_DEBUG=1 VIR_TEST_RANGE=58 ./vmx2xmltest Mind you, the fix is almost direct rewrite of virt-v2v's algorithm, except it's optimized for C and not OCaml :-) You can find various attempts/versions of that on my gitlab: https://gitlab.com/MichalPrivoznik/libvirt/-/commits/vmx_genid/ I'm sending only the last one because that looks the best IMO. Michal Prívozník (1): vmx: Fix <genid/> mapping src/vmx/vmx.c | 16 ++++++++++++---- tests/vmx2xmldata/esx-in-the-wild-10.xml | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) -- 2.32.0