How to fix "Save Conflict" while adding the files to a document library using SSOM on Sharepoint 2013?

Puneeth, C 81 Reputation points
2022-07-13T08:43:02.467+00:00

I am trying to Add files to a document library using the following code;

SPFile fileDest = libDest.RootFolder.Files.Add(  
                                    urlDestFile,  
                                    streamFile,  
                                    hashSourceProp,  
                                    userCreatedByDest,  
                                    userModifiedByDest,  
                                    dateCreatedOn,  
                                    dateModifiedOn,  
                                    strVerComment,  
                                    true);  

But I get the following message only sometimes. Can anyone explain how to fix this issue?
Thanks.
220333-image.png

SharePoint
SharePoint
A group of Microsoft Products and technologies used for sharing and managing content, knowledge, and applications.
11,176 questions
SharePoint Development
SharePoint Development
SharePoint: A group of Microsoft Products and technologies used for sharing and managing content, knowledge, and applications.Development: The process of researching, productizing, and refining new or existing technologies.
3,267 questions
{count} votes

2 answers

Sort by: Most helpful
  1. Tong Zhang_MSFT 9,246 Reputation points
    2022-07-14T03:12:33.703+00:00

    Hi @Puneeth, C ,

    According to my research , the error usually occurs when update list items, dose your code include update list items? You can refer to this document: https://social.msdn.microsoft.com/Forums/en-US/b97c8cb0-fc95-4a2e-8af7-d156e91a8692/save-conflict-while-updating-splistitem-for-document-library?forum=sharepointdevelopmentprevious

    More information for reference:
    https://wiki.ahsay.com/doku.php?id=public:8073_your_changes_conflict_with_those_made_concurrently_by_another_user

    Note: Microsoft is providing this information as a convenience to you. The sites are not controlled by Microsoft. Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. Please make sure that you completely understand the risk before retrieving any suggestions from the above link.


    If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


    0 comments No comments

  2. Puneeth, C 81 Reputation points
    2022-07-14T06:53:05.323+00:00

    Hi @Tong Zhang_MSFT
    I am writing this as an answer as comments do not allow many characters. Here's my entire code for the function. As you can see, I am not having two references for a single list item and I am just trying to add the file using SPDocumentLibrary.RootFolder.Files.Add.

    public static void MoveFileWithVersions(string sourceSite, string sourceLib, string destSite, string destLib, int id)  
            {  
                using (SPSite site = new SPSite(sourceSite))  
                {  
                    using (SPWeb web = site.RootWeb)  
                    {  
                        SPList libSource = web.Lists[sourceLib];  
                        SPFileCollection fileCollection = libSource.RootFolder.Files;  
                          
                        SPListItem item = libSource.GetItemById(id);  
                        SPFile fileSource = item.File;  
                        SPUser userCreatedBy = web.EnsureUser(Settings.DefaultUser);  
                        try  
                        {  
                            userCreatedBy = fileSource.Author;  
      
                        }  
                        catch (Exception)  
                        {  
                            userCreatedBy = web.EnsureUser(Settings.DefaultUser);  
                        }  
                        DateTime dateCreatedOn = fileSource.TimeCreated;  
                        //Get the versions  
                        int countVersions = fileSource.Versions.Count;  
      
                        for (int i = 0; i < countVersions; i++)  
                        {  
                            Hashtable hashSourceProp;  
                            Stream streamFile;  
                            SPUser userModifiedBy;  
                            DateTime dateModifiedOn;  
                            string strVerComment = "";  
                            bool boolMajorVer = false;  
                            int itemId = 0;  
      
                            SPFileVersion fileSourceVer = fileSource.Versions[i];  
                            //Console.WriteLine("Working with version: "+fileSource.Versions[i].VersionLabel);  
                            hashSourceProp = fileSourceVer.Properties;  
                            SPUser modifiedBy = userCreatedBy;  
                            try  
                            {  
                                modifiedBy = fileSourceVer.CreatedBy;  
                            }  
                            catch (Exception)  
                            {  
                                // Do nothing  
                            }  
      
                            if (i < countVersions)  
                            {  
                                userModifiedBy = (i == 0) ? userCreatedBy : modifiedBy;  
                                dateModifiedOn = fileSourceVer.Created;  
                                strVerComment = fileSourceVer.CheckInComment;  
                                boolMajorVer = fileSourceVer.VersionLabel.EndsWith("0") ? true : false; // Major or Minor  
                            }  
                            else  
                            {  
                                userModifiedBy = modifiedBy;  
      
                                //I modify the modified time for the current version  
                                //dateModifiedOn = fileSource.TimeCreated.ToLocalTime();  
                                dateModifiedOn = fileSource.TimeLastModified;  
                                hashSourceProp = fileSource.Properties;  
                                strVerComment = fileSource.CheckInComment;  
                                boolMajorVer = fileSource.MinorVersion == 0 ? true : false;  
                            }  
                            streamFile = fileSource.OpenBinaryStream();  
                            itemId = fileSource.Item.ID;  
                            // Connect to the destination.  
                            using (SPSite destnationSite = new SPSite(destSite))  
                            {  
                                  
                                using (SPWeb dWeb = destnationSite.RootWeb)  
                                {  
                                    SPUser userCreatedByDest = dWeb.EnsureUser(Settings.DefaultUser);  
                                    try  
                                    {  
                                        userCreatedByDest = dWeb.EnsureUser(userCreatedBy.Name);  
                                    }  
                                    catch (Exception)  
                                    {  
                                        userCreatedByDest = dWeb.EnsureUser(Settings.DefaultUser);  
                                    }  
                                    SPUser userModifiedByDest = dWeb.EnsureUser(Settings.DefaultUser);  
                                    try  
                                    {  
                                        userCreatedByDest = dWeb.EnsureUser(userCreatedBy.Name);  
                                    }  
                                    catch (Exception)  
                                    {  
                                        userCreatedByDest = dWeb.EnsureUser(Settings.DefaultUser);  
                                    }  
                                    SPDocumentLibrary libDest = (SPDocumentLibrary)dWeb.Lists[destLib];  
                                    string urlDestFile = fileSource.Url;  
                                    Console.WriteLine("urlDest: "+urlDestFile);  
                                    SPFile fileDest = libDest.RootFolder.Files.Add(  
                                        urlDestFile,  
                                        streamFile,  
                                        hashSourceProp,  
                                        userCreatedByDest,  
                                        userModifiedByDest,  
                                        dateCreatedOn,  
                                        dateModifiedOn,  
                                        strVerComment,  
                                        true);  
      
                                    Console.WriteLine("fileDest.Url: "+fileDest.Url);  
                                    //Console.WriteLine("serverRelativeUrl: "+fileDest.ServerRelativeUrl);  
                                    if (boolMajorVer)  
                                    {  
                                        libDest.EnableMinorVersions = true;  
                                        libDest.Update();  
                                        fileDest.Publish(strVerComment);  
      
                                        libDest.EnableMinorVersions = false;  
                                        libDest.Update();  
      
                                        fileDest.Item["Created"] = dateCreatedOn;  
                                        fileDest.Item["Created By"] = userCreatedByDest;  
                                        fileDest.Item["Modified"] = dateModifiedOn;  
                                        fileDest.Item["Modified By"] = userModifiedByDest;  
                                        //fileDest.Item["SourceID"] = itemId;  
                                        //fileDest.Item["ReadyToArchive"] = false;  
                                        fileDest.Item.UpdateOverwriteVersion();  
                                        //fileDest.Item[SPBuiltInFieldId.ID] = itemId;  
      
                                        libDest.EnableMinorVersions = true;  
                                        libDest.DraftVersionVisibility = Microsoft.SharePoint.DraftVisibilityType.Reader;  
                                        //fileDest.Item[SPBuiltInFieldId.ID] = itemId;  
                                        SPListItem it = fileDest.Item;  
                                        Console.WriteLine("Got the item...");  
                                        fileDest.Item.ID = itemId;  
                                        it.ID = itemId;  
                                        it.Update();  
      
                                        //Console.WriteLine("Updated teh current ID to: "+itemId);  
                                        libDest.Update();  
                                        web.Update();  
                                        //Console.WriteLine("UpdatING the MAJOR version...");  
                                    }  
                                    else  
                                    {  
                                        SPListItem itmNewVersion = fileDest.Item;  
                                        itmNewVersion["Created"] = dateCreatedOn;  
                                        itmNewVersion["Created By"] = userCreatedByDest;  
                                        itmNewVersion["Modified"] = dateModifiedOn;  
                                        itmNewVersion["Modified By"] = userModifiedByDest;  
                                        //fileDest.Item["SourceID"] = itemId;  
                                        Console.WriteLine("Got the item...");  
                                        //itmNewVersion["ReadyToArchive"] = false;  
                                        itmNewVersion.SystemUpdate();  
                                        //fileDest.Item[SPBuiltInFieldId.ID] = itemId;  
      
                                        //Console.WriteLine("UpdatING the minor version...");  
                                    }  
                                          
                                    //Console.WriteLine("Updated: "+libDest.Title);  
                                }  
                            }             
                        }  
                    }  
                }  
      
      
            }  
    

    The error is thrown exactly when line #96 is hit.

    Thanks.

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.