/// <summary>
        /// ?abc?
        /// </summary>
        public static void Start()
        {
            MetadataDocumentManagement metaDataDocMgt = MetadataDocumentManagement.Instance;

            if (metaDataDocMgt.MoveElementsDoc == null)
            {
                return;
            }

            XmlNodeList pageNodeList = metaDataDocMgt.MoveElementsDoc.SelectNodes(@"./a:MovePageElements/a:Page", metaDataDocMgt.XmlNamespaceMgt);

            foreach (XmlNode pageNode in pageNodeList)
            {
                String pageID = pageNode.Attributes["ID"].Value;
                metaDataDocMgt.XmlCurrentFormNode = metaDataDocMgt.XmlDocument.SelectSingleNode("./a:Objects/a:Page[@ID='" + pageID + "']", metaDataDocMgt.XmlNamespaceMgt);

                if (metaDataDocMgt.XmlCurrentFormNode == null)
                {
                    continue;
                }

                foreach (XmlNode pageElement in pageNode.ChildNodes)
                {
                    if (pageElement.Name == "ElementToType")
                    {
                        String elementID       = pageElement.Attributes["ID"].Value;
                        String destinationType = pageElement.Attributes["destinationType"].Value;

                        XmlNode idToBeMoved = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:ID[../a:ID='" + elementID + "']", metaDataDocMgt.XmlNamespaceMgt);
                        if (idToBeMoved != null)
                        {
                            XmlNode nodeToMove = null;
                            if (idToBeMoved.ParentNode.Name == "Properties")
                            {
                                nodeToMove = idToBeMoved.ParentNode.ParentNode;
                                if (nodeToMove != null)
                                {
                                    XmlNode destinationNode = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:" + destinationType, metaDataDocMgt.XmlNamespaceMgt);
                                    if (destinationNode == null)
                                    {
                                        if ((nodeToMove.Name == "Control") || (nodeToMove.Name == "Group"))
                                        {
                                            destinationNode = PageControls.GetPageControlNode(destinationType);
                                        }
                                        else
                                        {
                                            destinationNode = PageActions.GetPageActionNode(destinationType);
                                        }
                                    }

                                    destinationNode.AppendChild(nodeToMove);
                                }
                            }
                            else /* Action */
                            {
                                nodeToMove = idToBeMoved.ParentNode;
                                if (nodeToMove != null)
                                {
                                    XmlNode destinationNode = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:" + destinationType, metaDataDocMgt.XmlNamespaceMgt);
                                    if (destinationNode == null)
                                    {
                                        destinationNode = PageActions.GetPageActionNode(destinationType);
                                    }

                                    XmlNode destinationElement = destinationNode.ParentNode;
                                    destinationElement.AppendChild(nodeToMove);
                                }
                            }
                        }

                        /* TODO append ID node from metaPage to metaPage destinationType - if type not exist then create it. */
                    }

                    if (pageElement.Name == "ElementToID")
                    {
                        String elementID     = pageElement.Attributes["ID"].Value;
                        String destinationID = pageElement.Attributes["destinationID"].Value;

                        XmlNode idToBeMoved = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:ID[../a:ID='" + elementID + "']", metaDataDocMgt.XmlNamespaceMgt);
                        if (idToBeMoved != null)
                        {
                            XmlNode nodeToMove = null;
                            if (idToBeMoved.ParentNode.Name == "Properties")
                            {
                                nodeToMove = idToBeMoved.ParentNode.ParentNode;
                                if (nodeToMove != null)
                                {
                                    XmlNode destinationIDNode      = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:ID[../a:ID='" + destinationID + "']", metaDataDocMgt.XmlNamespaceMgt);
                                    XmlNode destinationElementNode = destinationIDNode.ParentNode.ParentNode;
                                    destinationElementNode.AppendChild(nodeToMove);
                                }
                            }
                            else /* Action */
                            {
                                nodeToMove = idToBeMoved.ParentNode;
                                if (nodeToMove != null)
                                {
                                    XmlNode destinationIDNode  = metaDataDocMgt.XmlCurrentFormNode.SelectSingleNode(".//a:ID[../a:ID='" + destinationID + "']", metaDataDocMgt.XmlNamespaceMgt);
                                    XmlNode destinationElement = destinationIDNode.ParentNode;
                                    destinationElement.AppendChild(nodeToMove);
                                }
                            }
                        }
                    }

                    AssignImportance(pageElement, metaDataDocMgt);
                }
            }
        }