It's great that the issue is identified! Would you mind doing a test where you change policy from dynamic to static on the name="
staticMetadata" in the modules/matterhorn-search-service-impl/src/main/resources/search-service.xml?
In theory, this should prevent the Search Service from loading until at least one StaticMetadataService is available and, theory, it should allow more than one to load dynamically.
FYI: Matterhorn loads 2 classes that implement the StaticMetadataService interface, one parses media package metadata, StaticMetadataServiceMediaPackageImpl , and the other parses dublin core catalog metadata, StaticMetadataServiceDublinCoreImpl.
If both are needed, then the cardinality should be 2..n. For some reason, that I no longer recall, when I looked at the code yesterday, it seemed like the Episode Service relies on both, but Search Service only really needs the dublin core parser.