/// <summary>
        /// Creates a copy of an activity (Virtual Resource metadata)
        /// </summary>
        /// <param name="source">The source activity to copy from</param>
        /// <param name="srcParent"></param>
        /// <param name="newParent"></param>
        /// <param name="Mappings"></param>
        /// <param name="isPartOfResourceCopy"></param>
        /// <returns>Guid of the Activity (metadata) node that was created</returns>
        public Guid CopyActivity(Guid source, Guid srcParent, Guid newParent, Dictionary <Guid?, Guid?> Mappings, bool isPartOfResourceCopy)
        {
            using (EnterpriseTestContext ctx = new EnterpriseTestContext())
            {
                VirtualResourceMetadata vrmdSource = VirtualResourceMetadata.Select(ctx, source);
                VirtualResourceMetadata vrmdCopy   = vrmdSource.Copy(isPartOfResourceCopy);

                vrmdCopy.Name = vrmdSource.Name;
                VirtualResource dstVR;
                HandleObjectChange(ctx, vrmdCopy);
                ctx.SaveChanges();
                if (vrmdSource.VirtualResourceId == srcParent)
                {
                    dstVR = VirtualResource.Select(ctx, newParent);
                }
                else
                {
                    try
                    {
                        vrmdCopy.FolderId = (Guid)Mappings[srcParent];
                        dstVR             = VirtualResource.Select(ctx, (Guid)Mappings[vrmdSource.VirtualResourceId]);
                    }
                    catch (Exception)
                    {
                        throw new Exception("Cannot find New Target VR / MetaData Folder for " + source.ToString());
                    }
                }
                dstVR.VirtualResourceMetadataSet.Add(vrmdCopy);
                HandleObjectChange(ctx, vrmdCopy);
                HandleObjectChange(ctx, dstVR);
                ctx.SaveChanges();
                return(vrmdCopy.VirtualResourceMetadataId);
            }
        }