Skip to main content

Retrieving old file versions through Server Object Model

Recently I  have been asked about issue of retrieving old file versions from a SharePoint document library through server object model code, particulary check in comment for the major (published) versions.
The first try was to retrieve data from the .Versions property of the SPListItem, or, from SPListItem.File.Versions, if we are talking about document libraries and files.
And it worked – almost. The File.Versions property contains PREVIOUS file versions, and it does not hold the info on the current file version – this info is stored directly under the .File property.
Here is a functioning piece of code to retrieve check in comment (or any other version information, for that matter), both for current and previous versions:


using (SPSite site = new SPSite("http://localhost"))
{
    using (SPWeb web = site.OpenWeb())
    {
  
        SPList docsList = web.Lists["Shared Documents"];
  
        SPListItemCollection items = docsList.GetItems(new SPQuery());
  
        foreach (SPListItem item in items)
        {
            Console.WriteLine("");
            Console.WriteLine(item.File.Name);
            Console.WriteLine("=============");
            Console.WriteLine("Current version: " + item.File.UIVersionLabel);
            Console.WriteLine("Current version check in comment: " + item.File.CheckInComment);
  
            if (item.File.MajorVersion == 0) // return if there are no major version
                continue;
  
            Console.WriteLine("Old Versions:");
            Console.WriteLine("-------------");
            foreach (SPFileVersion version in item.File.Versions)
            {
                Console.WriteLine(version.VersionLabel  + " : " +  version.Level);
                Console.WriteLine("CheckIn Comment: " + version.CheckInComment);
                Console.WriteLine("");
            }
  
        }
  
    }
}
This code produces the following result for a file in document library, currently in a minor (draft) version 4.3:


dokument 1 in deutsch.docx
=============
Current version: 4.3
Current version check in comment: Comment to minor 4.3 version
  
Old Versions:
-------------
1.0 : Published
CheckIn Comment:
  
2.0 : Published
CheckIn Comment:
  
3.0 : Published
CheckIn Comment:
  
3.1 : Draft
CheckIn Comment:
  
4.0 : Published
CheckIn Comment: Some comment to 4.0
  
4.1 : Draft
CheckIn Comment:
  
4.2 : Draft
CheckIn Comment:

 

Comments

Popular posts from this blog

GPT-5.2 Lands in Microsoft 365 Copilot: Smarter Reasoning for Workflows

 Today Microsoft announced that GPT-5.2 is now available in Microsoft 365 Copilot and Copilot Studio , bringing two tuned variants: GPT-5.2 Thinking for deep reasoning and strategic work, and GPT-5.2 Instant for fast writing, translation, and skill-building. In Copilot, the model connects to Work IQ to surface insights across your meetings, emails, and documents—helping you turn scattered information into actionable plans. If you use Copilot Chat or Copilot Studio, you can pick GPT-5.2 from the model selector and try prompts like asking for strategic takeaways from a meeting, building comparative tables of market leaders, or preparing focused talking points for upcoming conversations. Microsoft emphasizes model choice , so teams can select the model that best fits the task while keeping security, compliance, and privacy controls in place. Rollout starts today 11-Dec-2025 for users with a Microsoft 365 Copilot license and will expand over the coming weeks; Microsoft 365 Premium...

Why MFA Matters in Microsoft 365 (and How to Enforce It the Right Way)

If you’re still relying on passwords to protect Microsoft 365, you’re leaving a critical gap in your security. A single phished credential can be enough to access email, files, chats, and sensitive business data. Multi-Factor Authentication (MFA) adds a second verification step—such as an Authenticator prompt, a one-time code, or a security key—so a password alone can’t grant access. As a Microsoft 365 administrator and technology enthusiast, I’ve seen firsthand how implementing MFA dramatically reduces account takeover risk and strengthens organisational security. Who this is for This guide is aimed at Microsoft 365 administrators, IT teams, and business leaders looking for practical steps to bolster tenant security with consistent MFA enforcement. Whether you’re managing a small business or a larger enterprise, the principles here apply to everyone seeking to protect critical business data. The goal: require MFA for interactive sign-ins Enforcing MFA for all interactive use...

6 ways to check SharePoint Usage reports

Introduction SharePoint administrators always want to know which user is accessing any site or site collection extensively and which user has access to the site but not using it. The other site details required are related to traffic, access, edit, etc. The user's behavior changes as per the nature of the site and their working department like project team site, department site, and managerial workspace. Fortunately, Microsoft 365 has given multiple methods to generate or view various reports related to SharePoint usage. We will check all the methods one by one and see how they provide the required results. Several options are available at different parts in SharePoint Site or Admin Center where the Administrator can check status or create reports. Method-1. Check Site Usage in Site Contents Page. The Site contents page shows the analytics data like their unique visitors, total site visits, average time spent by the user, etc. The report can be generated for multiple days like 7, 3...