Considerations
When running a workspace in FME Flow that includes a linked custom transformer with an FME Package, the package may fail to be extracted to Resources > Engine > Packages. This can result in errors such as Python Exception <ModuleNotFoundError> in the job log.
Why This Happens
When an FME Package is published, the .fpkg file is uploaded to Resources > Engine. The first time a workspace uses that package, FME Flow extracts its contents into subfolders under Resources > Engine > Packages.
However, if the package is referenced through a linked custom transformer, the extraction process may not complete successfully. As a result, required Python modules or package contents are not available at runtime, leading to import errors.
How to Resolve It
To ensure the package extracts correctly and is available during execution, please do the following steps:
1. Embed the custom transformer in the workspace. This allows FME Flow to properly detect and extract the package contents during the first run.
2. Run the workspace in FME Flow. This triggers the extraction of the .fpkg contents into Resources > Engine > Packages > <build>-<os>.
3. Verify the package files are extracted and that the expected files exist in the Packages directory.
4. Re-link the custom transformer in the workspace. Edit the workspace to switch the transformer back to a linked version.
5. Republish the workspace and custom transformer, and make sure that the custom transformer is published to the same repository as the workspace.
6. Run the workspace again.
FME Flow should now correctly reference the extracted package modules and complete successfully.
Additional Notes
- This behavior is specific to how FME Flow handles package extraction with linked custom transformers.
- Embedding the transformer for the initial run ensures all dependencies are correctly initialized before switching back to a linked workflow.
Additional Resources
If the suggested instructions do not resolve your problem, please contact Safe Software Support for further troubleshooting.