BDC Rocks

This BDC-thing is awesome, but creating the XML file is like what Ford Fairlane said with the cheese grater. :)  Tried with two 3rd party tools as well and they were not making it easier. Just one quick error message to share with the public, maybe it helps someone. later, I'll share the whole process, it's actually very nice.

ISSUE:

When configuring BDC to use a web service data source, you get an error message:

The LobSystem/LobSystemInstance Property 'WsdlFetchUrl' is missing

RESOLUTION:

The problem was that I was defining the WsdlFetchUrl property on the LobSystemInstance and not on the LobSystem level.

MORE INFORMATION:

This nice call stack maybe helps you find this article ;)

An exception was caught in BdcSearchPH interop while getting the Id stream:
Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MissingMetadataPropertyException: The LobSystem/LobSystemInstance Property 'WsdlFetchUrl' is missing
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.WebServiceSystemPropertyParser.GetUri(NamedPropertyDictionary metadataObjectProperties, String uriPropertyName)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.ProxyAssemblyCache.GenerateProxyAssembly(String lobSystemName)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.ProxyAssemblyCache.MaterializeAssembly(String lobSystemName)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.ProxyAssemblyCache.GetProxyAssembly(String lobSystemName)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.WebServiceConnectionManager.GetDynamicProxyType(NamedPropertyDictionary lobSystemInstanceProperties)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.WebServiceConnectionManager.Initialize(NamedPropertyDictionary lobSystemInstanceProperties)
at Microsoft.Office.Server.ApplicationRegistry.Infrastructure.ConnectionManagerFactory.GetConnectionManager(LobSystemInstance systeminstance)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.WebServiceSystemUtility.Initialize(LobSystemInstance lobSystemInstance)
at Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.WebService.WebServiceSystemUtility.ExecuteStatic(MethodInstance methodInstance, LobSystemInstance lobSystemInstance, Object[]& args)
at Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DataClass.ExecuteInternal(LobSystemInstance lobSystemInstance, LobSystem lobSystem, MethodInstance methodInstanceToExecute, Method methodToExecute, ParameterCollection inputParameters, Object[]& overrideArgs)
at Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.ExecuteInternal(LobSystemInstance lobSystemInstance, LobSystem lobSystem, MethodInstance methodInstanceToExecute, Method methodToExecute, ParameterCollection inputParameters, Object[]& overrideArgs)
at Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.Execute(MethodInstance methodInstanceToExecute, LobSystemInstance lobSystemInstance, Object[]& overrideArgs)
at Microsoft.Office.Server.ApplicationRegistry.Search.IdEnumeratorChunker.FetchChunk(IEntityInstance preceedingEntityInstance)
at Microsoft.Office.Server.ApplicationRegistry.Search.IdEnumeratorChunker..ctor(MethodInstance idEnumerator, LobSystemInstance lobSystemInstance) at Microsoft.Office.Server.ApplicationRegistry.Search.ChunkingEntityInstanceEnumerator..ctor(MethodInstance idEnumerator, LobSystemInstance lobSystemInstance) at Microsoft.Office.Server.ApplicationRegistry.Search.SearchStaticHelper.GetEntityInstanceIdEnumerator(UInt32 entityId, UInt32 systemInstanceId)
at Microsoft.Office.Server.ApplicationRegistry.Search.SearchStaticHelper.GetEntityInstanceIds(UInt32 entityId, UInt32 systemInstanceId)
at Microsoft.Office.Server.ApplicationRegistry.Search.SearchStaticHelperWrapper.GetEntityInstanceIds(String sspAppId, UInt32 entityId, UInt32 systemInstanceId)
at GetEntityInstances(Char* pcwszAppName, gcroot<Microsoft::Office::Server::ApplicationRegistry::Search::EntityInstanceEnumeratorHandle ^>* gcEntityInstanceEnumeratorHandle, UInt32 uiEntityId, UInt32 uiSystemInstanceId, Void* hImpersonationToken)