/// <summary>
        /// Restore backed up previously service provider item.
        /// </summary>
        /// <param name="tempFolder">Temporary directory path.</param>
        /// <param name="itemNode">Serialized service provider item.</param>
        /// <param name="itemId">Service provider item id.</param>
        /// <param name="itemType">Service provider item type.</param>
        /// <param name="itemName">Service provider item name.</param>
        /// <param name="packageId">Service provider item package.</param>
        /// <param name="serviceId">Service provider item service id.</param>
        /// <param name="group">Service provider item resource group.</param>
        /// <returns>Resulting code.</returns>
        public int RestoreItem(string tempFolder, XmlNode itemNode, int itemId, Type itemType, string itemName, int packageId, int serviceId, ResourceGroupInfo group)
        {
            if (itemType == typeof(SharePointEnterpriseSiteCollection))
            {
                HostedSharePointServerEnt hostedSharePointServer = GetHostedSharePointServer(serviceId);
                // Deserialize item.
                XmlSerializer serializer = new XmlSerializer(typeof(SharePointEnterpriseSiteCollection));
                SharePointEnterpriseSiteCollection siteCollection = (SharePointEnterpriseSiteCollection)serializer.Deserialize(new XmlNodeReader(itemNode.SelectSingleNode("SharePointEnterpriseSiteCollection")));
                siteCollection.PackageId = packageId;
                siteCollection.ServiceId = serviceId;

                // Create site collection if needed.
                if (hostedSharePointServer.Enterprise_GetSiteCollection(siteCollection.Url) == null)
                {
                    hostedSharePointServer.Enterprise_CreateSiteCollection(siteCollection);
                }

                // Add metabase record if needed.
                SharePointEnterpriseSiteCollection metaSiteCollection = (SharePointEnterpriseSiteCollection)PackageController.GetPackageItemByName(packageId, itemName, typeof(SharePointEnterpriseSiteCollection));
                if (metaSiteCollection == null)
                {
                    PackageController.AddPackageItem(siteCollection);
                }
            }

            return(0);
        }
        /// <summary>
        /// Imports selected item into metabase.
        /// </summary>
        /// <param name="packageId">Package to which items must be imported.</param>
        /// <param name="itemTypeId">Item type id.</param>
        /// <param name="itemType">Item type.</param>
        /// <param name="group">Item resource group.</param>
        /// <param name="itemName">Item name to import.</param>
        public void ImportItem(int packageId, int itemTypeId, Type itemType, ResourceGroupInfo group, string itemName)
        {
            // Get service id
            int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName);

            if (serviceId == 0)
            {
                return;
            }

            HostedSharePointServerEnt hostedSharePointServer = GetHostedSharePointServer(serviceId);

            if (itemType == typeof(SharePointEnterpriseSiteCollection))
            {
                SharePointEnterpriseSiteCollection siteCollection = hostedSharePointServer.Enterprise_GetSiteCollection(itemName);
                PackageController.AddPackageItem(siteCollection);
            }
        }
        /// <summary>
        /// Backups service item by serializing it into supplied writer.
        /// </summary>
        /// <param name="tempFolder">Temporary directory path.</param>
        /// <param name="writer">Xml wirter used to store backuped service provider items.</param>
        /// <param name="item">Service provider item to be backed up..</param>
        /// <param name="group">Service provider resource group.</param>
        /// <returns>Resulting code.</returns>
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            SharePointEnterpriseSiteCollection siteCollection = item as SharePointEnterpriseSiteCollection;

            if (siteCollection != null)
            {
                HostedSharePointServerEnt          hostedSharePointServer = GetHostedSharePointServer(siteCollection.ServiceId);
                SharePointEnterpriseSiteCollection loadedSiteCollection   = hostedSharePointServer.Enterprise_GetSiteCollection(siteCollection.Url);
                // Update item
                siteCollection.Url         = loadedSiteCollection.Url;
                siteCollection.OwnerLogin  = loadedSiteCollection.OwnerLogin;
                siteCollection.OwnerName   = loadedSiteCollection.OwnerName;
                siteCollection.OwnerEmail  = loadedSiteCollection.OwnerEmail;
                siteCollection.LocaleId    = loadedSiteCollection.LocaleId;
                siteCollection.Title       = loadedSiteCollection.Title;
                siteCollection.Description = loadedSiteCollection.Description;
                // Serialize it.
                XmlSerializer serializer = new XmlSerializer(typeof(SharePointEnterpriseSiteCollection));
                serializer.Serialize(writer, siteCollection);
            }
            return(0);
        }