public override IRemoteSupplier lookup(System.String supplierName)
        {
            MessageEnvelope message = new MessageEnvelope();
            MessageBody body = new MessageBody();

            LookupRequest request = new LookupRequest();
            request.SupplierName = supplierName;

            body.selectLookupRequest(request);
            message.Body = body;
            message.Id = this.ToString();

            IRemoteSupplier supplier = null;
            lock (clients)
            {
                foreach(ITransport client in clients)
                {
                    MessageEnvelope result = client.call(message, callTimeout);
                    if (result.Body.LookupResult.Code.Value == LookupResultCode.EnumType.success)
                    {
                        supplier = new RemoteSupplier(supplierName, client);
                        break;
                    }
                }
            }

            if (supplier == null)
                throw new Exception("Error when accessing to supplier '" + supplierName + "'! Unable to find any suitable supplier!");
            return supplier;
        }