protected override void Save(IEnvironmentModel environmentModel, dynamic jsonObj)
        {
            // ReSharper disable once MaximumChainedReferences
            string resName = jsonObj.resourceName;
            string resCat = HelperUtils.SanitizePath((string)jsonObj.resourcePath, resName);
            var sharepointSource = new SharepointSource { Server = Server,UserName = _userName,Password = _password,AuthenticationType = _authenticationType, ResourceName = resName, ResourcePath = resCat, IsNewResource = true, ResourceID = Guid.NewGuid() };
            var source = sharepointSource.ToStringBuilder();

            environmentModel.ResourceRepository.SaveResource(environmentModel, source, GlobalConstants.ServerWorkspaceID);
            environmentModel.ResourceRepository.ReloadResource(sharepointSource.ResourceID, ResourceType.Source, ResourceModelEqualityComparer.Current, true);
            
        }
        /// <summary>
        /// Executes the service
        /// </summary>
        /// <param name="values">The values.</param>
        /// <param name="theWorkspace">The workspace.</param>
        /// <returns></returns>
        public StringBuilder Execute(Dictionary<string, StringBuilder> values, IWorkspace theWorkspace)
        {
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();

            if(values == null)
            {
                throw new InvalidDataContractException("No parameter values provided.");
            }
            string serializedSource = null;
            StringBuilder tmp;
            values.TryGetValue("SharepointServer", out tmp);
            if(tmp != null)
            {
                serializedSource = tmp.ToString();
            }

            if(string.IsNullOrEmpty(serializedSource))
            {
                ExecuteMessage message = new ExecuteMessage();
                message.HasError = true;
                message.SetMessage("No sharepoint server set.");
                Dev2Logger.Log.Debug("No sharepoint server set.");
                return serializer.SerializeToBuilder(message);
            }

            SharepointSource source;
            SharepointSource runtimeSource = null;
            try
            {
                source = serializer.Deserialize<SharepointSource>(serializedSource);

                if(source.ResourceID != Guid.Empty)
                {
                    runtimeSource = ResourceCatalog.Instance.GetResource<SharepointSource>(theWorkspace.ID, source.ResourceID);
                    if(runtimeSource == null)
                    {
                        var contents = ResourceCatalog.Instance.GetResourceContents(theWorkspace.ID, source.ResourceID);
                        runtimeSource = new SharepointSource(contents.ToXElement());
                    }
                }
            }
            catch(Exception e)
            {
                Dev2Logger.Log.Error(e);
                var res = new DbTableList("Invalid JSON data for sharepoint server parameter. Exception: {0}", e.Message);
                return serializer.SerializeToBuilder(res);
            }
            if(runtimeSource == null)
            {
                var res = new DbTableList("Invalid sharepoint server source");
                Dev2Logger.Log.Debug("Invalid sharepoint server source");
                return serializer.SerializeToBuilder(res);
            }
            if(string.IsNullOrEmpty(runtimeSource.Server))
            {
                var res = new DbTableList("Invalid sharepoint server sent {0}.", serializedSource);
                Dev2Logger.Log.Debug(String.Format("Invalid sharepoint server sent {0}.", serializedSource));
                return serializer.SerializeToBuilder(res);
            }

            try
            {
                Dev2Logger.Log.Info("Get Sharepoint Server Lists. " + source.Server);
                List<SharepointListTo> lists = runtimeSource.LoadLists();
                return serializer.SerializeToBuilder(lists);
            }
            catch(Exception ex)
            {
                var tables = new DbTableList(ex);
                return serializer.SerializeToBuilder(tables);
            }
        }
        void UpdateBasedOnResource(SharepointSource sharepointSource)
        {
            ServerName = sharepointSource.Server;
            UserName = sharepointSource.UserName;
            Password = sharepointSource.Password;
            AuthenticationType = sharepointSource.AuthenticationType;

        }
 SharepointSource CreateSharepointServerSource()
 {
     var source = new SharepointSource { Server = ServerName, UserName = UserName, Password = Password, AuthenticationType = AuthenticationType };
     return source;
 }
        /// <summary>
        /// Executes the service
        /// </summary>
        /// <param name="values">The values.</param>
        /// <param name="theWorkspace">The workspace.</param>
        /// <returns></returns>
        public StringBuilder Execute(Dictionary<string, StringBuilder> values, IWorkspace theWorkspace)
        {
            if(values == null)
            {
                throw new InvalidDataContractException("No parameter values provided.");
            }
            string serializedSource = null;
            string listName = null;
            string editableOnly = null;
            StringBuilder tmp;
            values.TryGetValue("SharepointServer", out tmp);
            if(tmp != null)
            {
                serializedSource = tmp.ToString();
            }
            values.TryGetValue("ListName", out tmp);
            if(tmp != null)
            {
                listName = tmp.ToString();
            }
            values.TryGetValue("OnlyEditable", out tmp);
            if (tmp != null)
            {
                editableOnly = tmp.ToString();
            }
           
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();

            if(string.IsNullOrEmpty(serializedSource))
            {
                var res = new ExecuteMessage();
                res.HasError = true;
                res.SetMessage("No sharepoint server set");
                Dev2Logger.Log.Debug("No sharepoint server set.");
                return serializer.SerializeToBuilder(res);
            }
            if(string.IsNullOrEmpty(listName))
            {
                var res = new ExecuteMessage();
                res.HasError = true;
                res.SetMessage("No sharepoint list name set");
                Dev2Logger.Log.Debug("No sharepoint list name set.");
                return serializer.SerializeToBuilder(res);
            }
            var editableFieldsOnly = false;
            if(!string.IsNullOrEmpty(editableOnly))
            {
                editableFieldsOnly = serializer.Deserialize<bool>(editableOnly);
            }
            try
            {
                listName = serializer.Deserialize<string>(listName);
                var sharepointSource = serializer.Deserialize<SharepointSource>(serializedSource);
                var source = ResourceCatalog.Instance.GetResource<SharepointSource>(theWorkspace.ID, sharepointSource.ResourceID);
                if (source == null)
                {
                    var contents = ResourceCatalog.Instance.GetResourceContents(theWorkspace.ID, sharepointSource.ResourceID);
                    source = new SharepointSource(contents.ToXElement());
                }
                List<ISharepointFieldTo> fields = source.LoadFieldsForList(listName, editableFieldsOnly);
                return serializer.SerializeToBuilder(fields);
            }
            catch(Exception ex)
            {
                Dev2Logger.Log.Error(ex);
                var res = new DbColumnList(ex);
                return serializer.SerializeToBuilder(res);
            }
        }