As per the legal requirement, we would like to restore exact content of any given page on the site at any given point in time (at least for 3yrs). How can we achieve this in Sitecore? is there any tool in market place for same?
Unfortunately there is no tool in the marketplace to help you achieve this. Given that your requirement is to keep the content for at least 3 years (which means it could be 7 years, which is the case in Australia, depending on the industry the client operates in).
Sitecore items were archived or deleted, and those items has exceeded the allowable time it can stay alive in the database. The default setting for Recycle Bin to permanently delete is 30 days. Hence relying on good old versioning is not going to cut it.
This is what you will need from a Sitecore Content Authoring perspective: 1. Strict Workflow 2. Use Publishing Restriction for item versions 3. For performance reasons, Version Pruner may be used.
The follow operations are required to occur at a minimum daily: 1. Daily backup of databases, and keep those backups for X number of years that you require 2. Proper source control with tagging in code repositories 3. Detailed release notes when new code is released 4. Preferably your CI / CD pipeline tooling does not change. The pipelines needs to be sourced control.
When a request to a web page for a particular day in the past is required, this is what is required. 1. Setup a VM that satisfies the requirement on the Sitecore version that was used at the time 2. Install Sitecore 3. Restore the database as of the given day 4. Build and Deploy code of that particular version that was tagged in your code repository 5. Change the date and time of the VM to the given day / time that the content should be viewable 6. Publish the Site
The above steps assumes that there is no external integration required back into Sitecore to drive other content. In theory, any personalisation or content testing journey should show up under the Explore mode in Experience Editor.
Good luck, this is very hard to achieve. Bonus points: make this drill repeatable and check periodically.
Sitecore has versioning facility for each item. So whenever you want to modify the page or relevant data sources, you should ideally create a new version for that item so that the past data remains in tact and another version of the item gets created and would be visible in front-end when published.
Now if you want to rollback a change, navigate to the respective item and on the Publish Tab, click "Change". On the dialog box, choose the version that you want to appear by making sure that only that version is selected for "Publishable" as shown below
As per the setting shown in the screenshot, after publishing, the version 1 item will be available instead of version 2