SaaS CMS has officially launched! Learn more now.

Mattias Lövström
Jul 8, 2010
  9901
(2 votes)

Version state graph of a PageData object.

I got several questions about versioning of the PageData object in EPiServer (mostly by people writing their own page providers). So I decided to create a simple script to find out exactly what is changed when saving a page using the Save method in DataFactory with different SaveActions..

State graph

PageDataVersions_10

Comments to state graph

Vocabulary:

Instance - means that properties in the saved instance are changed

Loaded – means the properties changed when loading a saved PageDataObject from the database.

FCV – ForceCurrentversion

FNV - ForceNewVersion

 

Id From state Save
Action
Changed built-in properties New
ver
.
      Instance Loaded  
1 Created None
Reject
PageURLSegment
PagePeerOrder
   
2 Created Save
Save|FNV
PageLink
PageGUID
PageURLSegment
PagePeerOrder
PageLinkURL
PageLink
PageGUID
PageURLSegment
PagePeerOrder
PageLinkURL
PageCreated
PageSaved
PageChanged
X
3 Created CheckIn
CheckIn|FNV
PageLink
PageGUID
PageWorkStatus
PageURLSegment
PagePeerOrder
PageLinkURL
PageLink
PageGUID
PageWorkStatus
PageURLSegment
PagePeerOrder
PageLinkURL PageCreated
PageSaved
PageChanged
X
4 Created Publish
Publish|FNV
PageLink
PageWorkStatus
PageURLSegment
PagePeerOrder PageLinkURL
PageLink
PageWorkStatus
PageURLSegment
PagePeerOrder PageLinkURL
PageGUID
PageSaved
PageChanged
PageStartPublish
PagePendingPublish
X
5 CheckedOut
CheckedIn
Published
None
None|FNV
None|FCV
Reject
Reject|FReject|FCV
     
6 CheckedOut Save   PageSaved  
7 CheckedOut Save|FNV PageLink PageLink
PageSaved
X
8 CheckedOut CheckIn PageWorkStatus PageWorkStatus
PageSaved
 
9 CheckedOut CheckIn|FNV PageLink
PageWorkStatus
PageLink
PageWorkStatus
PageSaved
X
10 CheckedOut Publish|FNV PageLink
PageWorkStatus
PageLink
PageWorkStatus
PageSaved
PageChanged
PagePendingPublish
PageStartPublish
X
11 CheckedOut Publish
Publish|FCV
PageWorkStatus "PageWorkStatus
PageSaved
PageChanged
PagePendingPublish
PageStartPublish
 
12 CheckedOut Save
Save|FNV
  PageSaved  
13 CheckedIn Save|FCV
CheckIn|FCV
  PageSaved  
14 CheckedIn CheckIn
CheckIn|FNV
PageLink PageLink
PageSaved
X
15 CheckedIn Publish
Publish|FNV
PageLink
PageWorkStatus
PageLink
PageWorkStatus
PagePendingPublish
PageSaved
PageChanged
PageStartPublish
X
16 CheckedIn Publish|FCV PageWorkStatus PageWorkStatus
PagePendingPublish
PageSaved
PageChanged
PageStartPublish
 
17 CheckedIn Save
Save|FNV
PageLink
PageWorkStatus
PageLink
PageWorkStatus
PageSaved
 
18 Published CheckIn
CheckIn|FNV
PageLink
PageWorkStatus
PageLink
PageWorkStatus
PageSaved
X
19 Published CheckIn|FCV PageWorkStatus PageSaved  
20 Published Save
Save|FNV
PageLink
PageWorkStatus
PageLink
PageWorkStatus
PageSaved
X
21 CheckedOut
CheckedIn
Published
Delete   PageDeleted
PageParentLink
 

* = when checking in a published version with SaveAction.ForceCurrentVersion the status of the version is not saved to the database it only changes on the instance.

*1 = when checking in a new created version with the status of the version is not saved to the database it only changes on the instance.

Default PageData objects values after creation with DataFactory.

ACL FullAccess Administrators
Read Everyone
Value created by
Properties PageTypeID From DataFactory->CreateDefaultPageData
  PageParentLink From DataFactory->CreateDefaultPageData
  PagePendingPublish True
  PageWorkStatus CheckedOut
  PageFolderID DataBase
  PageTypeName From DataFactory->CreateDefaultPageData
  PageMasterLanguageBranch Parent
  PageLanguageBranch Parent
  PageVisibleInMenu True
  PageChildOrderRule 1
  PageStartPublish Now
  PageCreated Now
  PageLinkURL From DataFactory->CreateDefaultPageData
  PagePeerOrder Database
  PageShortcutType PageShortcutType.Normal
Jul 08, 2010

Comments

Marthin Freij
Marthin Freij Sep 21, 2010 10:33 AM

Wow, massive!

Ted
Ted Sep 21, 2010 10:33 AM

+1! Great stuff!

Thomas Krantz
Thomas Krantz Sep 21, 2010 10:33 AM

Nice!

Sep 21, 2010 10:33 AM

I have to update this graph after I wrote unit test from it (that tests are going to available as open source after my vacation).

Jared Wooden
Jared Wooden Oct 12, 2016 09:22 PM

@mattias, or anyone else here... Does anyone have an updated copy of this for CMS9? Have the version status IDs changed since this was last posted? Thanks!

Please login to comment.
Latest blogs
Optimizely London Dev Meetup 11th July 2024

On 11th July 2024 in London Niteco and Netcel along with Optimizely ran the London Developer meetup. There was an great agenda of talks that we put...

Scott Reed | Jul 19, 2024

Optimizely release SaaS CMS

Discover the future of content management with Optimizely SaaS CMS. Enjoy seamless updates, reduced costs, and enhanced flexibility for developers...

Andy Blyth | Jul 17, 2024 | Syndicated blog

A day in the life of an Optimizely Developer - London Meetup 2024

Hello and welcome to another instalment of A Day In The Life Of An Optimizely Developer. Last night (11th July 2024) I was excited to have attended...

Graham Carr | Jul 16, 2024

Creating Custom Actors for Optimizely Forms

Optimizely Forms is a powerful tool for creating web forms for various purposes such as registrations, job applications, surveys, etc. By default,...

Nahid | Jul 16, 2024

Optimizely SaaS CMS Concepts and Terminologies

Whether you're a new user of Optimizely CMS or a veteran who have been through the evolution of it, the SaaS CMS is bringing some new concepts and...

Patrick Lam | Jul 15, 2024

How to have a link plugin with extra link id attribute in TinyMce

Introduce Optimizely CMS Editing is using TinyMce for editing rich-text content. We need to use this control a lot in CMS site for kind of WYSWYG...

Binh Nguyen Thi | Jul 13, 2024