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;

            // FTP provider
            FTPServer ftp = new FTPServer();
            ServiceProviderProxy.Init(ftp, serviceId);

            if (itemType == typeof(FtpAccount))
            {
                    // load FTP account
                    FtpAccount account = ftp.GetAccount(itemName);
                    account.Folder = FilesController.GetFullPackagePath(packageId, "\\"); // root space folder

                    // update FTP account
                    ftp.UpdateAccount(account);

                    // save account
                    account.ServiceId = serviceId;
                    account.PackageId = packageId;
                    PackageController.AddPackageItem(account);
            }
        }
        public static int UpdateFtpAccount(FtpAccount item)
        {
            // check account
            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
            if (accountCheck < 0) return accountCheck;

            // load original meta item
            FtpAccount origItem = (FtpAccount)PackageController.GetPackageItem(item.Id);
            if (origItem == null)
                return BusinessErrorCodes.ERROR_FTP_PACKAGE_ITEM_NOT_FOUND;

            // check package
            int packageCheck = SecurityContext.CheckPackage(origItem.PackageId, DemandPackage.IsActive);
            if (packageCheck < 0) return packageCheck;

            // place log record
            TaskManager.StartTask("FTP_ACCOUNT", "UPDATE", origItem.Name, item.Id);

            TaskManager.WriteParameter("Folder", item.Folder);
            TaskManager.WriteParameter("CanRead", item.CanRead);
            TaskManager.WriteParameter("CanWrite", item.CanWrite);

            try
            {
                // get service
                FTPServer ftp = new FTPServer();
                ServiceProviderProxy.Init(ftp, origItem.ServiceId);

                // store original folder
                string origFolder = item.Folder;

				// convert folder
				StringDictionary ftpSettings = ServerController.GetServiceSettings(origItem.ServiceId);
				if (Utils.ParseBool(ftpSettings["BuildUncFilesPath"], false))
				{
					// UNC
					// get OS service
					int osServiceId = PackageController.GetPackageServiceId(origItem.PackageId, ResourceGroups.Os);
					item.Folder = FilesController.GetFullUncPackagePath(origItem.PackageId, osServiceId, item.Folder);
				}
				else
				{
					// Absolute
					item.Folder = FilesController.GetFullPackagePath(origItem.PackageId, item.Folder);
				}

                item.Enabled = true;

                // add service item
                ftp.UpdateAccount(item);

                // save item
                item.Password = String.IsNullOrEmpty(item.Password) ? origItem.Password : CryptoUtils.Encrypt(item.Password);
                item.Folder = (origFolder == "") ? "\\" : origFolder;
                PackageController.UpdatePackageItem(item);

                return 0;
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }
        }