diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index e48c98c7..b66a4441 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -476,3 +476,13 @@ Bitbake 2.0 for better performance. It also requires isar-sstate script to be
 migrated to zstd.
 Mixing old Gzip-based and new ZStandatd-based sstate cache is not recommended
 and should be avoid for correct compatibility.
+
+### VM Image
+
+As a result of the Bitbake 2.0 migration, the vm image type has to be reworked:
+Previously, a path to the `OVF_TEMPLATE_FILE` had to be somehow injected so
+that the description file was located. This is now replaced by the imagetype
+logic. By that, the `OVF_TEMPLATE_FILE` needs to be located in a directory
+named according to the machine, next to the image file. If this is not possible
+(e.g. in cross-layer scenarios), add the location to the FILESEXTRAPATHS of the
+corresponding machine.conf.
diff --git a/meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl b/meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
similarity index 100%
rename from meta/classes/vm-img/vm-img-virtualbox.ovf.tmpl
rename to meta-isar/recipes-core/images/virtualbox/vm-img-virtualbox.ovf.tmpl
diff --git a/meta/classes/vm-img/vm-img-vmware.ovf.tmpl b/meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
similarity index 100%
rename from meta/classes/vm-img/vm-img-vmware.ovf.tmpl
rename to meta-isar/recipes-core/images/vmware/vm-img-vmware.ovf.tmpl
diff --git a/meta/classes/imagetypes_vm.bbclass b/meta/classes/imagetypes_vm.bbclass
index 81ef866f..c52c96e5 100644
--- a/meta/classes/imagetypes_vm.bbclass
+++ b/meta/classes/imagetypes_vm.bbclass
@@ -6,14 +6,11 @@
 
 inherit buildchroot
 
-USING_OVA = "${@bb.utils.contains('IMAGE_BASETYPES', 'ova', '1', '0', d)}"
-
-FILESEXTRAPATHS:prepend := "${LAYERDIR_core}/classes/vm-img:"
 OVF_TEMPLATE_FILE ?= "vm-img-virtualbox.ovf.tmpl"
-SRC_URI += "${@'file://${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') == '1' else ''}"
+IMAGE_SRC_URI:ova = "file://${OVF_TEMPLATE_FILE}"
 
 IMAGE_TYPEDEP:ova = "wic"
-IMAGER_INSTALL:ova += "qemu-utils gawk uuid-runtime"
+IMAGER_INSTALL:append:ova = " qemu-utils gawk uuid-runtime"
 
 # virtual machine disk settings
 SOURCE_IMAGE_FILE ?= "${IMAGE_FULLNAME}.wic"
@@ -67,8 +64,8 @@ OVA_VARS = "OVA_NAME OVA_MEMORY OVA_NUMBER_OF_CPU OVA_VRAM \
             OVA_FIRMWARE OVA_ACPI OVA_3D_ACCEL \
             OVA_SHA_ALG VIRTUAL_MACHINE_IMAGE_FILE"
 
-TEMPLATE_FILES += "${@'${OVF_TEMPLATE_FILE}' if d.getVar('USING_OVA') == '1' else ''}"
-TEMPLATE_VARS += "${OVA_VARS}"
+IMAGE_TEMPLATE_FILES:ova = "${OVF_TEMPLATE_FILE}"
+IMAGE_TEMPLATE_VARS:ova = "${OVA_VARS}"
 
 do_image_ova[prefuncs] += "convert_wic"
 IMAGE_CMD:ova() {
