This isn't an answer but more information on this problem.
When inspecting the requests, we can see the full error message
{
"ExceptionDetail":{
"HelpLink":null,
"InnerException":{
"HelpLink":null,
"InnerException":{
"HelpLink":null,
"InnerException":{
"HelpLink":null,
"InnerException":{
"HelpLink":null,
"InnerException":null,
"Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
"StackTrace":" at Microsoft.OData.Core.ReaderValidationUtils.VerifyPayloadTypeDefined(String payloadTypeName, IEdmType payloadType)\u000d\u000a at Microsoft.OData.Core.ReaderValidationUtils.ResolveAndValidateNonPrimitiveTargetType(EdmTypeKind expectedTypeKind, IEdmTypeReference expectedTypeReference, EdmTypeKind payloadTypeKind, IEdmType payloadType, String payloadTypeName, IEdmModel model, ODataMessageReaderSettings messageReaderSettings)\u000d\u000a at Microsoft.OData.Core.ReaderValidationUtils.ResolvePayloadTypeNameAndComputeTargetType(EdmTypeKind expectedTypeKind, IEdmType defaultPrimitivePayloadType, IEdmTypeReference expectedTypeReference, String payloadTypeName, IEdmModel model, ODataMessageReaderSettings messageReaderSettings, Func`1 typeKindFromPayloadFunc, EdmTypeKind& targetTypeKind, SerializationTypeNameAnnotation& serializationTypeNameAnnotation)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadNonEntityValueImplementation(String payloadTypeName, IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue, Boolean isTopLevelPropertyValue, Boolean insideComplexValue, String propertyName, Nullable`1 isDynamicProperty)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadCollectionValue(IEdmCollectionTypeReference collectionValueTypeReference, String payloadTypeName, SerializationTypeNameAnnotation serializationTypeNameAnnotation)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadNonEntityValueImplementation(String payloadTypeName, IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue, Boolean isTopLevelPropertyValue, Boolean insideComplexValue, String propertyName, Nullable`1 isDynamicProperty)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadOpenProperty(IODataJsonLightReaderEntryState entryState, String propertyName, Boolean propertyWithValue)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadUndeclaredProperty(IODataJsonLightReaderEntryState entryState, String propertyName, Boolean propertyWithValue)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadEntryPropertyWithValue(IODataJsonLightReaderEntryState entryState, String propertyName)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.<>c__DisplayClass2.<ReadEntryContent>b__0(PropertyParsingResult propertyParsingResult, String propertyName)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightDeserializer.ProcessProperty(DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, Func`2 readPropertyAnnotationValue, Action`2 handleProperty)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadEntryContent(IODataJsonLightReaderEntryState entryState)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightReader.ReadEntryStart(DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, SelectedPropertiesNode selectedProperties)\u000d\u000a at Microsoft.OData.Core.JsonLight.ODataJsonLightReader.ReadAtFeedStartImplementationSynchronously()\u000d\u000a at Microsoft.OData.Core.ODataReaderCore.ReadImplementation()\u000d\u000a at Microsoft.OData.Core.ODataReaderCore.InterceptException[T](Func`1 action)\u000d\u000a at Microsoft.OData.Client.Materialization.ODataReaderWrapper.Read()\u000d\u000a at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead()",
"Type":"Microsoft.OData.Core.ODataException"
},
"Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
"StackTrace":" at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead()\u000d\u000a at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryStartReadFeedOrEntry()\u000d\u000a at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryReadEntry(MaterializerEntry& entry)\u000d\u000a at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.<LazyReadEntries>d__0.MoveNext()\u000d\u000a at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.Read()\u000d\u000a at Microsoft.OData.Client.Materialization.ODataEntityMaterializer.ReadImplementation()\u000d\u000a at Microsoft.OData.Client.MaterializeAtom.MoveNextInternal()\u000d\u000a at Microsoft.OData.Client.MaterializeAtom.MoveNext()\u000d\u000a at System.Linq.Enumerable.<CastIterator>d__94`1.MoveNext()\u000d\u000a at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\u000d\u000a at Microsoft.OData.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression)\u000d\u000a at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)",
"Type":"System.InvalidOperationException"
},
"Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
"StackTrace":null,
"Type":"Tridion.TopologyManager.Client.TopologyManagerClient+DataServiceException"
},
"Message":"Unable to connect to the Discovery Service",
"StackTrace":null,
"Type":"System.Exception"
},
"Message":"Unable to load the list of capabilites",
"StackTrace":" at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)\u000d\u000a at Tridion.Web.UI.Models.CME.TopologyManager.GetListCapabilities(String cdEnvironmentId)\u000d\u000a at SyncInvokeGetListCapabilities(Object , Object[] , Object[] )\u000d\u000a at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)",
"Type":"System.Exception"
},
"ExceptionType":"System.Exception",
"Message":"Unable to load the list of capabilites",
"StackTrace":" at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)\u000d\u000a at Tridion.Web.UI.Models.CME.TopologyManager.GetListCapabilities(String cdEnvironmentId)\u000d\u000a at SyncInvokeGetListCapabilities(Object , Object[] , Object[] )\u000d\u000a at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)"
}
The discovery service url can be opened from the server that hosts the CM (so it doesn't seem to be a problem with closed ports or wrong ip addresses/hostnames.
The output of the registration tool is this :
2017-10-10 12:14:45,914 INFO Main - Result of tool execution is:
[ {
"Capability" : "com.sdl.web.discovery.datalayer.model.ContentServiceCapability",
"id" : "DefaultContentService",
"lastUpdateTime" : 1507560195277,
"uri" : "http://*********:9181/content.svc"
}, {
"Capability" : "com.sdl.web.discovery.datalayer.model.DeployerCapability",
"id" : "DefaultDeployer",
"lastUpdateTime" : 1507553520202,
"strategy" : "MIRROR",
"uri" : "http://*********:9184/httpupload",
"uris" : [ "java.util.ArrayList", [ {
"uri" : "http://*********:9184/httpupload",
"destinationName" : "ProdDep1"
}, {
"uri" : "http://*********:9184/httpupload",
"destinationName" : "ProdDep2"
} ] ],
"extensionProperties" : [ "java.util.ArrayList", [ {
"key" : "encoding",
"value" : "UTF-8"
}, {
"key" : "undo.enabled",
"value" : "false"
} ] ]
}, {
"Capability" : "com.sdl.web.discovery.datalayer.model.WebCapability",
"id" : "DefaultWeb",
"lastUpdateTime" : 1507629031691
}, {
"Capability" : "com.sdl.web.discovery.datalayer.model.ContextServiceCapability",
"id" : "DefaultContextService",
"lastUpdateTime" : 1507560195385,
"uri" : "http://*********:9187/context.svc"
}, {
"Capability" : "com.sdl.web.discovery.datalayer.model.ContextualImageDeliveryCapability",
"id" : "DefaultContextualImageDelivery",
"lastUpdateTime" : 1507560686209,
"uri" : "http://********:9188/cid"
}, {
"Capability" : "com.sdl.web.discovery.datalayer.model.TokenServiceCapability",
"id" : "DefaultTokenService",
"lastUpdateTime" : 1507562957588,
"uri" : "http://*******:9182/token.svc"
} ]
UPDATE
It does seem to have something to do with the deployer that's set as "MIRRORED".
We removed all capabilities (except for token capability) and than the list did display correctly.
We added some more capabilities one by one, and from the moment we added the deployer capability, the error reappeared.
Could this be a bug in the topology manager client ? Or is there something wrong with the way we configured the mirroring deployers ?
java -jar discovery-registration.jar read
) for the Live environment?