public RegistryObject(string payload)
        {
            if (!string.IsNullOrWhiteSpace(payload))
            {
                dictionary = RegistryServices.JsonToDictionary(payload);
                if (payload.IndexOf("@graph") > 0 && payload.IndexOf("@graph\": null") == -1)
                {
                    IsGraphObject = true;
                    //get the graph object
                    object graph = dictionary["@graph"];
                    //serialize the graph object
                    var glist = JsonConvert.SerializeObject(graph);
                    //parse graph in to list of objects
                    JArray graphList = JArray.Parse(glist);

                    var main = graphList[0].ToString();
                    BaseObject = JsonConvert.DeserializeObject <RegistryBaseObject>(main);
                    CtdlType   = BaseObject.CdtlType;
                    Ctid       = BaseObject.Ctid;
                    //not important to fully resolve yet
                    if (BaseObject.Name != null)
                    {
                        Name = BaseObject.Name.ToString();
                        if (Name.IndexOf("{") > -1 && Name.IndexOf(":") > 1)
                        {
                            int pos    = Name.IndexOf("\"", Name.IndexOf(":"));
                            int endpos = Name.IndexOf("\"", pos + 1);
                            if (pos > 1 && endpos > pos)
                            {
                                Name = Name.Substring(pos + 1, endpos - (pos + 1));
                            }
                        }
                        //if ( BaseObject.Name is LanguageMap )
                        //{

                        //}
                    }
                    else if (CtdlType == "ceasn:CompetencyFramework")
                    {
                        Name = (BaseObject.CompetencyFrameworkName ?? "").ToString();
                    }
                    else
                    {
                        Name = "?????";
                    }

                    //if ( BaseObject.Name.GetType())
                    //{

                    //}
                }
                else
                {
                    //check if old resource or standalone resource
                    BaseObject = JsonConvert.DeserializeObject <RegistryBaseObject>(payload);
                    CtdlType   = BaseObject.CdtlType;
                    Ctid       = BaseObject.Ctid;
                    Name       = BaseObject.Name.ToString();
                    if (Name.IndexOf("{") > -1 && Name.IndexOf(":") > 1)
                    {
                        int pos    = Name.IndexOf("\"", Name.IndexOf(":"));
                        int endpos = Name.IndexOf("\"", pos + 1);
                        if (pos > 1 && endpos > pos)
                        {
                            Name = Name.Substring(pos + 1, endpos - (pos + 1));
                        }
                    }
                }
                CtdlType = CtdlType.Replace("ceterms:", "");
                CtdlType = CtdlType.Replace("ceasn:", "");
            }
        }