/// <summary>
        /// Subscribes for messages from other instance Flexberry Service Bus.
        /// Clones message types and updates subscriptions in all remote instance Flexberry Service Bus.
        /// </summary>
        /// <param name="cloneMessageTypes">Clone all message types from remote instance Flexberry Service Bus.</param>
        private void Subscribe(bool cloneMessageTypes)
        {
            foreach (Bus serviceBus in _repository.GetAllServiceBuses())
            {
                try
                {
                    _logger.LogDebugMessage(nameof(CrossBusCommunicationService), $"Working with remote SB '{serviceBus.Name ?? "<noname>"}' ({serviceBus.ManagerAddress}).");

                    var client = new ChannelFactory <IServiceBusInterop>(new BasicHttpBinding()).CreateChannel(new EndpointAddress(serviceBus.ManagerAddress));
                    if (client == null)
                    {
                        throw new InvalidOperationException($"Unable to create WCF client to the SB ({serviceBus.ManagerAddress}).");
                    }

                    if (cloneMessageTypes)
                    {
                        NameCommentStruct[] msgTypes = client.GetMsgTypesFromBus(ServiceID4SB);

                        _logger.LogDebugMessage(nameof(CrossBusCommunicationService), $"Loaded {msgTypes.Length} message types from remote SB '{serviceBus.Name ?? "<noname>"}'.");

                        foreach (NameCommentStruct type in msgTypes.Where(type => _repository.GetAllMessageTypes().All(t => t.ID != type.Id)))
                        {
                            _logger.LogDebugMessage(nameof(CrossBusCommunicationService), $"Cloning message type {type.Id} ({type.Name}).");

                            ServiceBusMessageType newType = new ServiceBusMessageType {
                                Name = type.Name, Description = type.Comment, ID = type.Id
                            };
                            _subscriptionsManager.CreateMessageType(newType);
                        }
                    }
                    else
                    {
                        client.UpdateClientSubscribesForMsgs(ServiceID4SB);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogUnhandledException(e, title: nameof(CrossBusCommunicationService));
                }
            }
        }