Example #1
0
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, envelopeIdentifier, status));
                //else
                //    return ImportV2( payload, envelopeIdentifier, status );
            }
            else
            {
                LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
                LoggingHelper.WriteLogFile(1, "lopp_" + item.EnvelopeIdentifier, payload, "", false);
                input = JsonConvert.DeserializeObject <InputEntity>(item.DecodedResource.ToString());

                return(Import(input, envelopeIdentifier, status));
            }
        }
        }           //

        /// <summary>
        /// Retrieve an envelop from the registry and do import
        /// </summary>
        /// <param name="envelopeId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool ImportByEnvelopeId(string envelopeId, SaveStatus status)
        {
            //this is currently specific, assumes envelop contains a credential
            //can use the hack fo GetResourceType to determine the type, and then call the appropriate import method

            if (string.IsNullOrWhiteSpace(envelopeId))
            {
                status.AddError("ImportByEnvelope - a valid envelope id must be provided");
                return(false);
            }

            string statusMessage = "";
            //EntityServices mgr = new EntityServices();
            string ctdlType = "";

            try
            {
                ReadEnvelope envelope = RegistryServices.GetEnvelope(envelopeId, ref statusMessage, ref ctdlType);
                if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                {
                    return(ProcessEnvelope(envelope, status));
                }
                else
                {
                    return(false);
                }
            } catch (Exception ex)
            {
                LoggingHelper.LogError(ex, "ImportCredential.ImportByEnvelopeId()");
                return(false);
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(UtilityManager.GetAppKeyValue("logFileTraceLevel", 5), item.EnvelopeCetermsCtid + "_ConceptScheme", payload, "", false);

            //just store input for now
            return(Import(payload, envelopeIdentifier, status));

            //return true;
        } //
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            status.DocumentOwnedBy = item.documentOwnedBy;

            if (item.documentPublishedBy != null)
            {
                if (item.documentOwnedBy == null || (item.documentPublishedBy != item.documentOwnedBy))
                {
                    status.DocumentPublishedBy = item.documentPublishedBy;
                }
            }
            else
            {
                //will need to check elsewhere
                //OR as part of import check if existing one had 3rd party publisher
            }
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            //Already done in  RegistryImport
            //LoggingHelper.WriteLogFile( UtilityManager.GetAppKeyValue( "logFileTraceLevel", 5 ), item.EnvelopeCetermsCtid + "_assessment", payload, "", false );

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, envelopeIdentifier, status));
                //else
                //    return ImportV2( payload, envelopeIdentifier, status );
            }
            else
            {
                status.AddError(thisClassName + ".ImportByResourceUrl - 2019-05-01 ONLY GRAPH BASED IMPORTS ARE HANDLED");
                return(false);

                //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
                //            LoggingHelper.WriteLogFile( 1, "asmt_" + item.EnvelopeIdentifier, payload, "", false );
                //            input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );

                //            return Import( input, envelopeIdentifier, status );
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }
            //
            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            status.DocumentOwnedBy = item.documentOwnedBy;
            if (item.documentOwnedBy != null && item.documentPublishedBy != null && item.documentPublishedBy != item.documentOwnedBy)
            {
                status.DocumentPublishedBy = item.documentPublishedBy;
            }
            //
            string payload = item.DecodedResource.ToString();

            status.EnvelopeId = item.EnvelopeIdentifier;
            string ctdlType = RegistryServices.GetResourceType(payload);

            //string envelopeUrl = RegistryServices.GetEnvelopeUrl( status.EnvelopeId );
            //Already done in  RegistryImport
            //LoggingHelper.WriteLogFile( UtilityManager.GetAppKeyValue( "logFileTraceLevel", 5 ), item.EnvelopeCetermsCtid + "_organization", payload, "", false );


            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, status));
                //else
                //    return ImportV2( payload, envelopeIdentifier, status );
            }
            else
            {
                status.AddError("Importing of an organization resource payload is no longer supported. Please provide a /graph/ input.");
                //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
                //LoggingHelper.WriteLogFile( 1, "org_" + item.EnvelopeIdentifier, payload, "", false );
                //input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );

                //return Import( input, envelopeIdentifier, status );
                return(false);
            }
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            status.DocumentOwnedBy = item.documentOwnedBy;

            if (item.documentPublishedBy != null)
            {
                if (item.documentOwnedBy == null || (item.documentPublishedBy != item.documentOwnedBy))
                {
                    status.DocumentPublishedBy = item.documentPublishedBy;
                }
            }
            else
            {
                //will need to check elsewhere
                //OR as part of import check if existing one had 3rd party publisher
            }
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(UtilityManager.GetAppKeyValue("logFileTraceLevel", 5), item.EnvelopeCetermsCtid + "_competencyFrameswork", payload, "", false);
            //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() );

            //InputEntity framework = GetFramework( input.Graph );
            //LoggingHelper.DoTrace( 5, "		framework name: " + framework.name.ToString() );

            //just store input for now
            return(Import(payload, envelopeIdentifier, status));

            //return true;
        } //
Example #7
0
        /// <summary>
        /// Retrieve an resource from the registry by ctid and do import
        /// </summary>
        /// <param name="ctid"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool ImportByCtid(string ctid, SaveStatus status)
        {
            if (string.IsNullOrWhiteSpace(ctid))
            {
                status.AddError(thisClassName + ".ImportByCtid - a valid ctid must be provided");
                return(false);
            }

            //this is currently specific, assumes envelop contains a credential
            //can use the hack for GetResourceType to determine the type, and then call the appropriate import method
            string         statusMessage = "";
            EntityServices mgr           = new EntityServices();
            string         ctdlType      = "";

            try
            {
                //probably always want to get by envelope
                ReadEnvelope envelope = RegistryServices.GetEnvelopeByCtid(ctid, ref statusMessage, ref ctdlType);
                if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                {
                    return(CustomProcessEnvelope(envelope, status));
                }
                else
                {
                    return(false);
                }
                //string payload = RegistryServices.GetResourceByCtid( ctid, ref ctdlType, ref statusMessage );

                //if ( !string.IsNullOrWhiteSpace( payload ) )
                //{
                //	input = JsonConvert.DeserializeObject<InputEntity>( payload.ToString() );
                //	//ctdlType = RegistryServices.GetResourceType( payload );
                //	return Import( mgr, input, "", status );
                //}
                //else
                //	return false;
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + string.Format(".ImportByCtid(). CTID: {0}", ctid));
                status.AddError(ex.Message);
                if (ex.Message.IndexOf("Path '@context', line 1") > 0)
                {
                    status.AddWarning("The referenced registry document is using an old schema. Please republish it with the latest schema!");
                }
                return(false);
            }
        }
Example #8
0
        public bool CustomProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            //handle
            bool          importSuccessfull = ProcessEnvelope(item, status);
            List <string> messages          = new List <string>();
            string        importError       = string.Join("\r\n", status.GetAllMessages().ToArray());
            //store envelope
            int newImportId = importHelper.Add(item, CodesManager.ENTITY_TYPE_PATHWAY, status.Ctid, importSuccessfull, importError, ref messages);

            if (newImportId > 0 && status.Messages != null && status.Messages.Count > 0)
            {
                //add indicator of current recored
                string msg = string.Format("========= Messages for {4}, EnvelopeIdentifier: {0}, ctid: {1}, Id: {2}, rowId: {3} =========", item.EnvelopeIdentifier, status.Ctid, status.DocumentId, status.DocumentRowId, thisClassName);
                importHelper.AddMessages(newImportId, status, ref messages);
            }
            return(importSuccessfull);
        }
        /// <summary>
        /// Custom version, typically called outside a scheduled import
        /// </summary>
        /// <param name="item"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool CustomProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            EntityServices mgr = new EntityServices();
            bool           importSuccessfull = ProcessEnvelope(item, status);
            List <string>  messages          = new List <string>();
            string         importError       = string.Join("\r\n", status.GetAllMessages().ToArray());
            //store envelope
            int newImportId = importHelper.Add(item, 2, status.Ctid, importSuccessfull, importError, ref messages);

            if (newImportId > 0 && status.Messages != null && status.Messages.Count > 0)
            {
                //add indicator of current recored
                string msg = string.Format("========= Messages for Organization, EnvelopeIdentifier: {0}, ctid: {1}, Id: {2}, rowId: {3} =========", item.EnvelopeIdentifier, status.Ctid, status.DocumentId, status.DocumentRowId);
                importHelper.AddMessages(newImportId, status, ref messages);
            }
            return(importSuccessfull);
        }
Example #10
0
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }
            //
            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                status.SetEnvelopeCreated(createDate);
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                status.SetEnvelopeUpdated(envelopeUpdateDate);
            }
            //
            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.WriteLogFile(UtilityManager.GetAppKeyValue("logFileTraceLevel", 5), item.EnvelopeCetermsCtid + "_costManifest", payload, "", false);

            if (ImportServiceHelpers.IsAGraphResource(payload))
            {
                //if ( payload.IndexOf( "\"en\":" ) > 0 )
                return(ImportV3(payload, "", status));
                //else
                //    return ImportV2( payload, "", status );
            }
            else
            {
                status.AddError("A valid graph object must be provided for a cost manifest.");
                return(false);
                //LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
                //            LoggingHelper.WriteLogFile( 1, "costManifest_" + item.EnvelopeIdentifier, payload, "", false );
                //            input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );

                //            return Import( input, envelopeIdentifier, status );
            }
        }
        public static string GetCtidFromUnknownEnvelope(ReadEnvelope item)
        {
            string ctid = "";

            //string envelopeId = "";
            try
            {
                RegistryObject ro = new RegistryObject(item.DecodedResource.ToString());
                ctid = ro.Ctid;

                //TODO - this will have to change for type of @graph
                //envelopeId = item.EnvelopeIdentifier;
                //ctid = item.EnvelopeCetermsCtid ?? "";
                //if ( !string.IsNullOrWhiteSpace( ctid ) )
                //    return ctid;

                //string payload = item.DecodedResource.ToString();
                //if ( payload.IndexOf( "@graph" ) > -1 )
                //{
                //    UnknownPayload input = JsonConvert.DeserializeObject<UnknownPayload>( item.DecodedResource.ToString() );
                //    //extract from the @id
                //    if ( !string.IsNullOrWhiteSpace( input.Ctid ) )
                //    {
                //        ctid = input.Ctid;
                //    }
                //    else if ( !string.IsNullOrWhiteSpace( input.CtdlId ) )
                //    {
                //        int pos = input.CtdlId.LastIndexOf( "/" );
                //        ctid = input.CtdlId.Substring( pos );
                //    }
                //}
                //else
                //{
                //    UnknownPayload input = JsonConvert.DeserializeObject<UnknownPayload>( item.DecodedResource.ToString() );
                //    ctid = input.Ctid;
                //}
            }
            catch (Exception ex)
            {
                LoggingHelper.DoTrace(2, "GetCtidFromUnknownEnvelope - unable to extract ctid from envelope");
            }

            return(ctid);
        }
        public bool ProcessEnvelope(ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError("A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                //entity.DocumentUpdatedAt = updateDate;
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                //entity.DocumentUpdatedAt = envelopeUpdateDate;
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            //if ( ImportServiceHelpers.IsAGraphResource( payload ) )
            //{
            //if ( payload.IndexOf( "\"en\":" ) > 0 )
            return(ImportV3(payload, envelopeIdentifier, status));
            //else
            //    return ImportV2( payload, envelopeIdentifier, status );
            //}
            //else
            //{
            //    LoggingHelper.DoTrace( 5, "		envelopeUrl: " + envelopeUrl );
            //    LoggingHelper.WriteLogFile( 1, "credential_" + item.EnvelopeIdentifier, payload, "", false );
            //    input = JsonConvert.DeserializeObject<InputEntity>( item.DecodedResource.ToString() );


            //    return Import( input, envelopeIdentifier, status, envelopeUpdateDate );
            //}
        }
        /// <summary>
        /// Add envelope and related data to the staging table
        /// </summary>
        /// <param name="item"></param>
        /// <param name="entityTypeId"></param>
        /// <param name="ctid"></param>
        /// <param name="importSuccessfull"></param>
        /// <param name="importErrorMsg"></param>
        /// <param name="messages"></param>
        /// <returns></returns>
        public int Add(ReadEnvelope item, int entityTypeId, string ctid, bool importSuccessfull,
                       string importErrorMsg, ref List <string> messages)
        {
            ThisEntity entity = new ThisEntity();

            entity.EntityTypedId     = entityTypeId;
            entity.EnvelopeId        = item.EnvelopeIdentifier;
            entity.Ctid              = ctid;
            entity.ResourcePublicKey = item.ResourcePublicKey;
            DateTime updateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out updateDate))
            {
                entity.DocumentUpdatedAt = updateDate;
            }

            entity.Message = importErrorMsg;
            entity.Payload = item.DecodedResource.ToString();

            return(new EntityMgr().Add(entity, ref messages));
        }
Example #14
0
        /// <summary>
        /// Retrieve an envelop from the registry and do import
        /// </summary>
        /// <param name="envelopeId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool ImportByEnvelopeId(string envelopeId, SaveStatus status)
        {
            //this is currently specific, assumes envelop contains a credential
            //can use the hack fo GetResourceType to determine the type, and then call the appropriate import method

            if (string.IsNullOrWhiteSpace(envelopeId))
            {
                status.AddError(thisClassName + ".ImportByEnvelope - a valid envelope id must be provided");
                return(false);
            }

            string statusMessage = "";
            //EntityServices mgr = new EntityServices();
            string ctdlType = "";

            try
            {
                ReadEnvelope envelope = RegistryServices.GetEnvelope(envelopeId, ref statusMessage, ref ctdlType);
                if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                {
                    return(CustomProcessEnvelope(envelope, status));
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, thisClassName + ".ImportByEnvelopeId()");
                status.AddError(ex.Message);
                if (ex.Message.IndexOf("Path '@context', line 1") > 0)
                {
                    status.AddWarning("The referenced registry document is using an old schema. Please republish it with the latest schema!");
                }
                return(false);
            }
        }
        public bool ProcessEnvelope(EntityServices mgr, ReadEnvelope item, SaveStatus status)
        {
            if (item == null || string.IsNullOrWhiteSpace(item.EnvelopeIdentifier))
            {
                status.AddError(thisClassName + " A valid ReadEnvelope must be provided.");
                return(false);
            }

            DateTime createDate         = new DateTime();
            DateTime envelopeUpdateDate = new DateTime();

            if (DateTime.TryParse(item.NodeHeaders.CreatedAt.Replace("UTC", "").Trim(), out createDate))
            {
                //entity.DocumentUpdatedAt = updateDate;
            }
            if (DateTime.TryParse(item.NodeHeaders.UpdatedAt.Replace("UTC", "").Trim(), out envelopeUpdateDate))
            {
                //entity.DocumentUpdatedAt = envelopeUpdateDate;
            }

            string payload            = item.DecodedResource.ToString();
            string envelopeIdentifier = item.EnvelopeIdentifier;
            string ctdlType           = RegistryServices.GetResourceType(payload);
            string envelopeUrl        = RegistryServices.GetEnvelopeUrl(envelopeIdentifier);

            LoggingHelper.DoTrace(5, "		envelopeUrl: "+ envelopeUrl);
            LoggingHelper.WriteLogFile(1, item.EnvelopeIdentifier + "_competencyFrameswork", payload, "", false);
            //input = JsonConvert.DeserializeObject<InputGraph>( item.DecodedResource.ToString() );

            //InputEntity framework = GetFramework( input.Graph );
            //LoggingHelper.DoTrace( 5, "		framework name: " + framework.name.ToString() );

            //just store input for now
            return(Import(mgr, payload, envelopeIdentifier, status));

            //return true;
        } //
        /// <summary>
        /// Retrieve an envelop from the registry and do import
        /// </summary>
        /// <param name="envelopeId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public bool ImportByEnvelopeId(string envelopeId, SaveStatus status)
        {
            //this is currently specific, assumes envelop contains a credential
            //can use the hack for GetResourceType to determine the type, and then call the appropriate import method

            if (string.IsNullOrWhiteSpace(envelopeId))
            {
                status.AddError("ImportByEnvelope - a valid envelope id must be provided");
                return(false);
            }

            string statusMessage = "";
            string ctdlType      = "";

            try
            {
                ReadEnvelope envelope = RegistryServices.GetEnvelope(envelopeId, ref statusMessage, ref ctdlType);
                if (envelope == null || string.IsNullOrWhiteSpace(envelope.EnvelopeType))
                {
                    string defCommunity = UtilityManager.GetAppKeyValue("defaultCommunity");
                    string community    = UtilityManager.GetAppKeyValue("additionalCommunity");
                    if (defCommunity != community)
                    {
                        envelope = RegistryServices.GetEnvelope(envelopeId, ref statusMessage, ref ctdlType, community);
                    }
                }

                if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                {
                    LoggingHelper.DoTrace(4, string.Format("RegistryServices.ImportByEnvelopeId ctdlType: {0}, EnvelopeId: {1} ", ctdlType, envelopeId));
                    ctdlType = ctdlType.Replace("ceterms:", "");

                    switch (ctdlType.ToLower())
                    {
                    case "credentialorganization":
                    case "qacredentialorganization":     //what distinctions do we need for QA orgs?
                    case "organization":
                        return(new ImportOrganization().CustomProcessEnvelope(envelope, status));

                    //break;CredentialOrganization
                    case "assessmentprofile":
                        return(new ImportAssessment().CustomProcessEnvelope(envelope, status));

                    //break;
                    case "learningopportunityprofile":
                        return(new ImportLearningOpportunties().CustomProcessEnvelope(envelope, status));

                    //break;
                    case "conditionmanifest":
                        return(new ImportAssessment().CustomProcessEnvelope(envelope, status));

                    //break;
                    case "costmanifest":
                        return(new ImportLearningOpportunties().CustomProcessEnvelope(envelope, status));

                    //break;
                    default:
                        //default to credential
                        return(new ImportCredential().CustomProcessRequest(envelope, status));
                        //break;
                    }
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(ex, string.Format("RegistryServices`.ImportByEnvelopeId(). ctdlType: {0}", ctdlType));
                status.AddError(ex.Message);
                if (ex.Message.IndexOf("Path '@context', line 1") > 0)
                {
                    status.AddWarning("The referenced registry document is using an old schema. Please republish it with the latest schema!");
                }
                return(false);
            }
        }
        /// <summary>
        /// Use search to get the envelope for a ctid
        /// </summary>
        /// <param name="ctid"></param>
        /// <param name="statusMessage"></param>
        /// <param name="ctdlType"></param>
        /// <returns></returns>
        public static ReadEnvelope GetEnvelopeByCtid(string ctid, ref string statusMessage, ref string ctdlType, string community = "")
        {
            string document = "";

            //perhaps this should be done in the caller. It could check the default or previous import source
            if (string.IsNullOrWhiteSpace(community))
            {
                community = UtilityManager.GetAppKeyValue("defaultCommunity");
            }
            string additionalCommunity = UtilityManager.GetAppKeyValue("additionalCommunity");

            string credentialEngineAPIKey = UtilityManager.GetAppKeyValue("CredentialEngineAPIKey");
            //

            string searchUrl = GetRegistrySearchUrl(community);

            searchUrl = searchUrl + "ctid=" + ctid.ToLower();

            LoggingHelper.DoTrace(5, string.Format("RegistryServices.ImportByCtid ctid: {0}, searchUrl: {1} ", ctid, searchUrl));
            ReadEnvelope        envelope = new ReadEnvelope();
            List <ReadEnvelope> list     = new List <ReadEnvelope>();

            try
            {
                // Create a request for the URL.
                WebRequest request = WebRequest.Create(searchUrl);
                request.Credentials = CredentialCache.DefaultCredentials;

                var hdr = new WebHeaderCollection
                {
                    { "Authorization", "Token  " + credentialEngineAPIKey }
                };
                request.Headers.Add(hdr);

                HttpWebResponse response   = ( HttpWebResponse )request.GetResponse();
                Stream          dataStream = response.GetResponseStream();

                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                document = reader.ReadToEnd();

                // Cleanup the streams and the response.

                reader.Close();
                dataStream.Close();
                response.Close();

                //map to list
                list = JsonConvert.DeserializeObject <List <ReadEnvelope> >(document);
                //only expecting one
                if (list != null && list.Count > 0)
                {
                    envelope = list[0];

                    if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                    {
                        string payload = envelope.DecodedResource.ToString();
                        ctdlType = RegistryServices.GetResourceType(payload);
                    }
                }
            }
            catch (Exception exc)
            {
                LoggingHelper.LogError(exc, "RegistryServices.GetEnvelopeByCtid");
                statusMessage = exc.Message;
            }
            return(envelope);
        }
        /// <summary>
        /// Retrieve an envelope from the registry
        /// </summary>
        /// <param name="envelopeId"></param>
        /// <param name="statusMessage"></param>
        /// <param name="ctdlType"></param>
        /// <returns></returns>
        public static ReadEnvelope GetEnvelope(string envelopeId, ref string statusMessage, ref string ctdlType, string community = "")
        {
            string document = "";

            //need to pass in an override community - eventually
            if (string.IsNullOrWhiteSpace(community))
            {
                community = UtilityManager.GetAppKeyValue("defaultCommunity");
            }
            string serviceUri = GetEnvelopeUrl(envelopeId, community);

            serviceUri = string.Format(serviceUri, envelopeId);
            LoggingHelper.DoTrace(5, string.Format("RegistryServices.GetEnvelope envelopeId: {0}, serviceUri: {1} ", envelopeId, serviceUri));
            ReadEnvelope envelope = new ReadEnvelope();

            try
            {
                // Create a request for the URL.
                WebRequest request = WebRequest.Create(serviceUri);
                // If required by the server, set the credentials.
                request.Credentials = CredentialCache.DefaultCredentials;
                var hdr = new WebHeaderCollection
                {
                    { "Authorization", "Token  " + credentialEngineAPIKey }
                };
                request.Headers.Add(hdr);

                //Get the response.
                HttpWebResponse response = ( HttpWebResponse )request.GetResponse();

                // Get the stream containing content returned by the server.
                Stream dataStream = response.GetResponseStream();

                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                document = reader.ReadToEnd();

                // Cleanup the streams and the response.

                reader.Close();
                dataStream.Close();
                response.Close();

                //map to the default envelope
                envelope = JsonConvert.DeserializeObject <ReadEnvelope>(document);

                if (envelope != null && !string.IsNullOrWhiteSpace(envelope.EnvelopeIdentifier))
                {
                    string payload = envelope.DecodedResource.ToString();
                    ctdlType = RegistryServices.GetResourceType(payload);

                    //return ProcessProxy( mgr, item, status );
                }
            }
            catch (Exception exc)
            {
                LoggingHelper.LogError(exc, "RegistryServices.GetEnvelope");
                statusMessage = exc.Message;
            }
            return(envelope);
        }