diff --git a/Classes/XClass/Form/FormEditorController.php b/Classes/XClass/Form/FormEditorController.php
index 6ba14632d3e57bed62def76e41ae39fa49937002..a70a1d04d8d9206be61c8f8bc9f6c59503925ccc 100644
--- a/Classes/XClass/Form/FormEditorController.php
+++ b/Classes/XClass/Form/FormEditorController.php
@@ -31,6 +31,8 @@ use SGalinski\SgMail\Service\TypoScriptSettingsService;
 use Symfony\Component\Yaml\Yaml;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface;
+use TYPO3\CMS\Core\Resource\ResourceStorage;
+use TYPO3\CMS\Core\Resource\StorageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Form\Type\FormDefinitionArray;
@@ -108,7 +110,20 @@ class FormEditorController extends \TYPO3\CMS\Form\Controller\FormEditorControll
 			}
 
 			// parse yaml for form fields
-			$absoluteFilePath = GeneralUtility::getFileAbsFileName($formPersistenceIdentifier);
+			if (strpos($formPersistenceIdentifier, 'EXT:') === 0) {
+				$absoluteFilePath = GeneralUtility::getFileAbsFileName($formPersistenceIdentifier);
+			} else {
+				list($storageUid, $fileIdentifier) = explode(':', $formPersistenceIdentifier, 2);
+				$storageRepository = $this->objectManager->get(StorageRepository::class);
+				$storage = $storageRepository->findByUid($storageUid);
+				if (!$storage instanceof ResourceStorage || !$storage->isBrowsable()) {
+					throw new \InvalidArgumentException(
+						sprintf('Could not access storage with uid "%d".', $storageUid)
+					);
+				}
+				$absoluteFilePath = $storage->getFile($fileIdentifier);
+			}
+
 			$parsedYaml = Yaml::parse(file_get_contents($absoluteFilePath));
 
 			$renderables = [];