public Guid Send()
        {
            ProductManagerClient pm = HalanServices.CreateProductManager();

            try {
                Guid id = Guid.NewGuid();
                ErrorReportRequest req = new ErrorReportRequest();
                req.Reference = id.ToString();
                req.Message   = _error.Message;
                if (_error.Exception != null)
                {
                    Exception            e = _error.Exception;
                    ErrorReportException errorRepExcept = new ErrorReportException();
                    req.Exception = errorRepExcept;
                    while (e != null)
                    {
                        errorRepExcept.Message    = e.Message;
                        errorRepExcept.StackTrace = e.StackTrace;
                        errorRepExcept.Source     = e.Source;
                        errorRepExcept.Type       = e.GetType().ToString();

                        e = e.InnerException;
                        if (e != null)
                        {
                            errorRepExcept.InnerException = new ErrorReportException();
                            errorRepExcept = errorRepExcept.InnerException;
                        }
                    }
                }

                req.ProductName            = _appData.Product;
                req.ProductVersion         = _appData.Version.ToString(4);
                req.DotNetFrameworkVersion = Environment.Version.ToString();
                req.OperatingSystem        = Environment.OSVersion.VersionString;
                req.ReportID = Tools.EncryptSimple(_appData.Id);

                if (_managerState != null && _managerState.Length > 0)
                {
                    req.ManagerState = Tools.EncryptSimple(_managerState.Concat(" "));
                }

                ErrorReportResponse resp = pm.ReportError(req);

                if (!resp.Successful)
                {
                    throw new FailedToSendErrorReportException(resp.Message);
                }

                return(id);
            } finally {
                pm.Close();
            }
        }