# Database changes in Sitefinity CMS

This article provides a detailed reference of all database changes introduced in all Sitefinity CMS official releases. Database changes are grouped by product version. When upgrading your Sitefinity CMS website, you must review the database changes applicable to all versions between your current version and the one you are upgrading to. For example, if you are upgrading from version 12.0 to 15.4, all database changes for versions 12.1, 12.2, ... up to 15.4 apply.

To view the database changes relevant to your upgrade path, in the section below, select your current Sitefinity CMS version and the Sitefinity CMS version you are upgrading to. All the relevant database changes will be displayed accordingly.

<SfChanges>

<SfDbVersionChange version="15.4.8641">

No schema changes were introduced with Sitefinity CMS 15.4.8641.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8641.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8640">

No schema changes were introduced with Sitefinity CMS 15.4.8640.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8640.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8639">

No schema changes were introduced with Sitefinity CMS 15.4.8639.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8639.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8638">

No schema changes were introduced with Sitefinity CMS 15.4.8638.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8638.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8637">

No schema changes were introduced with Sitefinity CMS 15.4.8637.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8637.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8636">

No schema changes were introduced with Sitefinity CMS 15.4.8636.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8636.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8635">

No schema changes were introduced with Sitefinity CMS 15.4.8635.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8635.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8634">

No schema changes were introduced with Sitefinity CMS 15.4.8634.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8634.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8633">

No schema changes were introduced with Sitefinity CMS 15.4.8633.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8633.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8632">

No schema changes were introduced with Sitefinity CMS 15.4.8632.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8632.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8631">

No schema changes were introduced with Sitefinity CMS 15.4.8631.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8631.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8630">

No schema changes were introduced with Sitefinity CMS 15.4.8630.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8630.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8629">

<h3>Schema Changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[dateCreated] DATETIME NULL ",
    "Details": "Used to sort thumbnails chronologically "
  }
]
```

</SfDbSchemaChangesTable>
<br>

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8629

</SfDbVersionChange> 

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8628">

No schema changes were introduced with Sitefinity CMS 15.4.8628.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8628.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8627">

No schema changes were introduced with Sitefinity CMS 15.4.8627.

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8627.

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8626">

<h3>Schema Changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_mb_dynamic_module_type",
    "Change": "Added column",
    "Description": "[schema_markup] NVARCHAR (MAX) NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_node_attrbutes",
    "Change": "Changed to NVARCHAR (MAX)",
    "Description": "[val] NVARCHAR (MAX) NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8626

</SfDbVersionChange> 

<SfDbVersionChange version="15.4.8625">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.4.8625

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8625

</SfDbVersionChange>

<SfDbVersionChange version="15.4.8624">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.4.8624

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8624

</SfDbVersionChange>

<SfDbVersionChange version="15.4.8623">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.4.8623

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8623

</SfDbVersionChange>

<SfDbVersionChange version="15.4.8622">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_dynamic_content",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_dyn_pub] ON [dbo].[sf_dynamic_content] ([application_name] ASC, [status] ASC, [visible] ASC)",
    "Details": ""
  },
  {
    "Table": "sf_media_content",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_media_cnt_pub] ON [dbo].[sf_media_content] ([app_name] ASC, [status] ASC, [visible] ASC)",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8622

</SfDbVersionChange>

<SfDbVersionChange version="15.4.8621">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.4.8621.0

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4.8621.0

</SfDbVersionChange>

<SfDbVersionChange version="15.4">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.4

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.4

</SfDbVersionChange>

<SfDbVersionChange version="15.3">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_mb_dnc_cnt_provider",
    "Change": "Added unique nonclustered index",
    "Description": "[idx_sf_mb_dnc_cnt_prvdr] ON [dbo].[sf_mb_dnc_cnt_provider] ([parent_secured_object_id] ASC, [nme] ASC)",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Removed column",
    "Description": "[enable_override_for_control] TINYINT NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Removed column",
    "Description": "[enable_override_for_control2] TINYINT NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.3

</SfDbVersionChange>

<SfDbVersionChange version="15.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[flags]",
    "Details": ""
  },
  {
    "Table": "sf_page_node",
    "Change": "Updated column",
    "Description": "[redirect_url_] NVARCHAR (510) NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_pipe_settings",
    "Change": "Removed column",
    "Description": "[user_name_reference] VARCHAR (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_pipe_settings",
    "Change": "Removed column",
    "Description": "[search_pattern] VARCHAR (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_pipe_settings",
    "Change": "Removed column",
    "Description": "[app_name_reference] VARCHAR (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_users",
    "Change": "Added column",
    "Description": "[confirmation_token] VARCHAR (255) NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.2

</SfDbVersionChange>

<SfDbVersionChange version="15.1">

### Schema changes

No schema changes were introduced with Sitefinity CMS 15.1

### Fluent mappings changes

No fluent mappings changes were introduced with Sitefinity CMS 15.1

</SfDbVersionChange>

<SfDbVersionChange version="15.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_campaign",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_camp_short_id]",
    "Details": ""
  },
  {
    "Table": "sf_dashboard_log",
    "Change": "Added column",
    "Description": "[hasDescription] TINYINT NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_module_vrsn",
    "Change": "Added column",
    "Description": "[previous_version] NVARCHAR (MAX) NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[enable_script_manager] TINYINT NULL",
    "Details": ""
  },
  {
    "Table": "sf_subscriber",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_subscr_short_id]",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "MetadataFluentMapping",
    "Mapping": "moduleVersionMapping.HasProperty(m => m.PreviousVersionString).IsLongText(this.Context).IsUnicode().ToColumn(\"previous_version\");",
    "Change": "Updated"
  },
  {
    "Class": "NewslettersFluentMapping",
    "Mapping": "campaignMapping.HasIndex(s => s.ShortId).WithName(\"idx_sf_camp_short_id\");\nsubscriberMapping.HasIndex(s => s.ShortId).WithName(\"idx_sf_subscr_short_id\");",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageNodeMapping.HasProperty(p => p.EnableScriptManager).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "DashboardFluentMapping",
    "Mapping": "dashboardLogEntryMapping.HasProperty(p => p.HasDescription).HasFieldName(\"hasDescription\").ToColumn(\"hasDescription\");",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="14.4">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_idsrv_consents",
    "Change": "Removed table",
    "Description": "Removed table",
    "Details": ""
  },
  {
    "Table": "sf_idsrv_keys",
    "Change": "Removed table",
    "Description": "Removed table",
    "Details": ""
  },
  {
    "Table": "sf_idsrv_tokens",
    "Change": "Removed table",
    "Description": "Removed table",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[layout_path]\nVARCHAR (255)\nNULL",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[is_layout_locked]\nTINYINT NULL",
    "Details": "Stores information whether the page template draft\"s layout is locked. If it is 0, then the layout is unlocked. If set to 1, then the layout is locked."
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[redirect_node_id]\nUNIQUEIDENTIFIER NULL",
    "Details": "Stores the Page to which will redirect after submitting a form"
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[redirect_node_provider]\nVARCHAR (255)\nNULL,",
    "Details": "Stores the Page provider, to which will redirect after submitting a form"
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[open_in_new_window]\nTINYINT\nNULL,",
    "Details": "When redirect url is set after submitting a form, stores whether to open it in a new tab or not"
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[redirect_node_id]\nUNIQUEIDENTIFIER NULL",
    "Details": "Stores the Page to which will redirect after submitting a form"
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[redirect_node_provider]\nVARCHAR (255)\nNULL,",
    "Details": "Stores the Page provider, to which will redirect after submitting a form"
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[open_in_new_window]\nTINYINT\nNULL,",
    "Details": "When redirect url is set after submitting a form, stores whether to open it in a new tab or not"
  },
  {
    "Table": "sf_language_data",
    "Change": "Added column",
    "Description": "[last_modified_by] UNIQUEIDENTIFIER NUL",
    "Details": "Stores the user ID of the last modifier."
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[allow_multiple_links]\nTINYINT\nNOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_meta_fields",
    "Change": "Added column",
    "Description": "[allowMultipleLinks]\nTINYINT\nNULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[is_locked] TINYINT NULL",
    "Details": "Stores information whether the control data is locked. If it is 0, then the control is unlocked. If set to 1, then the control is locked."
  },
  {
    "Table": "sf_ocd_itms",
    "Change": "Added column",
    "Description": "[flags]\nINT\nNULL",
    "Details": ""
  },
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[layout_path]\nVARCHAR (255)\nNULL",
    "Details": ""
  },
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[is_layout_locked]\nTINYINT NULL",
    "Details": "Stores information whether the page template\"s layout is locked. If it is 0, then the layout is unlocked. If set to 1, then the layout is locked."
  },
  {
    "Table": "sf_version_chnges",
    "Change": "Added index",
    "Description": "NONCLUSTERED INDEX [idx_sf_version_chnges_item_id] ON [dbo].[sf_version_chnges] ([item_id] ASC)",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "CommonFluentMapping",
    "Mapping": "languageDataMapping.HasProperty(p =>\np.LastModifiedBy).ToColumn(\"last_modified_by\"). IsNullable ();",
    "Change": "Added"
  },
  {
    "Class": "CommonFluentMapping",
    "Mapping": "languageDataMapping.HasProperty(p =>\np.LastModified).ToColumn(\"last_modified\").IsCalculatedOn(DateTimeAutosetMode.Insert);",
    "Change": "Updated"
  },
  {
    "Class": "CommonFluentMapping",
    "Mapping": "languageDataMapping.MapType(p => new { })\n.WithConcurencyControl(OptimisticConcurrencyControlStrategy.None)\n.SetTableName(\"sf_language_data\", this.Context);",
    "Change": "Updated"
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "mapping.HasProperty(p => ((IFormData\\\u003CControlData>)p).RedirectNodeId);\nmapping.HasProperty(p => ((IFormData\\\u003CControlData>)p).RedirectNodeProvider).IsAnsiText(this.Context, 255);\nmapping.HasProperty(p => ((IFormData\\\u003CControlData>)p).OpenInNewWindow);",
    "Change": "Added"
  },
  {
    "Class": "MetadataFluentMapping",
    "Mapping": "metaFieldMapping.HasProperty(p => p.AllowMultipleLinks).ToColumn(\"allowMultipleLinks\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ModuleBuilderFluentMapping",
    "Mapping": "dynamicModuleFieldMapping.HasProperty(p => p.AllowMultipleLinks).HasFieldName(\"allowMultipleLinks\");",
    "Change": "Added"
  },
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "controlDataMapping.HasProperty(p => p.IsLocked).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasProperty(p => p.Flags).ToColumn(\"flags\");",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "templateDraftMapping.HasProperty(p => p.LayoutPath).IsNullable();\ntemplateDraftMapping.HasProperty(p => p.IsLayoutLocked).IsNullable();\npageTemplateMapping.HasProperty(p => p.LayoutPath).IsNullable();\npageTemplateMapping.HasProperty(p => p.IsLayoutLocked).IsNullable();",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="14.3">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_ab_test",
    "Change": "Added column",
    "Description": "[user_segment_id] UNIQUEIDENTIFIER NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[expiration_in_days] INT NULL",
    "Details": "Used to store information about the custom expiration for a page. If it is NULL, then no custom expiration has been set for the specific page. If set to 0 the page has been set to never expire. Any other number indicates the expiration days."
  },
  {
    "Table": "sf_wdgt_prst",
    "Change": "Added table",
    "Description": "CREATE TABLE [dbo].[sf_wdgt_prst] (\n[title] NVARCHAR (255) NULL,\n[ownr] UNIQUEIDENTIFIER NULL,\n[last_modified] DATETIME NOT NULL,\n[id] UNIQUEIDENTIFIER NOT NULL,\n[date_created] DATETIME NOT NULL,\n[dta] NVARCHAR (MAX) NULL,\n[app_name] VARCHAR (255) NULL,\nCONSTRAINT [pk_sf_wdgt_prst] PRIMARY KEY CLUSTERED ([id] ASC)\n);",
    "Details": "Used to store information about Widget presets. Id is the primary key. Title holds the title of the widget preset. Owner is the Id of the user that created the preset. Last_modified indicates when the record was last edited. Date_created indicates when the record was created. Dta holds meta information about the underlying widgets that the preset represents."
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "ABTestingFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.UserSegmentId).HasFieldName(\"userSegmentId\").ToColumn(\"user_segment_id\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageNodeMapping.HasProperty(p => p.ExpirationInDays).ToColumn(\"expiration_in_days\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "presetMapping.MapType(p => new { }).SetTableName(\"sf_wdgt_prst\", this.Context);\npresetMapping.HasProperty(p => p.Id).IsIdentity();\npresetMapping.HasProperty(p => p.ApplicationName).ToColumn(\"app_name\");\npresetMapping.HasProperty(p => p.LastModified).ToColumn(\"last_modified\");\npresetMapping.HasProperty(p => p.DateCreated).ToColumn(\"date_created\");\npresetMapping.HasProperty(p => p.Title).IsText(this.Context);\npresetMapping.HasProperty(p => p.Owner).ToColumn(\"ownr\");\npresetMapping.HasProperty(p => p.Data).IsLongText(this.Context, true);",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="14.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[system_src_key] VARCHAR (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_notif_msg_job",
    "Change": "Added column",
    "Description": "[target_channel] INT NOT NULL",
    "Details": "This column is added to keep information by what channel the notification should be delivered (for example – email, system, etc.)"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[additional_message_data] NVARCHAR (MAX) NULL",
    "Details": "This column is added to provide additional information about notifications."
  },
  {
    "Table": "sf_user_preferences",
    "Change": "Updated column",
    "Description": "[module_name] NVARCHAR (255) NOT NULL -> NULL",
    "Details": "The column is changed to nullable due to a bug with Oracle DB."
  },
  {
    "Table": "sf_scheduled_tasks",
    "Change": "Removed column",
    "Description": "voa_version",
    "Details": "The concurrency control has been removed from the scheduled task. There is a separate db lock to handle concurrency"
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "ContentBaseFluentMappings",
    "Mapping": "contentMapping.HasIndex(p => p.SourceKey).WithName(\"idx_sf_src_key\");",
    "Change": "Added"
  },
  {
    "Class": "DynamicModuleFluentMapping",
    "Mapping": "dynamicContentMapping.HasProperty(p => p.SystemSourceKey).ToColumn(\"system_src_key\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "DynamicModuleFluentMapping",
    "Mapping": "dynamicContentMapping.HasIndex(p => new { p.SystemSourceKey }).WithName(\"idx_sf_dyn_src_key\");",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "From: itemMapping.HasProperty(p => p.ModuleName).ToColumn(\"module_name\").IsText(Context).IsNotNullable();\nTo: itemMapping.HasProperty(p => p.ModuleName).ToColumn(\"module_name\").IsText(Context).IsNullable();",
    "Change": "Changed"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="14.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_forum_groups",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_forum_posts",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_forum_threads",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_forums",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_forums_sf_permissions",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_rdsgn_md_qry_lnk_sf_rdsgn_m",
    "Change": "Removed table",
    "Description": "",
    "Details": "Forum module is disabled/not active for new projects"
  },
  {
    "Table": "sf_rdsgn_media_query",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_rdsgn_media_query_link",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_rdsgn_media_query_rule",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_rdsgn_nav_trnsfrmtn",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_form_description",
    "Change": "Added columns",
    "Description": "[renderer] VARCHAR (255) NULL,",
    "Details": "Used to mark the form’s rendering technology."
  },
  {
    "Table": "sf_libraries",
    "Change": "Added column",
    "Description": "[excl_frm_srch_idx] TINYINT NOT NULL",
    "Details": "Property which is used to mark if the given library should be excluded from the search index or not."
  },
  {
    "Table": "sf_notif_msg_job",
    "Change": "Added columns",
    "Description": "[notification_key] VARCHAR (255) NULL,\n[date_created] DATETIME NOT NULL,\n[category] VARCHAR (255) NULL",
    "Details": "Notification_key is used for the system and email notifications as unique key (event) of the notifications.\nDate_created is used by the clean up task in order to clean jobs older then N days.\nCategory is used by the system notifications to display the notification category."
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added columns",
    "Description": "[system_url]\nNVARCHAR (2048) NULL,\n[system_message] NVARCHAR (MAX) NULL,",
    "Details": "System_url is a link to internal sitefinity form/workflow content that will be available in the system notifications.\nSystem_message is the system notifications message that will be displayed."
  },
  {
    "Table": "sf_notif_subscribers",
    "Change": "Added columns",
    "Description": "[subscriber_type] INT\nNOT NULL,\n[last_modified_by]\nUNIQUEIDENTIFIER NULL,",
    "Details": "Subscriber_type will be notification or email\nThe GUID of the author of the last modification."
  },
  {
    "Table": "sf_sitefinity_profile",
    "Change": "Removed columns",
    "Description": "[posts_count],\n[is_profile_public]",
    "Details": ""
  },
  {
    "Table": "sf_notif_notifications",
    "Change": "Added table",
    "Description": "[resolve_key]\nVARCHAR (255)\nNULL,\n[message_job_id] UNIQUEIDENTIFIER NULL,\n[is_read]\nTINYINT\nNOT NULL,\n[id]\nBIGINT\nIDENTITY (1, 1) NOT NULL,",
    "Details": "Used by the system notifications.\nResolve_key is UserId:Provider used to identify to whom to send the notification.\nMessage_job_id is link to the message_job table to gather the other necessary data.\nIs_read indicates whether a notification is read.\nId identifier which is long and uses OpenAccess.Metadata.KeyGenerator.Autoinc."
  },
  {
    "Table": "sf_notification_preferences",
    "Change": "Added table",
    "Description": "[value]\nTINYINT\nNOT NULL,\n[resolve_key]\nVARCHAR (255)\nNULL,\n[preference_type] NVARCHAR (255)\nNOT NULL,\n[preference_name] NVARCHAR (255)\nNOT NULL,\n[module_name]\nNVARCHAR (255)\nNOT NULL,\n[last_modified]\nDATETIME\nNOT NULL,\n[key]\nNVARCHAR (255)\nNOT NULL,",
    "Details": "Resolve_key is UserId:Provider used to relate record to user.\nPreference_type is used to distinguish the notifications. So far we have enum with only 1 type – Notifications.\nPreference_name is the name of the preference – for\nexample Response to a form I am subscribed for.\nLast_modified indicates when the record was last modieid.\nKey – the preference key.\nValue – the prefecence value."
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "var notificationMapping = new MappingConfiguration\\\u003CNotification>();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.MapType(p => new { }).WithCacheStrategy(OpenAccess.Metadata.CacheStrategy.No).ToTable(Constants.NotificationsTable);",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasProperty(p => p.Id).IsIdentity(OpenAccess.Metadata.KeyGenerator.Autoinc).IsNotNullable().ToColumn(Constants.IdColumn);",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasAssociation\\\u003CMessageJob>(p => p.MessageJob).ToColumn(Constants.MessageJobdIdColumn);",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasProperty(p => p.MessageJobId).ToColumn(Constants.MessageJobdIdColumn).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasProperty(p => p.ResolveKey).ToColumn(Constants.ResolveKeyColumn).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasProperty(p => p.IsRead).ToColumn(Constants.IsReadColumn);",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "notificationMapping.HasIndex(p => new { p.ResolveKey }).IsNotUnique().WithName(\"idx_sf_ns_notif_subscriber\");",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "mappings.Add(notificationMapping);",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.SystemMessage).IsLongText(this.Context).ToColumn(\"system_message\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.SystemUrl).IsText(this.Context, 2048).ToColumn(\"system_url\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "messageJobMapping.HasProperty(p => p.DateCreated).ToColumn(\"date_created\");",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "messageJobMapping.HasProperty(p => p.Category).ToColumn(\"category\");",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "messageJobMapping.HasProperty(p => p.NotificationKey).ToColumn(\"notification_key\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMappings",
    "Mapping": "subscriberMapping.HasProperty(p => p.SubscriberType).ToColumn(Constants.SubscriberTypeColumn);",
    "Change": "Added"
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "mapping.HasProperty(p => ((IRendererCommonData)p).Renderer).ToColumn(\"renderer\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "LibrariesFluentMapping",
    "Mapping": "libraryMapping.HasProperty(p => p.ExcludeFromSiteSearch).ToColumn(\"excl_frm_srch_idx\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageNodeMapping.HasProperty(p => p.LastModifiedBy).ToColumn(\"last_modified_by\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": ".MapType(p => new { })\n.WithCacheStrategy(OpenAccess.Metadata.CacheStrategy.No)\n.WithConcurencyControl(OpenAccess.OptimisticConcurrencyControlStrategy.Version)\n.SetTableName(\"sf_user_preferences\", this.Context);",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.Id).IsIdentity().HasFieldName(\"id\").ToColumn(\"id\");",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.ResolveKey).ToColumn(\"resolve_key\");",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.Key).ToColumn(\"key\").IsText(Context).IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.PreferenceType).ToColumn(\"preference_type\").IsText(Context).IsNotNullable();",
    "Change": ""
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMappingitemMapping.HasProperty(p => p.PreferenceName).ToColumn(\"preference_name\").IsText(Context).IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.ModuleName).ToColumn(\"module_name\").IsText(Context).IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.Value).ToColumn(\"value\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasProperty(p => p.LastModified).ToColumn(\"last_modified\").IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate).IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "itemMapping.HasIndex(p => new { p.ResolveKey }).WithName(\"idx_sf_sf_user_preferences_resolve_key\");",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="14.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_lic_user_activity",
    "Change": "Added column",
    "Description": "[bearer_token_id]\nVARCHAR (255)\nNULL",
    "Details": "Iris standalone mode is logged out when navigating to page edit screen"
  },
  {
    "Table": "sf_object_data",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_od_base_ctrl_id] ON [base_control_id]",
    "Details": ""
  },
  {
    "Table": "sf_permissions",
    "Change": "Updated column",
    "Description": "[app_name] from VARCHAR(50) to VARCHAR(255)",
    "Details": ""
  },
  {
    "Table": "sf_presentation_data",
    "Change": "Updated column",
    "Description": "[app_name] from VARCHAR(50) to VARCHAR(255)",
    "Details": ""
  },
  {
    "Table": "sf_security_roots",
    "Change": "Updated column",
    "Description": "[app_name] from VARCHAR(50) to VARCHAR(255)",
    "Details": ""
  },
  {
    "Table": "sf_sitefinity_profile",
    "Change": "Added nonclustered index",
    "Description": "[idx_sf_sf_profile_nickname] ON [nickname]",
    "Details": ""
  },
  {
    "Table": "sf_taxa_attrbutes",
    "Change": "Updated column",
    "Description": "[val] from NVARCHAR (1000) to NVARCHAR (MAX)",
    "Details": ""
  },
  {
    "Table": "sf_users",
    "Change": "Added column",
    "Description": "[access_key]\nVARCHAR (255)\nNULL",
    "Details": "Introduced access keys."
  },
  {
    "Table": "sf_version_trunks",
    "Change": "Updated column",
    "Description": "[app_name] from VARCHAR(50) to VARCHAR(255)",
    "Details": ""
  },
  {
    "Table": "sf_auth_tokens",
    "Change": "Added table",
    "Description": "[user_token_id] VARCHAR (255)\nNULL,\n[ticket]\nVARCHAR (MAX)\nNULL,\n[last_modified] DATETIME\nNOT NULL,\n[id]\nUNIQUEIDENTIFIER NOT NULL,\n[expire_date]\nDATETIME\nNOT NULL,\n[app_name]\nVARCHAR (255)\nNULL,\nCONSTRAINT[pk_sf_auth_tokens] PRIMARY KEY CLUSTERED ([id] ASC)",
    "Details": ""
  },
  {
    "Table": "sf_servicehooks_activities",
    "Change": "Added table",
    "Description": "[trigger_data]\nNVARCHAR (MAX)\nNULL,\n[title]\nNVARCHAR (255)\nNOT NULL,\n[status]\nINT\nNOT NULL,\n[start_time]\nDATETIME\nNULL,\n[site_id]\nUNIQUEIDENTIFIER NULL,\n[service_hook_id] UNIQUEIDENTIFIER NOT NULL,\n[result]\nNVARCHAR (MAX)\nNULL,\n[rerun_count]\nINT\nNOT NULL,\n[last_modified]\nDATETIME\nNOT NULL,\n[key]\nVARCHAR (255)\nNULL,\n[id]\nUNIQUEIDENTIFIER NOT NULL,\n[end_time]\nDATETIME\nNULL,\n[action_data]\nNVARCHAR (MAX)\nNULL,\n[voa_version]\nSMALLINT\nNOT NULL,\nCONSTRAINT [pk_sf_servicehooks_activities] PRIMARY KEY CLUSTERED ([id] ASC)",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "LicensingFluentMapping",
    "Mapping": "map.HasProperty(p => p.BearerTokenId).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "MembershipFluentMapping",
    "Mapping": "userMapping.HasProperty(p => p.AccessKey).ToColumn(\"access_key\").HasLength(255).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "controlDataMapping.HasIndex(p => new { p.BaseControlId }).WithName(\"idx_sf_od_base_ctrl_id\");",
    "Change": "Added"
  },
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "controlDataMapping.HasIndex(p => new { p.BaseControlId }).WithName(\"idx_sf_od_base_ctrl_id\");",
    "Change": "Updated"
  },
  {
    "Class": "PermissionsFluentMapping",
    "Mapping": "securityRootMapping.HasProperty(p => p.ApplicationName).IsAnsiText(this.Context).HasFieldName(\"appName\").ToColumn(\"app_name\").IsNullable();",
    "Change": "Updated"
  },
  {
    "Class": "PermissionsFluentMapping",
    "Mapping": "permissionMapping.HasProperty(p => p.ApplicationName).IsAnsiText(this.Context).HasFieldName(\"appName\").ToColumn(\"app_name\").IsNotNullable();",
    "Change": "Updated"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.MapType(p => new { })\n.WithCacheStrategy(OpenAccess.Metadata.CacheStrategy.No)\n.WithConcurencyControl(OpenAccess.OptimisticConcurrencyControlStrategy.Version)\n.SetTableName(\"sf_servicehooks_activities\", this.Context);",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.Id).IsIdentity().HasFieldName(\"id\").ToColumn(\"id\");",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.ServiceHookId).ToColumn(\"service_hook_id\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.Status).ToColumn(\"status\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.ActionData).ToColumn(\"action_data\").IsNullable().IsLongText(this.Context);",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.TriggerData).ToColumn(\"trigger_data\").IsNullable().IsLongText(this.Context);",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.Result).ToColumn(\"result\").IsNullable().IsLongText(this.Context);",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.StartTime).ToColumn(\"start_time\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.EndTime).ToColumn(\"end_time\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.LastModified).ToColumn(\"last_modified\").IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate);",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.SiteId).ToColumn(\"site_id\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.Title).IsText(this.Context, 255).ToColumn(\"title\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.RerunCount).ToColumn(\"rerun_count\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasProperty(p => p.Key).ToColumn(\"key\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasIndex(p => new { p.LastModified }).WithName(\"idx_sf_sha_lm\");",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasIndex(p => new { p.StartTime, p.ServiceHookId, p.Status }).WithName(\"idx_sf_sha_stt_shid_st\");",
    "Change": "Added"
  },
  {
    "Class": "ServiceHooksFluentMapping",
    "Mapping": "mapping.HasIndex(p => new { p.Status, p.LastModified }).WithName(\"idx_sf_sha_st_lm\");",
    "Change": "Added"
  },
  {
    "Class": "TaxonomiesFluentMapping",
    "Mapping": "attrProp = taxonMapping.HasProperty(p => p.Attributes)\n.WithValueOpenAccessType(OpenAccessType.UnicodeStringInfiniteLength)\n.WithLoadBehavior(LoadBehavior.Lazy)\n.WithTextDictionaryValue(this.Context, \"val\", true);",
    "Change": "Updated\nonly for MsSql DB"
  },
  {
    "Class": "UserProfileFluentMapping",
    "Mapping": "sitefinityProfileMapping.HasIndex(p => new { p.Nickname }).WithName(\"idx_sf_sf_profile_nickname\");",
    "Change": "Added"
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "trunkMapping.HasProperty(p => p.ApplicationName).IsAnsiText(this.Context).HasFieldName(\"appName\").ToColumn(\"app_name\").IsNullable();",
    "Change": "Updated"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Changed).ToTable(\"sf_auth_tokens\");",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.Id).IsIdentity().ToColumn(\"id\");",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.ApplicationName).ToColumn(\"app_name\");",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.LastModified).ToColumn(\"last_modified\").IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate);",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.ExpirationDateUTC).ToColumn(\"expire_date\");",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.UserTokenId).ToColumn(\"user_token_id\");",
    "Change": "Added"
  },
  {
    "Class": "AuthenticationFluentMapping",
    "Mapping": "tokensMapping.HasProperty(p => p.SerializedTicket).WithInfiniteLength().ToColumn(\"ticket\");",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="13.3">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[template_name]\nVARCHAR (255)\nNULL",
    "Details": "Related to enabling templates for external renderers."
  },
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[renderer]\nVARCHAR (255)\nNULL",
    "Details": "Related to enabling templates for external renderers."
  },
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[last_modified_by]\nUNIQUEIDENTIFIER\nNULL",
    "Details": "Related to enabling templates for the new interface."
  },
  {
    "Table": "sf_page_templates",
    "Change": "Added column",
    "Description": "[date_created]\nDATETIME\nNULL",
    "Details": "Related to enabling templates for the new interface."
  },
  {
    "Table": "sf_scheduled_tasks",
    "Change": "Added column",
    "Description": "[siteId]\nUNIQUEIDENTIFIER\nNULL",
    "Details": "Add site context for scheduled tasks."
  },
  {
    "Table": "sf_scheduled_tasks",
    "Change": "Added column",
    "Description": "[is_system]\nTINYINT\nNOT NULL",
    "Details": "Mechanism to mark scheduled tasks as system."
  },
  {
    "Table": "sf_site_data_source_links",
    "Change": "Dropped table",
    "Description": "",
    "Details": "Use sf_site_data_src_lnks instead."
  },
  {
    "Table": "sf_sts_sf_st_data_source_links",
    "Change": "Dropped table",
    "Description": "",
    "Details": "Use sf_site_data_src_lnks instead."
  },
  {
    "Table": "sf_site_data_src",
    "Change": "New table",
    "Description": "[title]\nNVARCHAR (255) NULL,\n[provider]\nVARCHAR (255) NOT NULL,\n[owner_site_id] UNIQUEIDENTIFIER NOT NULL,\n[nme]\nVARCHAR (255) NULL,\n[id]\nUNIQUEIDENTIFIER NOT NULL,\nCONSTRAINT [pk_sf_site_data_src] PRIMARY KEY CLUSTERED ([id] ASC)",
    "Details": ""
  },
  {
    "Table": "sf_site_data_src_lnks",
    "Change": "New table",
    "Description": "[site_id]\nUNIQUEIDENTIFIER NULL,\n[is_default]\nBIT\nNOT NULL,\n[id]\nUNIQUEIDENTIFIER NOT NULL,\n[data_source_id] UNIQUEIDENTIFIER NOT NULL,\nCONSTRAINT [pk_sf_site_data_src_lnks] PRIMARY KEY CLUSTERED ([id] ASC)",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "ContentBaseFluentMapping",
    "Mapping": "scheduledTaskDataMapping.HasProperty(p => p.IsSystem).HasFieldName(\"isSystem\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "ContentBaseFluentMapping",
    "Mapping": "scheduledTaskDataMapping.HasProperty(p => p.SiteId).ToColumn(\"siteId\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteMapping.HasAssociation(p => p.SiteDataSourceLinks).WithOpposite(x => x.Site).IsManaged().IsDependent();",
    "Change": "Changed"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.MapType(p => new { }).SetTableName(\"sf_site_data_src_lnks\", this.Context);",
    "Change": "Changed"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasProperty(p => p.ApplicationName).HasFieldName(\"applicationName\");",
    "Change": "Removed"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasProperty(p => p.DataSourceName).ToColumn(\"dataSource_name\");",
    "Change": "Removed"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasProperty(p => p.ProviderName).ToColumn(\"provider_name\");",
    "Change": "Removed"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasAssociation(p => p.DataSource).ToColumn(\"data_source_id\").WithLoadBehavior(LoadBehavior.Eager).IsRequired();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasProperty(p => p.DataSourceId).ToColumn(\"data_source_id\");",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasAssociation(p => p.Site).ToColumn(\"site_id\");",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceLinkMapping.HasIndex(p => new { p.SiteId, p.DataSourceId }).IsUnique().WithName(\"idx_sf_site_ds\");",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.MapType(p => new { }).SetTableName(\"sf_site_data_src\", this.Context);",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasProperty(p => p.Id).HasFieldName(\"id\").IsIdentity().IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasProperty(p => p.Name).ToColumn(\"nme\");",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasProperty(p => p.Provider).ToColumn(\"provider\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasProperty(p => p.Title).ToColumn(\"title\").IsUnicode();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasProperty(p => p.OwnerSiteId).ToColumn(\"owner_site_id\").IsNotNullable();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasAssociation(p => p.Sites).WithOpposite(x => x.DataSource).IsManaged().IsDependent();",
    "Change": "Added"
  },
  {
    "Class": "MultisiteFluentMapping",
    "Mapping": "siteDataSourceMapping.HasIndex(p => new { p.Name, p.Provider }).IsUnique().WithName(\"idx_sf_st_dt_src_lnk_uc\");",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="13.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_publishing_point",
    "Change": "Added column",
    "Description": "inbound_pipes_template\nvarchar (255), NULL",
    "Details": "Save the name of the template for publishing point."
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "PublishingFluentMapping",
    "Mapping": "publishingPointMapping.HasProperty(p => p.InboundPipesTemplate).IsNullable();",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="13.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_object_data",
    "Change": "Removed column",
    "Description": "culture",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "controlDataMapping.HasProperty(p => p.Culture).ToColumn(\"culture\").HasLength(10).IsNullable();",
    "Change": "Removed"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="13.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_oc_dpndncies",
    "Change": "Deleted table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_oc_itms",
    "Change": "Deleted table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_ocd_dpndncies",
    "Change": "Added table",
    "Description": "",
    "Details": "New persistence for output cache dependencies for better performance"
  },
  {
    "Table": "sf_ocd_itms",
    "Change": "Added table",
    "Description": "",
    "Details": "New persistence for output cache dependencies for better performance"
  },
  {
    "Table": "sf_ocd_typs",
    "Change": "Added table",
    "Description": "",
    "Details": "New persistence for output cache dependencies for better performance"
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "template_name",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "renderer",
    "Details": ""
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Updated column",
    "Description": "instructional_text\nFrom NVARCHAR(255)\nto NVARCHAR(MAX)",
    "Details": ""
  },
  {
    "Table": "sf_meta_fields",
    "Change": "Updated column",
    "Description": "description\nFrom VARCHAR(255)\nto NVARCHAR(MAX)",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "parent_id",
    "Details": ""
  },
  {
    "Table": "sf_page_data",
    "Change": "Added column",
    "Description": "template_name",
    "Details": ""
  },
  {
    "Table": "sf_page_data",
    "Change": "Added column",
    "Description": "renderer",
    "Details": ""
  },
  {
    "Table": "sf_scheduled_tasks",
    "Change": "Added column",
    "Description": "concurrent_tasks_key",
    "Details": "Added to run tasks sequentially. When this key is set task will wait for other tasks with the same key to complete."
  },
  {
    "Table": "sf_taxonomies",
    "Change": "Removed column",
    "Description": "voa_version",
    "Details": "Remove version column to detect concurrent updates in order to not to be done such concurrency checks on the database server."
  },
  {
    "Table": "sf_version_chnges",
    "Change": "Added column",
    "Description": "date_created",
    "Details": "Stores the value for the created date."
  },
  {
    "Table": "sf_version_chnges",
    "Change": "Added column",
    "Description": "add_info",
    "Details": "Stores data for additional columns in the revision history grid – currently the site sync column"
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "DynamicModuleFluentMapping",
    "Mapping": "dynamicContentUrlData.HasField(\"parentId\").ToColumn(\"content_id\");",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "MetadataFluentMapping",
    "Mapping": "metaFieldMapping.HasProperty(p => p.Description).ToColumn(\"description_\").IsNullable();",
    "Change": "Modified",
    "Description / New mapping": ""
  },
  {
    "Class": "MetadataFluentMapping",
    "Mapping": "metaFieldMapping.HasProperty(p => p.Description).ToColumn(\"description_\").IsLongText(this.Context).IsNullable();",
    "Change": "Modified",
    "Description / New mapping": ""
  },
  {
    "Class": "ModuleBuilderFluentMapping",
    "Mapping": "dynamicModuleFieldMapping.HasProperty(p => p.InstructionalText).HasFieldName(\"instructionalText\").IsUnicode();",
    "Change": "Modified",
    "Description / New mapping": ""
  },
  {
    "Class": "ModuleBuilderFluentMapping",
    "Mapping": "dynamicModuleFieldMapping.HasProperty(p => p.InstructionalText).HasFieldName(\"instructionalText\").IsLongText(this.Context);",
    "Change": "Modified",
    "Description / New mapping": ""
  },
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "objectDataMapping.HasProperty(p => p.ParentId).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasProperty(p => p.Language).ToColumn(\"lang\").IsText(this.Context, 84, false);",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "Items.HasProperty(p => p.Host).IsUnicode().IsNullable().ToColumn(\"host\");",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "dependencyType.MapType(p => new { })\n.WithCacheStrategy(OpenAccess.Metadata.CacheStrategy.No)\n.WithConcurencyControl(OpenAccess.OptimisticConcurrencyControlStrategy.None)\n.SetTableName(Constants.OCDTypesTable, this.Context);",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "dependencyType.HasProperty(p => p.Id).IsIdentity(OpenAccess.Metadata.KeyGenerator.Autoinc);",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "dependencyType.HasProperty(p => p.TypeName).IsUnicode().ToColumn(Constants.OCDTypeNameColumn).IsNotNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "dependencyType.HasIndex(p => new { p.TypeName })\n.IsUnique()\n.WithName(\"idx_sf_ocd_typ_nme\");",
    "Change": "Modified",
    "Description / New mapping": "cacheItems.HasIndex(p => new { p.SiteId }).WithName(\"idx_sf_ocd_itms_ste\");"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasIndex(p => new { p.SiteId }).WithName(\"idx_sf_oc_itms_ste\");",
    "Change": "Modified",
    "Description / New mapping": "cacheItems.HasIndex(p => new { p.SiteId }).WithName(\"idx_sf_ocd_itms_ste\");"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasIndex(p => new { p.Date\nModified\n}).WithName(\"idx_sf_oc_itms_dte_md\");",
    "Change": "Modified",
    "Description / New mapping": "cacheItems.HasIndex(p => new { p.Date\nModified\n}).WithName(\"idx_sf_ocd_itms_dte_md\");"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasIndex(p => new { p.SiteMapNodeKey }).WithName(\"idx_sf_oc_ste_nde\");",
    "Change": "Modified",
    "Description / New mapping": "cacheItems.HasIndex(p => new { p.SiteMapNodeKey }).WithName(\"idx_sf_ocd_ste_nde\");"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasProperty(p => p.TypeName).IsUnicode().ToColumn(Constants.OCDTypeNameColumn).IsNotNullable();",
    "Change": "Modified",
    "Description / New mapping": "cacheRelations.HasProperty(p => p.TypeId).ToColumn(Constants.OCDTypeIdColumn);"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasIndex(p => new { p.TypeName }).WithName(\"idx_sf_ocd_tn\");",
    "Change": "Modified",
    "Description / New mapping": "cacheRelations.HasIndex(p => new { p.TypeId }).WithName(\"idx_sf_ocd_typ_id\");"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageDataMapping.HasProperty(p => ((IRendererCommonData)p).Renderer).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageDataMapping.HasProperty(p => ((IRendererCommonData)p).TemplateName).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageDraftMapping.HasProperty(p => ((IRendererCommonData)p).Renderer).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageDraftMapping.HasProperty(p => ((IRendererCommonData)p).TemplateName).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "SchedulingFluentMapping",
    "Mapping": "scheduledTaskDataMapping.HasProperty(p => p.ConcurrentTasksKey).ToColumn(\"concurrent_tasks_key\").IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "TaxonomiesFluentMapping",
    "Mapping": "taxonomyMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName(\"sf_taxonomies\", this.Context);",
    "Change": "Modified",
    "Description / New mapping": "taxonomyMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.None).SetTableName(\"sf_taxonomies\", this.Context);"
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "changeMapping.HasProperty(p => p.DateCreated).HasFieldName(\"dateCreated\").ToColumn(\"date_created\").IsCalculatedOn(DateTimeAutosetMode.Insert).IsNullable();",
    "Change": "Modified",
    "Description / New mapping": "changeMapping.HasProperty(p => p.AdditionalInfo).ToColumn(\"add_info\").IsUnicode().WithInfiniteLength().IsNullable();"
  }
]
```

</SfDbFluentChangesTable>
</SfDbVersionChange>

<SfDbVersionChange version="12.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_page_node",
    "Change": "Added index",
    "Description": "idx_sf_pg_node_prnt_id_ordnl",
    "Details": "Needed for Oracle upgrades"
  },
  {
    "Table": "sf_site_sync_summary",
    "Change": "Added property",
    "Description": "is_for_specific_item",
    "Details": "Used by SiteSync – checks if single item is synced."
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "SiteSyncFluentMapping",
    "Mapping": "siteSyncSummaryMapping.HasProperty(p => p.IsForSpecificItem).ToColumn(\"is_for_specific_item\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "PagesFluentMapping",
    "Mapping": "pageNodeMapping.HasIndex(p => new { p.ParentId, p.Ordinal }).WithName(\"idx_sf_pg_node_prnt_id_ordnl\");",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>
</SfDbVersionChange>

<SfDbVersionChange version="12.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_oc_dpndncies",
    "Change": "Added table",
    "Description": "",
    "Details": "Stores information about dependencies for each output cache item (page)."
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[send_confirmation_email] BIT NULL",
    "Details": "Stores the value controlling whether confirmation email is enabled (form drafts)"
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[send_confirmation_email] BIT NULL",
    "Details": "Stores the value controlling whether confirmation email is enabled (forms)"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[sender_name] NVARCHAR (255) NULL",
    "Details": "Stores the value for the message template sender name"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[sender_email] NVARCHAR (255) NULL",
    "Details": "Stores the value for the message template sender email"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[resolve_key] NVARCHAR (MAX) NULL",
    "Details": "Stores the value for the message template resolve (variation) key"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[last_modified_by_provider] VARCHAR (255) NULL",
    "Details": "Stores the value for the message template last modified by provider"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[last_modified_by_id] UNIQUEIDENTIFIER NULL",
    "Details": "Stores the value for the message template last modified by id"
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Added column",
    "Description": "[last_modified] DATETIME NULL",
    "Details": "Stores the value for the message template last modified date"
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formDraftMapping.HasProperty(p => p.SendConfirmationEmail).IsBool(this.Context).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formDescriptionMapping.HasProperty(p => p.SendConfirmationEmail).IsBool(this.Context).IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.ResolveKey).IsLongText(this.Context).ToColumn(\"resolve_key\");",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.LastModified).ToColumn(\"last_modified\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.LastModifiedById).ToColumn(\"last_modified_by_id\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.LastModifiedByProvider).ToColumn(\"last_modified_by_provider\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.TemplateSenderEmailAddress).IsText(this.Context).ToColumn(\"sender_email\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "NotificationsFluentMapping",
    "Mapping": "messageTemplateMapping.HasProperty(p => p.TemplateSenderName).IsText(this.Context).ToColumn(\"sender_name\").IsNullable();",
    "Change": "Added"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheItems.HasProperty(p => p.DateModified).ToColumn(Constants.OCDateModifiedColumn).IsNullable();",
    "Change": "Modified"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasProperty(p => p.Id).IsIdentity(OpenAccess.Metadata.KeyGenerator.Autoinc).IsNotNullable().ToColumn(\"id\");",
    "Change": "Removed"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasProperty(p => p.CacheKey).ToColumn(Constants.OCDCacheKeyColumn).IsIdentity();",
    "Change": "Added"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasProperty(p => p.ItemKey).IsIdentity().IsUnicode().ToColumn(Constants.OCDItemKeyColumn).IsNotNullable();",
    "Change": "Modified"
  },
  {
    "Class": "OutputCacheRelationsFluentMapping",
    "Mapping": "cacheRelations.HasIndex(p => new {p.ItemKey, p.CacheItem}).WithName(\"idx_sf_ocd_ik_ck\").IsUnique();",
    "Change": "Removed"
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="12.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[rules]\nNVARCHAR (MAX)\nNULL",
    "Details": "Used to keep Form rules in JSON format."
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[rules]\nNVARCHAR (MAX)\nNULL",
    "Details": "Used to keep Form rules in JSON format."
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Modified column",
    "Description": "[type_name]\nNVARCHAR (255)\nNULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Modified column",
    "Description": "[item_key]\nNVARCHAR (255)\nNULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Removed column",
    "Description": "[voa_version]\nSMALLINT\nNOT NULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[url]\nNVARCHAR (MAX)\nNULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[status]\nINT\nNOT NULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[site_map_node_key]\nVARCHAR (255)\nNULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[cacheVaryKey]\nNVARCHAR (255)\nNULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Removed column",
    "Description": "[voa_version]\nSMALLINT\nNOT NULL",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added index",
    "Description": "[idx_sf_oc_itms_dte_md] ([date_modified]) ASC",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added index",
    "Description": "[idx_sf_oc_itms_ste] ([site_id]) ASC",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added index",
    "Description": "[idx_sf_oc_ste_nde] (site_map_node_key) ASC",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_oc_items",
    "Change": "Removed index",
    "Description": "[sf_oc_itms_ste_key] ([site_id] ASC)",
    "Details": "Output cache invalidation improvements"
  },
  {
    "Table": "sf_version_dependency",
    "Change": "Added table",
    "Description": "[clean_up_task_type] VARCHAR (255) NOT NULL,\n[data]\nNVARCHAR (MAX) NOT NULL,\n[key]\nVARCHAR (255) NOT NULL,\n[id] UNIQUEIDENTIFIER NOT NULL,\n[voa_version] SMALLINT NOT NULL",
    "Details": "Stores additional data for MediaContent\"s file when revision history is created"
  },
  {
    "Table": "sf_version_dependency",
    "Change": "Added column",
    "Description": "[clean_up_task_type] VARCHAR (255)NOT NULL",
    "Details": "Type of scheduled task to be created when dependency is deleted from database. Task cleans up the remaining file from storage."
  },
  {
    "Table": "sf_version_dependency",
    "Change": "Added column",
    "Description": "[data] NVARCHAR(MAX) NOT NULL",
    "Details": "The additional data for this dependency"
  },
  {
    "Table": "sf_version_dependency",
    "Change": "Added column",
    "Description": "[key]\nVARCHAR (255) NOT NULL",
    "Details": "The identifier which this dependency relates to"
  },
  {
    "Table": "sf_version_dependency",
    "Change": "Added column",
    "Description": "[id] UNIQEIDENTIFIER NOT NULL",
    "Details": "Unique identifier of the row"
  },
  {
    "Table": "sf_vrsn_chngs_sf_vrsn_dpndncy",
    "Change": "Added table",
    "Description": "[id] UNIQUEIDENTIFIER NOT NULL,\n[id2] UNIQUEIDENTIFIER NOT NULL",
    "Details": "Breaks many-to-may relationship between [sf_version_chnges] and [sf_version_dependency] tables"
  }
]
```

</SfDbSchemaChangesTable>
<br>

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogMapping.HasAssociation\\\u003CTelerik.Sitefinity.Blogs.Model.BlogPost>(p => p.BlogPosts).WithOpposite(p => p.Parent).IsManaged().IsDependent();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.Permission>(p => p.Permissions);",
    "Change": "Modified",
    "Description / New mapping": "blogMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.Permission>(p => p.Permissions).MapJoinTable();"
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogMapping.HasProperty(p => p.LandingPageId).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.PermissionsInheritanceMap>(p => p.PermissionChildren);",
    "Change": "",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasProperty(p => p.OriginalContentId).IsNullable();",
    "Change": "Modified",
    "Description / New mapping": "blogPostMapping.HasProperty(p => p.OriginalContentId).HasFieldName(\"originalContentId\").ToColumn(\"original_content_id\").IsNullable();"
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.Permission>(p => p.Permissions);",
    "Change": "Modified",
    "Description / New mapping": "blogPostMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.Permission>(p => p.Permissions).MapJoinTable();"
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasAssociation\\\u003CTelerik.Sitefinity.Security.Model.PermissionsInheritanceMap>(p => p.PermissionChildren);",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasProperty(p => p.ParentId).ToColumn(\"parent_id\");",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasAssociation\\\u003CTelerik.Sitefinity.Workflow.Model.Tracking.ApprovalTrackingRecordMap>(p => p.ApprovalTrackingRecordMap);",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasProperty(p => p.WasPublished).ToColumn(\"was_published\").IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "BlogsFluentMapping",
    "Mapping": "blogPostMapping.HasIndex(p => new { p.OriginalContentId }).WithName(\"idx_sf_bposts_org_cnt_id\");",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formDraftMapping.HasProperty(p => p.Rules).IsNullable().IsLongText(this.Context);",
    "Change": "Added",
    "Description / New mapping": "Used to keep Form rules in JSON format."
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formControlMapping.HasProperty(p => p.ContainerId).ToColumn(\"content_id\");",
    "Change": "Added",
    "Description / New mapping": "Added direct mapping for existing content_id column of sf_object_data (used in query on DataAccess dirty items to retrieve related Form object)"
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formDraftControlMapping.HasProperty(p => p.ContainerId).ToColumn(\"id3\");",
    "Change": "Added",
    "Description / New mapping": "Added direct mapping for existing id3 column of sf_object_data (used in query on DataAccess dirty items to retrieve related Form object)"
  },
  {
    "Class": "FormsFluentMapping",
    "Mapping": "formDescriptionMapping.HasProperty(p => p.Rules).IsNullable().IsLongText(this.Context);",
    "Change": "Added",
    "Description / New mapping": "Used to keep Form rules in JSON format."
  },
  {
    "Class": "ObjectDataFluentMapping",
    "Mapping": "objectDataMapping.HasProperty(p => p.MultilingualVersion).IsLongText(this.Context).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName(\"sf_version_dependency\", this.Context);",
    "Change": "Added",
    "Description / New mapping": "Track changes to record."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasProperty(p => p.Id).ToColumn(\"id\").IsIdentity().IsNotNullable();",
    "Change": "Added",
    "Description / New mapping": "Unique identifier of the table."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasProperty(p => p.Key).ToColumn(\"key\").IsNotNullable();",
    "Change": "Added",
    "Description / New mapping": "The key (id) of the item which data is stored in [data] column."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasProperty(p => p.CleanUpTaskType).ToColumn(\"clean_up_task_type\").IsNotNullable();",
    "Change": "Added",
    "Description / New mapping": "The type of the task to delete the file from blob storage."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasProperty(p => p.Data).IsUnicode().WithInfiniteLength().ToColumn(\"data\").IsNotNullable();",
    "Change": "Added",
    "Description / New mapping": "Serialized data in JSON format which is used when preview or restore version and when delete dependency to delete the file from blob storage."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasAssociation(d => d.Changes).WithOpposite(c => c.Dependencies).IsManaged().MapJoinTable(\"sf_vrsn_chngs_sf_vrsn_dpndncy\");",
    "Change": "Added",
    "Description / New mapping": "Related changes to this dependency."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "versionDependency.HasIndex(i => new { i.Key, i.CleanUpTaskType }).IsUnique().WithName(\"sf_idx_vrsn_dpndncy\");",
    "Change": "Added",
    "Description / New mapping": "For better performance. Combination of KEY & CleanUpTaskType should be unique."
  },
  {
    "Class": "VersioningFluentMapping",
    "Mapping": "changeMapping.HasAssociation(c => c.Dependencies).WithOpposite(d => d.Changes).IsManaged().MapJoinTable(\"sf_vrsn_chngs_sf_vrsn_dpndncy\");",
    "Change": "Added",
    "Description / New mapping": "Related dependencies to this change."
  }
]
```

</SfDbFluentChangesTable>

</SfDbVersionChange>

﻿
<SfDbVersionChange version="11.2">

### Custom fields

Allow *Date and Time* and *Number* custom fields to have different values per translation.

<h3>Fluent Mapping Changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "MetadataFluentMapping",
    "Mapping": "metaFieldMapping.HasProperty(p => p.IsLocalizable).IsNullable();",
    "Change": "Added"
  }
]
```

</SfDbFluentChangesTable>
<br>

<h3>Schema changes </h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_meta_fields",
    "Change": "Added column",
    "Description": "[is_localizable]\n[tinyint] NULL",
    "Details": "Determines if the current field is localizable - can have different values per culture"
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="11.1">

Database changes are recorded in the `UpgradeTrace.log` file during upgrade.\
For more information, see [Log changes to the database during upgrades](https://docs.sitefinity.com/log-changes-to-the-database-during-upgrades).

<h3>Fluent changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "IdentityServerFuentMapping.cs",
    "Mapping": "claimssMapping.HasProperty(c => c.Email).IsNotNullable().ToColumn('email')",
    "Change": "Updated",
    "Description / New mapping": "Updated to claimssMapping.HasProperty(c => c.Email).IsNullable().ToColumn('email');"
  },
  {
    "Class": "IdentityServerFuentMapping.cs",
    "Mapping": "claimssMapping.HasProperty(c => c.ExternalId).IsText(this.Context).IsNotNullable().ToColumn('ext_id')",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ExternalId property"
  },
  {
    "Class": "IdentityServerFuentMapping.cs",
    "Mapping": "claimssMapping.HasProperty(c => c.ExternalProviderName).IsText(this.Context).IsNotNullable().ToColumn('ext_provider_name')",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ExternalProviderName property"
  },
  {
    "Class": "IdentityServerFuentMapping.cs",
    "Mapping": "claimssMapping.HasIndex(c => new { c.ExternalProviderName, c.ExternalId }).WithName('sf_idsrv_claims_external');",
    "Change": "New",
    "Description / New mapping": "Added new index by the ExternalProviderName and ExternalId properties"
  },
  {
    "Class": "IdentityServerFuentMapping.cs",
    "Mapping": "claimssMapping.HasIndex(c => c.Email).IsUnique().WithName('sf_idsrv_claims_email')",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "MembershipFluentMapping.cs",
    "Mapping": "userMapping.HasProperty(p => p.ExternalId).ToColumn('ext_id').IsText(this.Context).IsNullable()",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ExternalId property"
  },
  {
    "Class": "MembershipFluentMapping.cs",
    "Mapping": "metaFieldMapping.HasProperty(p => p.RecommendedCharactersCount).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for RecommendedCharactersCount property"
  },
  {
    "Class": "MembershipFluentMapping.cs",
    "Mapping": "userMapping.HasIndex(u => new { u.ExternalProviderName, u.ExternalId }).WithName('sf_users_external')",
    "Change": "New",
    "Description / New mapping": "Added new index by the ExternalProviderName and ExternalId properties"
  },
  {
    "Class": "UserProfileFluentMapping.cs",
    "Mapping": "sitefinityProfileMapping.HasProperty(p => p.Nickname).ToColumn('nickname').IsText(this.Context).HasLength(SitefinityProfile.NicknameLength).IsNullable()",
    "Change": "Updated",
    "Description / New mapping": "Updated to sitefinityProfileMapping.HasProperty(p => p.Nickname).ToColumn('nickname').IsText(this.Context, SitefinityProfile.NicknameLength).IsNullable();"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_workflow_definition', this.Context)",
    "Change": "Updated",
    "Description / New mapping": "Updated to workflowDefinitionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowScope>(p => p.Scopes).WithOpposite(p => p.Definition).IsManaged().IsDependent();"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowScope>(p => p.WorkflowScopes).WithOpposite(p => p.Definition).IsManaged().IsDependent()",
    "Change": "Updated",
    "Description / New mapping": "Updated to workflowDefinitionMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_wfl_definition', this.Context);"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowLevel>(p => p.Levels).WithOpposite(p => p.Definition).IsManaged().IsDependent();",
    "Change": "New",
    "Description / New mapping": "Added new association mapping between WorkflowDefinition and WorflowLevel"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasProperty(p => p.AllowNotes).HasFieldName('allowNotes').IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for AllowNotes property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowPermission>(p => p.WorkflowPermissions).WithOpposite(p => p.Definition).IsManaged().IsDependent();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasProperty(p => p.CultureScope).HasLength(2000).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasProperty(p => p.SendFirstLevelEmailNotification).IsNotNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasProperty(p => p.SendSecondLevelEmailNotification).IsNotNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasAssociation(p => p.AdditionalFirstLevelRecipients);",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowDefinitionMapping.HasAssociation(p => p.AdditionalSecondLevelRecipients);",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_workflow_scope', this.Context);",
    "Change": "Updated",
    "Description / New mapping": "Updated to workflowScopeMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowDefinition>(p => p.Definition).ToColumn('workflow_definition_id');"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowDefinition>(p => p.Definition).ToColumn('id2');//ToColumn('workflow_definition_id')",
    "Change": "Updated",
    "Description / New mapping": "Updated to workflowScopeMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_wfl_scope', this.Context);"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowTypeScope>(p => p.TypeScopes).WithOpposite(p => p.WorkflowScope).IsManaged().IsDependent();",
    "Change": "New",
    "Description / New mapping": "Added new association mapping between WorkflowScope and WorkflowTypeScope"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasProperty(p => p.Title).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasProperty(p => p.ContentFilterExpression).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasProperty(p => p.ParentId).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowScopeMapping.HasAssociation(p => p.SelectedIds);",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_wfl_scope', this.Context);",
    "Change": "New",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasProperty(p => p.Id).HasFieldName('id').IsIdentity().IsNotNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for Id property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowDefinition>(p => p.Definition).ToColumn('workflow_definition_id');",
    "Change": "New",
    "Description / New mapping": "Added new association mapping between WorkflowTypeScope and WorkflowDefinition"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasProperty(p => p.Language).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for Language property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasProperty(p => p.ProviderName).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ProviderName property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasProperty(p => p.ApplicationName).HasFieldName('appName').ToColumn('app_name').IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ApplicationName property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowTypeScopeMapping.HasProperty(p => p.LastModified).ToColumn('last_modified').IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate);",
    "Change": "New",
    "Description / New mapping": "Added new mapping for LastModified property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_wfl_level', this.Context);",
    "Change": "New",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.Id).HasFieldName('id').IsIdentity().IsNotNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for Id property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowDefinition>(p => p.Definition).ToColumn('workflow_definition_id');",
    "Change": "New",
    "Description / New mapping": "Added new association mapping between WorkflowLevel and WorkflowDefinition"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.ActionName).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ActionName property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.Ordinal).IsNotNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for Ordinal property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowPermission>(p => p.Permissions).WithOpposite(p => p.Level).IsManaged().IsDependent();",
    "Change": "New",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.ApplicationName).HasFieldName('appName').ToColumn('app_name').IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ApplicationName property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.LastModified).ToColumn('last_modified').IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate);",
    "Change": "New",
    "Description / New mapping": "Added new mapping for LastModified property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.NotifyApprovers).IsNotNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for NotifyApprovers property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasProperty(p => p.NotifyAdministrators).IsNotNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for NotifyAdministrators property"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowLevelMapping.HasAssociation(p => p.CustomEmailRecipients);",
    "Change": "New",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowPermissionMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_workflow_permission', this.Context);",
    "Change": "Updated",
    "Description / New mapping": "Updated to workflowPermissionMapping.MapType(p => new { }).WithConcurencyControl(OptimisticConcurrencyControlStrategy.Version).SetTableName('sf_wfl_permission', this.Context);"
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowPermissionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowDefinition>(p => p.Definition).ToColumn('id2');",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "WorkflowFluentMapping.cs",
    "Mapping": "workflowPermissionMapping.HasAssociation<Telerik.Sitefinity.Workflow.Model.WorkflowLevel>(p => p.Level).ToColumn('workflow_level_id')",
    "Change": "New",
    "Description / New mapping": "Added new association mapping between Permissions and WorkflowLevel"
  },
  {
    "Class": "MetadataFluentMapping.cs",
    "Mapping": "metaFieldMapping.HasProperty(p => p.RecommendedCharactersCount).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for RecommendedCharactersCount property"
  },
  {
    "Class": "ModuleBuilderFluentMapping.cs",
    "Mapping": "dynamicModuleFieldMapping.HasProperty(p => p.RecommendedCharactersCount).IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for RecommendedCharactersCount property"
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "facebookPipeSettingsMapping.HasProperty(p => p.AppIdReference).IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "facebookPipeSettingsMapping.HasProperty(p => p.UserNameReference).ToColumn('user_name_reference2').IsNullable();",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "publishingPointMapping.HasProperty(p => p.IsTemplate).HasFieldName('isTemplate').IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for LastModified property"
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "publishingPointSettingsMapping.HasProperty(p => p.ItemFilterStrategy).ToColumn('item_filter_strategy').IsNullable();",
    "Change": "New",
    "Description / New mapping": "Added new mapping for ItemFilterStrategy property"
  },
  {
    "Class": "MobileFormatsFluentMapping.cs",
    "Mapping": "mapping.HasAssociation(p => p.MobileFormatDefinition).WithOpposite(d => d.Templates).ToColumn('mbl_frmt_dfntn_id');",
    "Change": "New",
    "Description / New mapping": ""
  },
  {
    "Class": "MobileFormatsFluentMapping.cs",
    "Mapping": "mapping.HasAssociation(p => p.MobileFormatContentType).WithOpposite(c => c.Templates).ToColumn('mbl_frmt_cntnt_type_id');",
    "Change": "New",
    "Description / New mapping": ""
  }
]
```

</SfDbFluentChangesTable>

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_users",
    "Change": "Added column",
    "Description": "[ext_id]\n[nvarchar](255) NULL",
    "Details": "Stores the id of the user in the external provider"
  },
  {
    "Table": "sf_idsrv_claims",
    "Change": "Added column",
    "Description": "[ext_provider_name]\n[nvarchar](255) NOT NULL",
    "Details": "Stores the name of the external provider (unique key combined with ext_id)"
  },
  {
    "Table": "sf_idsrv_claims",
    "Change": "Added column",
    "Description": "[ext_id]\n[nvarchar](255) NOT NULL",
    "Details": "Stores the id of the user in the external provider (unique key combined with ext_provider_name)"
  },
  {
    "Table": "sf_idsrv_claims",
    "Change": "Updated column",
    "Description": "From\n[email] [varchar](255) NOT NULL\nTo\n[email] [varchar](255) NULL",
    "Details": "Before claims where stored by email but now they are stored by unique combination of ext_id & ext_provider_name"
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Updated table",
    "Description": "From\nsf_workflow_definition\nTo\nsf_wfl_definition",
    "Details": "Stores workflow definitions"
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Removed column",
    "Description": "[culture_scope] [varchar] (2000) NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Removed column",
    "Description": "[snd_frst_lvl_mail_notification] [tinyint] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Removed column",
    "Description": "[snd_scnd_lvl_mail_notification] [tinyint] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_wfl_definition",
    "Change": "Added column",
    "Description": "[allow_notes] [tynyint] NULL",
    "Details": "Stores the value controlling whether notes are enabled"
  },
  {
    "Table": "sf_wrkflw_dfntn_ddtnl_frst_lvln",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_wrkflw_dfntn_ddtnl_scnd_lvl",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Updated table",
    "Description": "From\nsf_workflow_scope\nTo\nsf_wfl_scope",
    "Details": "Stores workflow scopes"
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Removed column",
    "Description": "[title] [varchar] (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Removed column",
    "Description": "[parent_id] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Removed column",
    "Description": "[content_filter_expression] [varchar] (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Removed column",
    "Description": "[content_type] [varchar] (255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_wfl_scope",
    "Change": "Updated column",
    "Description": "From\n[id2] [uniqueidentifier] NULL\nTo\n[workflow_definition_id] [uniqueidentifier] NULL",
    "Details": "Stores the Id of the workflow definition"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added table",
    "Description": "",
    "Details": "Stores the workflow type scopes – single record for each content type defined in the workflow"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[id] [PK][uniqueidentifier] NOT NULL",
    "Details": "Stores the id"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[scope_id] [uniqueidentifier] NULL",
    "Details": "Stores the scope id"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[content_type] [varchar] (255) NULL",
    "Details": "Stores the content type"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[content_filter] [varchar] (max) NULL",
    "Details": "Stores the content filter"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[include_children] [tynyint] NULL",
    "Details": "Stores the value indicating whether the type scope will include children of the selected items in the content filter"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[app_name] [varchar] (255) NULL",
    "Details": "Stores the app name"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[voa_version] [smallint] NOT NULL",
    "Details": "Stores the voa version"
  },
  {
    "Table": "sf_wfl_type_scope",
    "Change": "Added column",
    "Description": "[last_modified] [datetime] NOT NULL",
    "Details": "Stores the date when the item was last modified"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added table",
    "Description": "",
    "Details": "Stores the worfklow levels"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[id] [PK][uniqueidentifier] NOT NULL",
    "Details": "Stores the id"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[ordinal] [real] NOT NULL",
    "Details": "Stores the ordinal of the level"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[workflow_definition_id] [uniqueidentifier] NULL",
    "Details": "Stores the id of the workflow definition"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[action_name] [varchar] (255) null",
    "Details": "Stores the action name of the workflow level"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[notify_approvers] [tynyint] NOT NULL",
    "Details": "Stores the value indicating whether level approvers will be notified by email"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[notify_administrators] [tynyint] NOT NULL",
    "Details": "Stores the value indicating whether administrators will be notified by email"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[app_name] [varchar] (255) null",
    "Details": "Stores the app name"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[voa_version] [smallint] NOT NULL",
    "Details": "Stores the voa version"
  },
  {
    "Table": "sf_wfl_level",
    "Change": "Added column",
    "Description": "[last_modified] [datetime] NOT NULL",
    "Details": "Stores the date when the item was last modified"
  },
  {
    "Table": "sf_wfl_lvl_cstm_mil_recipients",
    "Change": "Added table",
    "Description": "",
    "Details": "Stores the custom email recipients for the level to be notified"
  },
  {
    "Table": "sf_wfl_lvl_cstm_mil_recipients",
    "Change": "Added column",
    "Description": "[id] [PK] [FK][uniqueidentifier] NOT NULL",
    "Details": "Stores the id of the workflow level"
  },
  {
    "Table": "sf_wfl_lvl_cstm_mil_recipients",
    "Change": "Added column",
    "Description": "[seq] [PK][int] NOT NULL",
    "Details": "Stores the ordinal"
  },
  {
    "Table": "sf_wfl_lvl_cstm_mil_recipients",
    "Change": "Added column",
    "Description": "[val] [varchar] (255) null",
    "Details": "Stores the email to wich an email should be sent"
  },
  {
    "Table": "sf_workflow_permission",
    "Change": "Updated table",
    "Description": "From\nsf_workflow_permission\nTo\nsf_wfl_permission",
    "Details": "Stores the data which users/roles have the permission to execute the workflow level"
  },
  {
    "Table": "sf_workflow_permission",
    "Change": "Removed column",
    "Description": "[id2] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_wfl_permission",
    "Change": "Added column",
    "Description": "[workflow_level_id] [uniqueidentifier] NULL",
    "Details": "Stores the workflow level id"
  },
  {
    "Table": "sf_pblshng_pnt_sttngs_stp_kywr",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope_selected_ids",
    "Change": "Removed table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_wrkflw_dfntn_prmssnst_bjct_",
    "Change": "Updated table",
    "Description": "From\nsf_wrkflw_dfntn_prmssnst_bjct_\nTo\nsf_wfl_dfntn_prmssnst_bjct_ttl",
    "Details": ""
  },
  {
    "Table": "sf_wrkflw_dfntn_sf_permissions",
    "Change": "Updated table",
    "Description": "From\nsf_wrkflw_dfntn_sf_permissions\nTo\nsf_wfl_dfnition_sf_permissions",
    "Details": ""
  },
  {
    "Table": "sf_wrkflw_dfntn_spprtd_prmssn_",
    "Change": "Updated table",
    "Description": "From\nsf_wrkflw_dfntn_spprtd_prmssn_\nTo\nsf_wfl_dfntn_spprtd_prmssn_sts",
    "Details": ""
  },
  {
    "Table": "sf_config_variables",
    "Change": "Updated column",
    "Description": "From\n[id] [PK] [uniqueidentifier] NOT NULL\nTo\n[id] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_config_variables",
    "Change": "Updated column",
    "Description": "From\n[app_name] [varchar255] NULL\nTo\n[app_name] [PK]\n[varchar255] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[recommended_characters_count] [int] NULL",
    "Details": ""
  },
  {
    "Table": "sf_meta_fields",
    "Change": "Added column",
    "Description": "[recommended_characters_count] [int] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[place_holder] [varchar](50) NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_pipe_settings",
    "Change": "Removed column",
    "Description": "[user_name_reference2] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_pipe_settings",
    "Change": "Removed column",
    "Description": "[app_id_reference] [int] NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_point",
    "Change": "Updated column",
    "Description": "From\n[is_template] [tinyint] NOT NULL\nTo\n[is_template] [tinyint] NULL",
    "Details": ""
  },
  {
    "Table": "sf_publishing_point_settings",
    "Change": "Added column",
    "Description": "[item_filter_strategy] [int] NULL",
    "Details": ""
  },
  {
    "Table": "sf_users",
    "Change": "Added column",
    "Description": "[ext_id] [nvarchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "voa_keygen",
    "Change": "",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[siteId] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[last_modified] [datetime] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[id] [PK] [uniqueidentifier] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[fullName] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[displayName] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_cntnt_types",
    "Change": "Added column",
    "Description": "[app_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[siteId] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[setting_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[last_modified] [datetime] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[id] [PK] [uniqueidentifier] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[app_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_dfntns",
    "Change": "Added column",
    "Description": "[active] [tinyint] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_sf_mbl_cntnt_typs",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_sf_mbl_cntnt_typs",
    "Change": "Added column",
    "Description": "[id] [PK] [FK] [uniqueidentifier]",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_sf_mbl_cntnt_typs",
    "Change": "Added column",
    "Description": "[id2] [PK] [FK] [uniqueidentifier]",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[use_custom_canonical_url] [tinyint] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[template_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[mbl_frmt_dfntn_id] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[mbl_frmt_cntnt_type_id] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[layout_template_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[last_modified] [datetime] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[id] [PK] [uniqueidentifier] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[custom_canonical_url_format] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_mbl_frmt_templates",
    "Change": "Added column",
    "Description": "[app_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added column",
    "Description": "[type_name] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added column",
    "Description": "[item_key] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added column",
    "Description": "[id] [PK] [uniqueidentifier] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added column",
    "Description": "[cache_key] [varchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_dependencies",
    "Change": "Added column",
    "Description": "[voa_version] [smallint] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[site_id] [uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[key] [PK] [uniqueidentifier] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[e_tag] [nvarchar](255) NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[date_modified] [datetime] NULL",
    "Details": ""
  },
  {
    "Table": "sf_oc_items",
    "Change": "Added column",
    "Description": "[voa_version] [smallint] NOT NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="11.0">

<h3>Fluent mapping changes</h3>

<SfDbFluentChangesTable>

```
[
  {
    "Class": "SchedulingFluentMapping.cs",
    "Mapping": "scheduledTaskDataMapping.HasProperty(p => p.Owner).ToColumn('owner').IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "ContentLocationsFluentMapping.cs",
    "Mapping": "locationMapping.HasProperty(p => p.ControlId).ToColumn('control_id');",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "FolderFluentMapping.cs",
    "Mapping": "folderMapping.HasProperty(p => p.LastModified).IsCalculatedOn(DateTimeAutosetMode.InsertAndUpdate).IsNullable();",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "TaxonomiesFluentMapping.cs",
    "Mapping": "taxonMapping.HasProperty(p => p.Status).ToColumn('status');",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "TaxonomiesFluentMapping.cs",
    "Mapping": "taxonMapping.HasIndex(p => new { p.Status }).WithName('idx_sf_taxon_status');",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "UserProfileFluentMapping.cs",
    "Mapping": "sitefinityProfileMapping.HasProperty(p => p.Preferences).IsLongText(this.Context, false);",
    "Change": "Added",
    "Description / New mapping": ""
  },
  {
    "Class": "ContentBaseFluentMapping.cs",
    "Mapping": "approvalTrackingRecordMapping.HasProperty(p => p.Note).IsNullable();",
    "Change": "Updated from",
    "Description / New mapping": ""
  },
  {
    "Class": "ContentBaseFluentMapping.cs",
    "Mapping": "approvalTrackingRecordMapping.HasProperty(p => p.Note).IsLongText(context).IsNullable();",
    "Change": "Updated to",
    "Description / New mapping": ""
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "pipeSettingsMapping.HasProperty(p => p.AdditionalData).HasValueLength(1000).WithLoadBehavior(LoadBehavior.Eager);",
    "Change": "Updated from",
    "Description / New mapping": ""
  },
  {
    "Class": "PublishingFluentMapping.cs",
    "Mapping": "pipeSettingsMapping.HasProperty(p => p.AdditionalData).WithValueOpenAccessType(OpenAccessType.UnicodeStringInfiniteLength).WithLoadBehavior(LoadBehavior.Eager);",
    "Change": "Updated to",
    "Description / New mapping": ""
  },
  {
    "Class": "NewslettersFluentMapping.cs",
    "Mapping": "listMapping.HasProperty(p => p.WelcomeMessageSubject).IsNullable();",
    "Change": "Updated from",
    "Description / New mapping": ""
  },
  {
    "Class": "NewslettersFluentMapping.cs",
    "Mapping": "listMapping.HasProperty(p => p.WelcomeMessageSubject).IsNullable().IsText(this.Context, true);",
    "Change": "Updated to",
    "Description / New mapping": ""
  },
  {
    "Class": "ListsFluentMapping.cs",
    "Mapping": "listMapping.HasAssociation<Telerik.Sitefinity.Lists.Model.ListItem>(p => p.ListItems).WithOpposite(p => p.Parent).ToColumn('parent_id').IsManaged().IsDependent().OrderBy('ordinal ascending');",
    "Change": "Removed",
    "Description / New mapping": ""
  },
  {
    "Class": "ListsFluentMapping.cs",
    "Mapping": "listItemMapping.HasAssociation<List>(p => p.Parent).ToColumn('parent_id');",
    "Change": "Added",
    "Description / New mapping": ""
  }
]
```

</SfDbFluentChangesTable>

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "[sf_approval_tracking_record]",
    "Change": "Updated column",
    "Description": "From\n[note] VARCHAR (255) NULL\n to  \n[note] NVARCHAR (MAX) NULL",
    "Details": "Users can now enter long text comments when rejecting an item that requires approval."
  },
  {
    "Table": "[sf_cnt_locations]",
    "Change": "Added column",
    "Description": "[control_id] UNIQUEIDENTIFIER NULL",
    "Details": "Used to uniquely identify the content location for each widget for each content type on a page."
  },
  {
    "Table": "[sf_folders]",
    "Change": "Added column",
    "Description": "[last_modified] DATETIME NULL",
    "Details": "Used for sorting the most recent libraries."
  },
  {
    "Table": "[sf_list_items]",
    "Change": "Removed index",
    "Description": "NONCLUSTERED INDEX [idx_sf_list_items_parent_id]\n ON [dbo].[sf_list_items]([parent_id] ASC);",
    "Details": "Removed index."
  },
  {
    "Table": "[sf_pblshng_pp_sttngs_ddtnl_dta]",
    "Change": "Updated column",
    "Description": "From\n[val] VARCHAR (1000) NULL\n to  \n[val] NVARCHAR (MAX) NULL",
    "Details": "Users can now enter additional fields for search index that are longer than 1000 characters."
  },
  {
    "Table": "[sf_scheduled_tasks]",
    "Change": "Added column",
    "Description": "[owner]UNIQUEIDENTIFIER NULL",
    "Details": "Added new column:  owner."
  },
  {
    "Table": "[sf_sitefinity_profile]",
    "Change": "Added column",
    "Description": "[preferences] VARCHAR (MAX) NULL",
    "Details": "Added new column: preferences."
  },
  {
    "Table": "[sf_taxa]",
    "Change": "Added column",
    "Description": "[status] INT NOT NULL",
    "Details": "Added new column: status."
  },
  {
    "Table": "[sf_taxa]",
    "Change": "Added index",
    "Description": "NONCLUSTERED INDEX [idx_sf_taxon_status] \n  ON [dbo].[sf_taxa]([status] ASC)",
    "Details": "Added new index for status column."
  },
  {
    "Table": "[sf_lst]",
    "Change": "Updated column",
    "Description": "From [welcome_message_subject] VARCHAR (255) NULL \nto\n[welcome_message_subject] NVARCHAR (255) NULL",
    "Details": "Now the Welcome message subject allows non-ACII characters."
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="10.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "[sf_ab_test]",
    "Change": "New table",
    "Description": "Added for the A/B testing feature",
    "Details": "Persists A/B test information"
  },
  {
    "Table": "[sf_ab_test_goal]",
    "Change": "New table",
    "Description": "Added for the A/B testing feature",
    "Details": "Persists A/B test goals information"
  },
  {
    "Table": "[sf_ab_test_variation]",
    "Change": "New table",
    "Description": "Added for the A/B testing feature",
    "Details": "Persists A/B test variations information"
  },
  {
    "Table": "[sf_page_data]",
    "Change": "Added column",
    "Description": "[variation_type_key]\nVARCHAR (255) NULL",
    "Details": "The variation type (e.g.”pers”, “abtest”)"
  },
  {
    "Table": "[sf_page_data]",
    "Change": "Removed columns",
    "Description": "[sliding_expiration]\nTINYINT NULL\n[cache_output]\nTINYINT NULL\n[cache_duration]\nINT NULL",
    "Details": "Removed because they are obsolete"
  },
  {
    "Table": "[sf_stat_sentence]",
    "Change": "Changed column",
    "Description": "[object_key]\nNVARCHAR (2084) NULL",
    "Details": "Enlarged size because page URLs could not fit and resulted in data loss"
  },
  {
    "Table": "[sf_site_sync_summary]",
    "Change": "Changed column",
    "Description": "[general_errors]\nNVARCHAR (max) NULL",
    "Details": "Enlarged because some Site Sync errors could not fit"
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="10.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "[sf_files_monitor_data]",
    "Change": "Created index",
    "Description": "CREATE UNIQUE NONCLUSTERED INDEX [idx_sf_fls_mntr_dta_path]\n \n \n ON [dbo].[sf_files_monitor_data]([file_path] ASC);\nGO",
    "Details": ""
  },
  {
    "Table": "[sf_form_description_attrbute]",
    "Change": "Changed column",
    "Description": "[val] is now VARCHAR (MAX)",
    "Details": "Extending forms definitions"
  },
  {
    "Table": "[sf_media_file_links]",
    "Change": "Changed column",
    "Description": "[file_path] is now NVARCHAR (510)",
    "Details": ""
  },
  {
    "Table": "[sf_meta_attribute]",
    "Change": "Created index",
    "Description": "CREATE UNIQUE NONCLUSTERED INDEX [idx_sf_meta_attribute_id2]\n \n \n ON [dbo].[sf_meta_attribute]([id2] ASC);\nGO",
    "Details": "Metadata bootstrap optimization"
  },
  {
    "Table": "[sf_meta_attribute]",
    "Change": "Removed index",
    "Description": "[id3]",
    "Details": "Metadata bootstrap optimization"
  },
  {
    "Table": "[sf_mt_fields_sf_meta_attribute]",
    "Change": "Removed",
    "Description": "",
    "Details": "Metadata bootstrap optimization"
  },
  {
    "Table": "[sf_mta_types_sf_meta_attribute]",
    "Change": "Removed",
    "Description": "",
    "Details": "Metadata bootstrap optimization"
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿<SfDbVersionChange version="10.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "[sf_idsrv_claims]",
    "Change": "Added",
    "Description": "Added\nfor the new authentication with Identity Server.",
    "Details": "Persists the Identity Server claims."
  },
  {
    "Table": "[sf_idsrv_consents]",
    "Change": "Added",
    "Description": "Added\nfor the new authentication with Identity Server.",
    "Details": "Persists the Identity Server consents, containing the records of subject with his allowed scopes for specific client."
  },
  {
    "Table": "[sf_idsrv_keys]",
    "Change": "Added",
    "Description": "Added\nfor the new authentication with Identity Server.",
    "Details": "Persists the Identity Server data keys, containing the info about consent items and tokens for specific subject and client."
  },
  {
    "Table": "[sf_idsrv_tokens]",
    "Change": "Added",
    "Description": "Added\nfor the new authentication with Identity Server.",
    "Details": "Persists the tokens, issued by Identity Server."
  },
  {
    "Table": "[sf_content_link]",
    "Change": "Changed column",
    "Description": "[child_item_additional_info] is now \n \nNVARCHAR (1024)",
    "Details": ""
  },
  {
    "Table": "[sf_failed_deliveries]",
    "Change": "Changed column",
    "Description": "[description] is now NVARCHAR (255)",
    "Details": "Support for Unicode symbols for email campaigns"
  },
  {
    "Table": "[sf_notif_subscr_list]",
    "Change": "Changed column",
    "Description": "[title] is now NVARCHAR (255)",
    "Details": "Support for Unicode symbols for email campaigns"
  },
  {
    "Table": "[sf_notif_subscribers]",
    "Change": "Changed column",
    "Description": "[first_name] is now NVARCHAR (255)",
    "Details": "Support for Unicode symbols for email campaigns"
  },
  {
    "Table": "[sf_notif_subscribers]",
    "Change": "Changed column",
    "Description": "[last_name] is now NVARCHAR (255)",
    "Details": "Support for Unicode symbols for email campaigns"
  },
  {
    "Table": "[sf_ntf_sbscrbrs_cstm_prperties]",
    "Change": "Changed column",
    "Description": "[val] \n \nis now \n \nNVARCHAR (255)",
    "Details": "Support for Unicode symbols for email campaigns"
  },
  {
    "Table": "[sf_page_data]",
    "Change": "Changed column",
    "Description": "[sliding_expiration] NULL",
    "Details": "Allow null values, lazy loading. Deprecated use. Stored whether the cached page output should expire depending on the last time it was accessed. Now managed through the PageData.OutputCacheProfile property"
  },
  {
    "Table": "[sf_page_data]",
    "Change": "Changed column",
    "Description": "[cache_output] TINYINT",
    "Details": "Allow null values, lazy loading. Deprecated use. Stored whether the page output should be cached. Now managed through the PageData.OutputCacheProfile property"
  },
  {
    "Table": "[sf_page_data]",
    "Change": "Changed column",
    "Description": "[cache_duration] INT",
    "Details": "Allow null values, lazy loading. Deprecated use. Stored the amount of time the page output should be cached. Now managed through the PageData.OutputCacheProfile property"
  },
  {
    "Table": "[sf_pckgng_addn_lnks]",
    "Change": "Added column",
    "Description": "[addtnl_info]",
    "Details": "Added to track config elements added from add-ons for the purpose of deleting add-ons. This is used to delete the config elements that originated from a given add-on."
  },
  {
    "Table": "[sf_pckgng_addns]",
    "Change": "Added column",
    "Description": "[addn_key]",
    "Details": "Add-on key is used as part of the for the purpose of deleting add-ons. It is a mapping between filesystem and database for tracking each add-on. This tracking allows for safe deployment on NLB environments after Add-on deletion."
  },
  {
    "Table": "[sf_pckgng_addns]",
    "Change": "Created index",
    "Description": "CREATE UNIQUE NONCLUSTERED INDEX [idx_name]\n \n ON [dbo].[sf_pckgng_addns]([name] ASC);\n \nGO",
    "Details": "Index is created to optimize getting Add-Ons by name"
  },
  {
    "Table": "[sf_users]",
    "Change": "Added columns",
    "Description": "[ext_provider_name]",
    "Details": "Persists the name of the external provider that was used to create this user"
  },
  {
    "Table": "[sf_users]",
    "Change": "Created index",
    "Description": "CREATE NONCLUSTERED INDEX [sf_idx_email]\n \n ON [dbo].[sf_users]([email] ASC);\n \nGO",
    "Details": "Index is created to optimize getting user by email."
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿<SfDbVersionChange version="9.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_blogs",
    "Change": "[landing_page_id]\nUNIQUEIDENTIFIER \nNULL",
    "Description": "Removed column",
    "Details": ""
  },
  {
    "Table": "sf_ec_product",
    "Change": "[voa_class]\nINT \nNOT NULL",
    "Description": "Added column",
    "Details": ""
  },
  {
    "Table": "sf_forum_posts",
    "Change": "CREATE NONCLUSTERED INDEX [idx_sf_posts_last_modified] \n ON [dbo].[sf_forum_posts]([last_modified] DESC); \nGO",
    "Description": "Added index",
    "Details": "Improve performance of RSS Feeds"
  },
  {
    "Table": "sf_mb_dynamic_module",
    "Change": "[origin]\nVARCHAR (255)\nNULL",
    "Description": "Added column",
    "Details": "New column is added to persist the origin of the dynamic modules. It is used for the purpose of the Add-ons."
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "[origin]\nVARCHAR (255)\nNULL",
    "Description": "Added column",
    "Details": "New column is added to persist the origin of the dynamic module fields. It is used for the purpose of the Add-ons."
  },
  {
    "Table": "sf_mb_dynamic_module_type",
    "Change": "[origin]\nVARCHAR (255)\nNULL",
    "Description": "Added column",
    "Details": "New column is added to persist the origin of the dynamic module types. It is used for the purpose of the Add-ons."
  },
  {
    "Table": "sf_meta_fields",
    "Change": "[origin]\nVARCHAR (255)\nNULL",
    "Description": "Added column",
    "Details": "New column is added to persist the origin of the meta types. It is used for the purpose of the Add-ons."
  },
  {
    "Table": "sf_meta_types",
    "Change": "[origin]\nVARCHAR (255)\nNULL",
    "Description": "Added column",
    "Details": "New column is added to persist the origin of the meta typesmodul. It is used for the purpose of the Add-ons."
  },
  {
    "Table": "sf_pckgng_pckgs",
    "Change": "[version]\nUNIQUEIDENTIFIER\nNOT NULL",
    "Description": "Added column",
    "Details": "New column is added to persist the latest installed version of a package (Add-on or deployment package)."
  },
  {
    "Table": "sf_sites",
    "Change": "[site_configuration_mode]\nINT\nNOT NULL",
    "Description": "Added column",
    "Details": "Specifies current mode of the site, whether it is configured to be updated manually or via deployment package."
  },
  {
    "Table": "sf_stat_sentence",
    "Change": "CREATE NONCLUSTERED INDEX [IX_sf_stat_sntnc_subject_key] \n ON [dbo].[sf_stat_sentence]([subject_key] ASC); \nGO",
    "Description": "Added index",
    "Details": "Improves performance on user login when Personalization module is enabled."
  },
  {
    "Table": "sf_pckgng_addn_lnks",
    "Change": "",
    "Description": "New table",
    "Details": "New table is introduced to persist the relation between add-ons and the items (dynamic modules, content items, page templates, forms,etc) installed from the add-on."
  },
  {
    "Table": "sf_pckgng_addns",
    "Change": "",
    "Description": "New table",
    "Details": "New table is introduced to persist the data for the add-ons installed in the system."
  },
  {
    "Table": "sf_pckgng_addns_err_stts",
    "Change": "",
    "Description": "New table",
    "Details": "New table is introduced to persist the error state of the add-ons."
  },
  {
    "Table": "sf_pckgng_addns_stts",
    "Change": "",
    "Description": "New table",
    "Details": "New table is introduced to persist the status of the add-ons per site."
  },
  {
    "Table": "sf_xml_config_items",
    "Change": "",
    "Description": "New table",
    "Details": ""
  },
  {
    "Table": "sf_diag_OperationLog",
    "Change": "",
    "Description": "Removed table",
    "Details": "The data is now stored in sf_diag_sample_logs"
  },
  {
    "Table": "sf_diag_QueryLog",
    "Change": "",
    "Description": "Removed table",
    "Details": "The data is now stored in sf_diag_sample_logs"
  },
  {
    "Table": "sf_diag_sample_logs",
    "Change": "",
    "Description": "New table",
    "Details": "New table introduced to persist the collected data for all profiled operations."
  },
  {
    "Table": "sf_diag_MultiplePageCompilationsReport",
    "Change": "",
    "Description": "New stored procedure",
    "Details": "Provides analyzed data for page compilations"
  },
  {
    "Table": "sf_diag_MultiplePageExecutionsReport",
    "Change": "",
    "Description": "New stored procedure",
    "Details": "Provides analyzed data for page compilations"
  },
  {
    "Table": "sf_diag_report_RunBigResultSetAnalysis",
    "Change": "",
    "Description": "Recreated stored procedure",
    "Details": ""
  },
  {
    "Table": "sf_diag_report_RunLongQueryAnalysis",
    "Change": "",
    "Description": "Recreated stored procedure",
    "Details": ""
  },
  {
    "Table": "sf_diag_RunNPlusOneAnalysis",
    "Change": "",
    "Description": "Recreated stored procedure",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="9.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "[sf_form_entry]",
    "Change": "New column:\n[user_provider]",
    "Description": "",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿<SfDbVersionChange version="9.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_files_monitor_data",
    "Change": "New table",
    "Description": "",
    "Details": "The fluent mapping is moved to new assembly - Telerik,Sitefinity.Frontend.Data.dll. The database scheme stays the same as before."
  },
  {
    "Table": "sf_media_file_links",
    "Change": "New table",
    "Description": "",
    "Details": "Stores the links to media files for a given culture.\nUp to Sitefinity CMS 8.2 this information has been part of the sf_media_content table and the file link was only one for all cultures. In 9.0 can have more than one link for a media content item - one for each culture."
  },
  {
    "Table": "sf_module_vrsn",
    "Change": "New table",
    "Description": "",
    "Details": "A new entity has been introduced - ModuleVersion. It is used to keep application modules information in the database: id, name, version, previous version, error message (previously kept in SystemConfig). The entity is mapped to a database table - sf_module_vrsn;"
  },
  {
    "Table": "sf_media_file_urls",
    "Change": "New table",
    "Description": "",
    "Details": "Up to Sitefinity CMS 8.2 the URLs to the media files are generated based on the media content URLsm stored in sf_url_data (appending an extension). In Sitefinity CMS 9.0 you may have different URLs for media content item and media file. The information for file URLs is stored in\nsf_media_file_urls\ntable."
  },
  {
    "Table": "sf_pckgng_pckgs",
    "Change": "New table",
    "Description": "",
    "Details": "Used for storing generated and applied packages"
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "New column: include_in_sitemap",
    "Description": "",
    "Details": "Type: TINYINT"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "New column: culture\nType: VARCHAR (255)",
    "Description": "",
    "Details": "In Sitefinity CMS 9.0 thumbnails are stored per culture."
  },
  {
    "Table": "sf_notif_msg_template",
    "Change": "Changed column: subject\nChange: NVARCHAR (80) to NVARCHAR (255)",
    "Description": "",
    "Details": "Type: NVARCHAR (255)"
  },
  {
    "Table": "sf_media_content",
    "Change": "New column: media_file_url_name\nRemoved columns: total_size, mime_type, number_of_chunks, file_path, file_id, width, height, extension, height2, width2, chunk_size\nColumns are moved in: sf_media_file_links",
    "Description": "",
    "Details": "Stores base information to generate URL for the file. The same column is used for each language version (with suffix in the name) to persist the culture specific part of the base URL name of the file."
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿
<SfDbVersionChange version="8.1">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_locs",
    "Change": "Added table",
    "Description": "",
    "Details": ""
  },
  {
    "Table": "sf_tr_prjcts",
    "Change": "Added table",
    "Description": "",
    "Details": "Used by translations module."
  },
  {
    "Table": "sf_tr_sources",
    "Change": "Added table",
    "Description": "",
    "Details": "Used by translations module."
  },
  {
    "Table": "sf_tr_trnsltns",
    "Change": "Added table",
    "Description": "",
    "Details": "Used by translations module."
  },
  {
    "Table": "sf_tr_jbs",
    "Change": "Added table",
    "Description": "",
    "Details": "Used by translations module."
  },
  {
    "Table": "sf_tr_units",
    "Change": "Added table",
    "Description": "",
    "Details": "Used by translations module."
  },
  {
    "Table": "sf_bounce_stat",
    "Change": "Added column",
    "Description": "[retry_count]\nINT NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_bounce_stat",
    "Change": "Added column",
    "Description": "[is_processing]\nTINYINT NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_bounce_stat",
    "Change": "Added column",
    "Description": "[bounce_status]\nINT NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_bounce_stat",
    "Change": "Updated column",
    "Description": "[message_status]\nINT NOT NULL",
    "Details": "The column does not allow nulls anymore."
  },
  {
    "Table": "sf_notif_msg_job",
    "Change": "Removed column",
    "Description": "[dyn_subscription_list_id]\nUNIQUEIDENTIFIER NULL",
    "Details": ""
  },
  {
    "Table": "sf_scheduled_tasks",
    "Change": "Added column",
    "Description": "[subscr_lst_id]\nUNIQUEIDENTIFIER NULL",
    "Details": ""
  },
  {
    "Table": "sf_users",
    "Change": "Updated column",
    "Description": "[password_question]\nNVARCHAR (500) NULL",
    "Details": "The NVARCHAR length was changed from 255 to 500."
  },
  {
    "Table": "sf_version_changes",
    "Change": "Added column",
    "Description": "[metadata]\nVARCHAR (4000) NULL",
    "Details": ""
  },
  {
    "Table": "sf_version_items",
    "Change": "Added column",
    "Description": "[synced]\nTINYINT NOT NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿<SfDbVersionChange version="8.0">

## New tables

### Table: `sf_wrkflw_dfntn_ddtnl_frst_lvl`

**Description:** Stores the additional first level email recipients when an item is sent for approval (for 2 step workflow) or publishing (for 1 step workflow).

```SQL

CREATE TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_frst_lvl](
    [id]  [uniqueidentifier] NOT NULL,
    [seq] [int]              NOT NULL,
    [val] [varchar](255)     NULL,
    CONSTRAINT [pk_sf_wrkflw_dfntn_dd_436CF226] PRIMARY KEY CLUSTERED
    (
        [id]  ASC,
        [seq] ASC
    )
    WITH (
        PAD_INDEX              = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY         = OFF,
        ALLOW_ROW_LOCKS        = ON,
        ALLOW_PAGE_LOCKS       = ON
    ) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_frst_lvl]
    WITH CHECK ADD CONSTRAINT [ref_sf_wrkflw_dfntn_d_6A239D1A]
    FOREIGN KEY ([id])
    REFERENCES [dbo].[sf_workflow_definition] ([id])
GO

ALTER TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_frst_lvl]
    CHECK CONSTRAINT [ref_sf_wrkflw_dfntn_d_6A239D1A]
GO

```

### Table: `sf_wrkflw_dfntn_ddtnl_scnd_lvl`

**Description:** Stores the additional second level email recipients when an item is sent for publishing through the workflow.

```SQL

CREATE TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_scnd_lvl](
    [id]  [uniqueidentifier] NOT NULL,
    [seq] [int]              NOT NULL,
    [val] [varchar](255)     NULL,
    CONSTRAINT [pk_sf_wrkflw_dfntn_dd_6936DCD4] PRIMARY KEY CLUSTERED (
        [id]  ASC,
        [seq] ASC
    )
    WITH (
        PAD_INDEX              = OFF,
        STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY         = OFF,
        ALLOW_ROW_LOCKS        = ON,
        ALLOW_PAGE_LOCKS       = ON
    ) ON [PRIMARY]
) ON [PRIMARY]
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_scnd_lvl]
    WITH CHECK ADD CONSTRAINT [ref_sf_wrkflw_dfntn_d_FA8BA617] FOREIGN KEY ([id])
    REFERENCES [dbo].[sf_workflow_definition] ([id])
GO

ALTER TABLE [dbo].[sf_wrkflw_dfntn_ddtnl_scnd_lvl]
    CHECK CONSTRAINT [ref_sf_wrkflw_dfntn_d_FA8BA617]
GO

```

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_schema_vrsns",
    "Change": "Updated column",
    "Description": "[cultures]\n[VARCHAR (2000)] NULL",
    "Details": "The type of the `cultures` column was changed from `varchar(1000)` to `varchar(2000)`."
  },
  {
    "Table": "sf_taxonomies",
    "Change": "Added column",
    "Description": "[root_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Added column",
    "Description": "[culture_scope]\n[VARCHAR (2000)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Added column",
    "Description": "[allw_pblshers_to_skip_workflow]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_definition",
    "Change": "Added column",
    "Description": "[custom_xamlx_url]\n[NVARCHAR (255)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_workflow_scope",
    "Change": "Added column",
    "Description": "[provider_name]\n[VARCHAR (255)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_folders",
    "Change": "Added column",
    "Description": "[cover_id]\n[uniqueidentifier] NULL",
    "Details": ""
  },
  {
    "Table": "sf_libraries",
    "Change": "Added column",
    "Description": "[cover_id]\n[uniqueidentifier] NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿# Database changes in Sitefinity CMS

## New tables

#### Table: `[sf_cs_comments]`

**Description**: Part of Sitefinity’s comments service.

`CREATE` `TABLE` `[dbo].[sf_cs_comments](`

`    ``[status] [nvarchar](100) ``NULL``,`

`    ``[resolve_key] [nvarchar](255) ``NOT` `NULL``,`

`    ``[rating] [``numeric``](20, 10) ``NULL``,`

`    ``[parent_thread_id] [uniqueidentifier] ``NOT` `NULL``,`

`    ``[message] [nvarchar](``max``) ``NULL``,`

`    ``[last_modified_by_name] [``varchar``](255) ``NULL``,`

`    ``[last_modified_by_email] [``varchar``](255) ``NULL``,`

`    ``[last_modified_by] [uniqueidentifier] ``NULL``,`

`    ``[last_modified] [datetime] ``NULL``,`

`    ``[date_created] [datetime] ``NULL``,`

`    ``[custom_data] [nvarchar](1024) ``NULL``,`

`    ``[author_name] [nvarchar](255) ``NULL``,`

`    ``[author_ip_address] [nvarchar](255) ``NULL``,`

`    ``[author_id] [uniqueidentifier] ``NULL``,`

`    ``[author_email] [nvarchar](255) ``NULL``)`

`GO`

#### Table: `[sf_cs_groups]`

**Description**: Part of Sitefinity’s comments service.

`CREATE` `TABLE` `[dbo].[sf_cs_groups](`

`    ``[title] [nvarchar](255) ``NULL``,`

`    ``[resolve_key] [nvarchar](255) ``NULL``,`

`    ``[last_modified] [datetime] ``NOT` `NULL``,`

`    ``[id] [uniqueidentifier] ``NOT` `NULL``,`

`    ``[description] [nvarchar](255) ``NULL``,`

`    ``[date_created] [datetime] ``NULL``,`

`    ``[author_name] [nvarchar](255) ``NULL``,`

`    ``[author_id] [uniqueidentifier] ``NULL``,`

`    ``[author_email] [nvarchar](255) ``NULL``)`

`GO`

#### Table: `[sf_cs_threads]`

**Description**: Part of Sitefinity’s comments service.

`CREATE` `TABLE` `[dbo].[sf_cs_threads](`

`    ``[type] [nvarchar](255) ``NULL``,`

`    ``[title] [nvarchar](255) ``NULL``,`

`    ``[resolve_key] [nvarchar](255) ``NULL``,`

`    ``[require_authentication] [tinyint] ``NOT` `NULL``,`

`    ``[require_approval] [tinyint] ``NOT` `NULL``,`

`    ``[parent_group_id] [uniqueidentifier] ``NOT` `NULL``,`

`    ``[last_modified] [datetime] ``NOT` `NULL``,`

`    ``[language] [nvarchar](10) ``NULL``,`

`    ``[is_closed] [tinyint] ``NOT` `NULL``,`

`    ``[id] [uniqueidentifier] ``NOT` `NULL``,`

`    ``[date_created] [datetime] ``NULL``,`

`    ``[data_source] [nvarchar](255) ``NULL``,`

`    ``[comments_count] [``int``] ``NOT` `NULL``,`

`    ``[behavior] [nvarchar](100) ``NULL``,`

`    ``[average_rating] [``numeric``](20, 10) ``NULL``,`

`    ``[author_name] [nvarchar](255) ``NULL``,`

`    ``[author_id] [uniqueidentifier] ``NULL``,`

`    ``[author_email] [nvarchar](255) ``NULL``)`

`GO`

#### Table:`[sf_dynmc_cntent_sf_permissions]`

**Description**: Used for granular permissions of dynamic content items.

`CREATE` `TABLE` `[dbo].[sf_dynmc_cntent_sf_permissions](`

`    ``[base_id] [uniqueidentifier] ``NOT` `NULL``,`

`    ``[id] [uniqueidentifier] ``NOT` `NULL``)`

` ` 

`GO`

## Database schema changes

<SfDbVersionChange version="7.3">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_content_link_attrbutes",
    "Change": "Added column",
    "Description": "[idx_sf_cntnt_lnk_attrbutes_val]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "updated",
    "Description": "New columns",
    "Details": "New columns."
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[inherits_permissions]\n[TINYINT] NOT NULL",
    "Details": "Dynamic content items"
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[can_inherit_permissions]\n[TINYINT] NOT NULL",
    "Details": "Dynamic content items"
  },
  {
    "Table": "sf_form_description_attrbutes",
    "Change": "Added column",
    "Description": "[idx_sf_frm_dscrptn_ttrbtes_val]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[strategy]\n[SMALLINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data_attrbutes",
    "Change": "Added column",
    "Description": "[idx_sf_page_data_attrbutes_val]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "sf_page_node_attrbutes",
    "Change": "Added column",
    "Description": "[idx_sf_page_node_attrbutes_val]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "sf_pblshng_pp_sttngs_ddtnl_dta",
    "Change": "Added column",
    "Description": "[idx_sf_pblshng_pp_sttngs_ddtnl]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "sf_publishing_point",
    "Change": "Added column",
    "Description": "[is_shared_with_all_sites]\n[TINYINT] NOT NULL",
    "Details": "All modules that have mappings for storing publishing points."
  },
  {
    "Table": "sf_taxa_attrbutes",
    "Change": "Added column",
    "Description": "[idx_sf_taxa_attrbutes_val]",
    "Details": "The index is not available in the latest installation.\nThe index, however, is not deleted from projects that are upgraded to Sitefinity CMS 7.3. This does not result in any errors or does not break anything in the projects."
  },
  {
    "Table": "SyncTask",
    "Change": "Added column",
    "Description": "[FatalityThreshold]\n[INT] NOT NULL",
    "Details": "OpenAccess"
  },
  {
    "Table": "SyncTask",
    "Change": "Updated column",
    "Description": "[ConfigurationId]\n[NVARCHAR(64)] NULL",
    "Details": "OpenAccess"
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>

﻿# Database changes in Sitefinity CMS

This article contains list of changes to the database between the current and the previous release. This includes new and deleted tables, as well as changes in table columns.

Database changes are recorded in the `UpgradeTrace.log` file during upgrade.\
For more information, see [Log changes to the database during upgrades](https://docs.sitefinity.com/log-changes-to-the-database-during-upgrades).

## Database schema changes

<SfDbVersionChange version="7.2">

<h3>Schema changes</h3>

 <SfDbSchemaChangesTable>

```
[
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[LogLevel]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncLog",
    "Change": "Updated column",
    "Description": "From\n[ListSummary] [INT] NOT NULL\nTo\n[ListSummary] [INT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[sccss_mssge_after_form_update_]\n[NVARCHAR (255)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[submit_action_after_udate]\n[INT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[redirect_page_url_after_update]\n[VARCHAR (255)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[sccss_mssge_after_form_update_]\n[NVARCHAR (MAX)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[subscr_lst_id_after_update]\n[UNIQUEIDENTIFIER] NULL",
    "Details": ""
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[submit_action_after_update]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[redirect_page_url_after_update]\n[VARCHAR (255)] NULL",
    "Details": ""
  },
  {
    "Table": "sf_prs_segment",
    "Change": "Added column",
    "Description": "[type]\n[VARCHAR (255)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "SyncTask",
    "Change": "Updated column",
    "Description": "From\n[ConfigurationId] [NVARCHAR (64)] NOT NULL\nTo\n[ConfigurationId] [VARCHAR (255)] NOT NULL",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿# Database changes in Sitefinity CMS

This article contains list of changes to the database between the current and the previous release. This includes new and deleted tables, as well as changes in table columns.

Database changes are recorded in the `UpgradeTrace.log` file during upgrade.\
For more information, see [Log changes to the database during upgrades](https://docs.sitefinity.com/log-changes-to-the-database-during-upgrades).

## New Tables

**Table:**`[sf_rbin_item]`

***

**Description:** Part of the new Recycle Bin module.

`CREATE` `TABLE` `[dbo].[sf_rbin_item] (`

`    ``[owner]                     UNIQUEIDENTIFIER ``NULL``,`

`    ``[last_modified]             DATETIME         ``NOT` `NULL``,`

`    ``[id]                        UNIQUEIDENTIFIER ``NOT` `NULL``,`

`    ``[del_item_wrkfl_status]     ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_type_name]        ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_title]            ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_site_id]          UNIQUEIDENTIFIER ``NULL``,`

`    ``[del_item_prvdr_name]       ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_parent_type_name] ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_titles_path]      ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_lang]             ``VARCHAR` `(255)    ``NULL``,`

`    ``[del_item_id]               UNIQUEIDENTIFIER ``NULL``,`

`    ``[date_created]              DATETIME         ``NOT` `NULL``,`

`    ``[app_name]                  ``VARCHAR` `(255)    ``NULL``,`

`    ``[voa_version]               ``SMALLINT`         `NOT` `NULL``,`

`    ``CONSTRAINT` `[pk_sf_rbin_item] ``PRIMARY` `KEY` `CLUSTERED ([id] ``ASC``)`

`);`

`GO`

` ` 

`CREATE` `NONCLUSTERED ``INDEX` `[idx_sf_rbin_item_type]`

`    ``ON` `[dbo].[sf_rbin_item]([del_item_type_name] ``ASC``);`

`GO`

## Database schema changes

<SfDbVersionChange version="7.1">

<h3>Schema changes</h3>

 <SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_blog_posts",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Blogs module"
  },
  {
    "Table": "sf_blogs",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Blogs module"
  },
  {
    "Table": "sf_commnt",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Comments"
  },
  {
    "Table": "sf_content_items",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "All content modules"
  },
  {
    "Table": "sf_control_properties",
    "Change": "Added column",
    "Description": "[flags]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_draft_pages",
    "Change": "Added column",
    "Description": "[flags]\n[INT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[was_published]\n[TINYINT] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[item_default_url]\n[NVARCHAR (510)] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[rating]\n[NUMERIC (20, 10)] NULL",
    "Details": "eCommerce module"
  },
  {
    "Table": "sf_ec_product_type",
    "Change": "Added column",
    "Description": "[has_customer_defined_price]\n[TINYINT] NOT NULL",
    "Details": "eCommerce module"
  },
  {
    "Table": "s",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Events module"
  },
  {
    "Table": "sf_form_description",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Forms module"
  },
  {
    "Table": "sf_forums",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Forums module"
  },
  {
    "Table": "sf_libraries",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Videos, Images, Documents"
  },
  {
    "Table": "sf_list_items",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Lists module"
  },
  {
    "Table": "sf_lists",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Listsmodule"
  },
  {
    "Table": "sf_media_content",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": "Images, Videos, Documents"
  },
  {
    "Table": "sf_media_content",
    "Change": "Added column",
    "Description": "[was_published]\n[TINYINT] NULL",
    "Details": "Images, Videos, Documents"
  },
  {
    "Table": "sf_meta_types",
    "Change": "Added column",
    "Description": "[parent_type_id]\n[UNIQUEIDENTIER] NULL",
    "Details": ""
  },
  {
    "Table": "sf_news_items",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_news_items",
    "Change": "Added column",
    "Description": "[was_published]\n[TINYINT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[vrsn]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_data",
    "Change": "Added column",
    "Description": "[flags]\n[INT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[priority]\n[REAL] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[previous_parent_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[is_deleted]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[include_in_sitemap]\n[TINYINT] NULL",
    "Details": "Pages"
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>
﻿# Database changes in Sitefinity CMS

<SfDbVersionChange version="7.0">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_events",
    "Change": "Added column",
    "Description": "[timezone_id]\n[VARCHAR (255)] NULL",
    "Details": "Added new column\nEvents module"
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Updated column",
    "Description": "[BaseConnectionString]\n[VARCHAR (2000)] NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Updated column",
    "Description": "[SourceConnectionString]\n[VARCHAR (2000)] NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Updated column",
    "Description": "[DestinationConnectionString]\n[VARCHAR (2000)] NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Removed column",
    "Description": "[Reads]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Removed column",
    "Description": "[Inserts]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Removed column",
    "Description": "[Updates]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Removed column",
    "Description": "[Deletes]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[SourceDeletes]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[SourceInserts]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[SourceReads]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[SourceUpdates]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[DestinationDeletes]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[DestinationInserts]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[DestinationReads]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[DestinationUpdates]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[BaseDeletes]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[BaseInserts]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[BaseReads]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[BaseUpdates]\n[INT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_content_link",
    "Change": "Added column",
    "Description": "[available_for_temp]\n[TINYINT] NOT NULL",
    "Details": "Indicates whether a particular link is available for the temp version of the of the related item.\nRelated data"
  },
  {
    "Table": "sf_content_link",
    "Change": "Added column",
    "Description": "[available_for_master]\n[TINYINT] NOT NULL",
    "Details": "Indicates whether a particular link is available for the temp version of the of the related item.\nRelated data"
  },
  {
    "Table": "sf_content_link",
    "Change": "Added column",
    "Description": "[available_for_live]\n[TINYINT] NOT NULL",
    "Details": "Indicates whether a particular link is available for the temp version of the of the related item.\nRelated data"
  },
  {
    "Table": "sf_ec_cart_order",
    "Change": "Added column",
    "Description": "[user_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": "Ecommerce module"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Removed column",
    "Description": "[voa_class]\n[INT] NOT NULL",
    "Details": "Ecommerce module"
  },
  {
    "Table": "sf_form_entry",
    "Change": "Added column",
    "Description": "[source_site_name]\n[VARCHAR (255)] NULL",
    "Details": "Forms module"
  },
  {
    "Table": "sf_form_entry",
    "Change": "Added column",
    "Description": "[source_site_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": "Forms module"
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[related_content_type]\n[VARCHAR (255)] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[related_content_provider]\n[VARCHAR (255)] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[frontend_widget_type_name]\n[VARCHAR (255)] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_mb_dynamic_module_field",
    "Change": "Added column",
    "Description": "[frontend_widget_label]\n[VARCHAR (255)] NULL",
    "Details": "Module builder"
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[is_overrided_control]\n[TINYINT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[editable]\n[TINYINT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[base_control_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[enable_override_for_control]\n[TINYINT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[enable_override_for_control2]\n[TINYINT] NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[ui_culture]\n[VARCHAR (255)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[translation_initialized]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[require_ssl]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[page_languagelink_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[localization_strategy]\n[SMALLINT] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[keywords]\n[NVARCHAR (500)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[html_title_]\n[NVARCHAR (500)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[crawlable]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed column",
    "Description": "[voa_version]\n[SMALLINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_data",
    "Change": "Added column",
    "Description": "[page_node_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": ""
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[require_ssl]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[loc_strtgy]\n[SMALLINT] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[keywords_]\n[NVARCHAR (500)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[inc_in_srch_idx]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[html_title_]\n[NVARCHAR (500)] NULL",
    "Details": "Pages"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[crawlable_]\n[TINYINT] NOT NULL",
    "Details": "Pages"
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added index",
    "Description": "[idx_OASyncLstSmmry_ImprtSmmary] ON [dbo].[OASyncListSummary]([ImportSummary] ASC)",
    "Details": "Added to improve performance."
  },
  {
    "Table": "sf_page_data",
    "Change": "Removed index",
    "Description": "[idx_sf_pg_dt_pg_lnguagelink_id] ON [dbo].[sf_page_data]([page_languagelink_id] ASC)",
    "Details": "Removed as part of the page node-page data relationship changes."
  },
  {
    "Table": "sf_page_data",
    "Change": "Added index",
    "Description": "[idx_sf_page_data_page_node_id] ON [dbo].[sf_page_data]([page_node_id] ASC)",
    "Details": "Added as part of the page node-page data relationship changes."
  },
  {
    "Table": "sf_page_node",
    "Change": "Removed index",
    "Description": "[idx_sf_page_node_content_id] ON [dbo].[sf_page_node]([content_id] ASC)",
    "Details": "Removed as part of the page node-page data relationship changes."
  },
  {
    "Table": "sf_taxonomy_statistic",
    "Change": "Added index",
    "Description": "[idx_sf_taxonomy_statistic] ON [dbo].[sf_taxonomy_statistic]([data_item_type] ASC, [taxon_id] ASC, [statistic_type] ASC, [item_provider_name] ASC)",
    "Details": "Added to improve performance for taxonomy statistics."
  },
  {
    "Table": "sf_page_language_link",
    "Change": "Removed table",
    "Description": "[sf_page_language_link]",
    "Details": "Used for multilingual split pages to maintain the relation between split page data items. It is not used anymore."
  },
  {
    "Table": "sf_site_sync_server",
    "Change": "New table",
    "Description": "[sf_site_sync_server]",
    "Details": "Site Sync module."
  },
  {
    "Table": "sf_site_sync_log_entry",
    "Change": "Added index",
    "Description": "[sf_site_sync_log_entry] ON [dbo].[sf_site_sync_log_entry]([type_name] ASC, [serverId] ASC, [provider] ASC, [item_id] ASC)",
    "Details": "Added to improve performance."
  },
  {
    "Table": "sf_site_sync_summary",
    "Change": "Added index",
    "Description": "[sf_site_sync_summary] ON [dbo].[sf_site_sync_summary]([server_id] ASC)",
    "Details": "Added to improve performance."
  },
  {
    "Table": "sf_dashboard_log",
    "Change": "Added index",
    "Description": "[sf_dashboard_log] ON [dbo].[sf_dashboard_log]([timestamp] ASC, [item_type] ASC, [item_id] ASC)",
    "Details": "Added to improve performance."
  },
  {
    "Table": "sf_dashboard_watchlist",
    "Change": "Added index",
    "Description": "[sf_dashboard_watchlist] ON [dbo].[sf_dashboard_watchlist]([user_id] ASC, [dashboard_log_entry_id] ASC)",
    "Details": "Added to improve performance."
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>

﻿# Database changes in Sitefinity CMS

<SfDbVersionChange version="6.3">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sf_content_link_attrbutes",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (1000)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the attribute value that can be stored"
  },
  {
    "Table": "sf_taxa_attrbutes",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (1000)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the attribute value that can be stored"
  },
  {
    "Table": "sf_page_node_attrbutes",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (1000)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the attribute value that can be stored"
  },
  {
    "Table": "sf_page_data_attrbutes",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (1000)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the attribute value that can be stored"
  },
  {
    "Table": "sf_form_description_attrbutes",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (1000)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the attribute value that can be stored"
  },
  {
    "Table": "sf_cnt_location_filters",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (MAX)] NULL",
    "Details": "changed the size of a column(Value)\nthe length of the filter that can be stored"
  },
  {
    "Table": "sf_cnt_location_filters",
    "Change": "Added column",
    "Description": "[Value]\n[VARCHAR (MAX)] NULL",
    "Details": "Added index on column (parent_id)\nperformance"
  },
  {
    "Table": "sf_meta_types",
    "Change": "Added column",
    "Description": "[is_deleted]\n[TINYINT] NOT NULL",
    "Details": "Flag for marking if meta type should be deleted. If marked, the mapping for the meta type is dropped and the meta type itself is deleted when OA schema is upgraded.\nall modules that have mappings for artificial types"
  },
  {
    "Table": "sf_meta_fields",
    "Change": "Added column",
    "Description": "[is_deleted]\n[TINYINT] NOT NULL",
    "Details": "Flag for marking if meta field should be deleted. If marked, the mapping for the meta field is dropped and the meta field itself is deleted when OA schema is upgraded.\nall modules that have mappings for\nartificial fields"
  },
  {
    "Table": "sf_control_properties",
    "Change": "Added column",
    "Description": "[ordinal]\n[REAL] NOT NULL",
    "Details": "Column for storing the order in which control properties are loaded. It should be the same as the order in which they are saved.\nthe order in which control properties are loaded"
  },
  {
    "Table": "OAConflicts",
    "Change": "Added column",
    "Description": "[Occured]\n[DATETIMEOFFSET (7)] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[BaseIsUpdateRequired]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[SourceIsForwardMapped]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[SourceIsUpdateRequired]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[DestinationIsForwardMapped]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OAImportConfigurations",
    "Change": "Added column",
    "Description": "[DestinationIsUpdateRequired]\n[TINYINT] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Added column",
    "Description": "[ImportStart]\n[DATETIMEOFFSET (7)] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncImportSummary",
    "Change": "Added column",
    "Description": "[ImportEnd]\n[DATETIMEOFFSET (7)] NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[ImportStart]\n[DATETIMEOFFSET (7)] NOT NULL",
    "Details": ""
  },
  {
    "Table": "OASyncListSummary",
    "Change": "Added column",
    "Description": "[ImportEnd]\n[DATETIMEOFFSET (7)] NULL",
    "Details": ""
  },
  {
    "Table": "OASyncLog",
    "Change": "Added column",
    "Description": "[Executed]\n[DATETIMEOFFSET (7)] NOT NULL",
    "Details": ""
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[system_parent_id]",
    "Details": "added index"
  },
  {
    "Table": "sf_dynamic_content",
    "Change": "Added column",
    "Description": "[parent_item_id]",
    "Details": "added index"
  },
  {
    "Table": "sf_cs_threads",
    "Change": "Added column",
    "Description": "[data_source]\n[NVARCHAR(255)] NULL",
    "Details": "The default implementation uses the provider name of the item associated with the thread. For example the provider name of a news item.\nComments module"
  },
  {
    "Table": "sf_cs_comments",
    "Change": "Added column",
    "Description": "[last_modified]\n[DATETIME] NULL",
    "Details": "Changed to allow NULL values\nComments module"
  },
  {
    "Table": "sf_cs_comments",
    "Change": "Added column",
    "Description": "[last_modified_by]\n[UNIQUEIDENTIFIRE] NULL",
    "Details": "This column stores the ID of the author that made the last modification of the comment. In the current implementation, it is populated only for authenticated Sitefinity CMS users.\nComments module"
  },
  {
    "Table": "sf_cs_comments",
    "Change": "Added column",
    "Description": "[last_modified_by_name]\n[VARCHAR(255)] NULL",
    "Details": "This column stores the Name of the author that made the last modification of the comment. In the current implementation, it is populated only for unauthenticated users\nComments module"
  },
  {
    "Table": "sf_cs_comments",
    "Change": "Added column",
    "Description": "[last_modified_by_email]\n[VARCHAR(255)] NULL",
    "Details": "This column stores the Email of the author that made the last modification of the comment. In the current implementation, it is populated only for unauthenticated users\nComments module"
  },
  {
    "Table": "sf_cs_comments",
    "Change": "Added column",
    "Description": "[custom_data]\n[NVARCHAR(1024)] NULL",
    "Details": "This custom data is an extensibility point that can be used to store custom data for the comment\nComments module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[val]\n[NUMERIC(10,20)] NOT NULL",
    "Details": "Holds the value of this price row\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[quantity]\n[BIGINT] NOT NULL",
    "Details": "Holds the quantity for which this price row is applicable\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[last_modified]\n[DATETIME] NOT NULL",
    "Details": "When this price row has been updated for last time.\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[id]\n[UNIQUEIDENTIFIRE] NOT NULL",
    "Details": "The primary key for the record\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[application_name]\n[VARCHAR(255)] NOT NULL",
    "Details": "The provider for which this price is defined\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[parent_id]\n[UNIQUEIDENTIFIRE] NOT NULL",
    "Details": "The parent object this price is defined for.\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[voa_class]\n[INT] NOT NULL",
    "Details": "Telerik OpenAccess specific column\nEcommerce module"
  },
  {
    "Table": "sf_ec_prices",
    "Change": "Added column",
    "Description": "[voa_version]\n[SMALLINT] NOT NULL",
    "Details": "Telerik OpenAccess specific column\nEcommerce module"
  },
  {
    "Table": "sf_ec_cart_detail",
    "Change": "Added column",
    "Description": "[vat_tax_id]\n[UNIQUEIDENTIFIER] NULL",
    "Details": "Marked as deprecated and not used because of that made NULL\nEcommerce\nmodule"
  },
  {
    "Table": "sf_ec_cart_detail",
    "Change": "Added column",
    "Description": "[is_vat_taxable]\n[TINYINT] NULL",
    "Details": "Marked as deprecated and not used because of that made NULL\nEcommerce\nmodule"
  },
  {
    "Table": "sf_ec_cart_detail",
    "Change": "Added column",
    "Description": "[is_us_canada_taxable]\n[TINYINT] NULL",
    "Details": "Marked as deprecated and not used because of that made NULL\nEcommerce\nmodule"
  },
  {
    "Table": "sf_ec_cart_detail",
    "Change": "Added column",
    "Description": "[description]\n[NVARCHAR (MAX)]",
    "Details": "Holds a description for this cart detail for example applied tier price name and etc\nEcommerce\nmodule"
  },
  {
    "Table": "sf_ec_order_detail",
    "Change": "Added column",
    "Description": "[vat_tax_id]\n[UNIQUEIDENTIFIER]",
    "Details": "Marked asdeprecatedand not used because of that made NULL"
  },
  {
    "Table": "sf_ec_order_detail",
    "Change": "Added column",
    "Description": "[is_vat_taxable]\n[TINYINT]",
    "Details": "Marked asdeprecatedand not used because of that made NULL"
  },
  {
    "Table": "sf_ec_order_detail",
    "Change": "Added column",
    "Description": "[description]\n[NVARCHAR (MAX)]",
    "Details": "Holds a description for this cart detail for example applied tier price name and etc"
  },
  {
    "Table": "sf_ec_tax_class",
    "Change": "Added column",
    "Description": "[nme]\n[NVARCHAR (255)] NOT NULL",
    "Details": "The name of the tax class\nEcommerce module"
  },
  {
    "Table": "sf_ec_wishlist_detail",
    "Change": "Added column",
    "Description": "[description]\n[NVARCHAR (MAX)] NULL",
    "Details": "Holds a description for this cart detail for example applied tier price name and etc\nEcommerce module"
  },
  {
    "Table": "sf_forums",
    "Change": "Added column",
    "Description": "[allowed_attachment_extensions]\n[VARCHAR (MAX)] NULL",
    "Details": "A comma separated list of allowed attachment file extensions; when NULL inherits the global settings.\nForums module"
  },
  {
    "Table": "f_delivery_entry",
    "Change": "Removed column",
    "Description": "[voa_version]",
    "Details": ""
  },
  {
    "Table": "SyncSchedulerExecution",
    "Change": "Removed table",
    "Description": "[SyncSchedulerExecution]",
    "Details": ""
  },
  {
    "Table": "SyncTaskLock",
    "Change": "Removed table",
    "Description": "[SyncTaskLock]",
    "Details": ""
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>

﻿# Database changes in Sitefinity CMS

<SfDbVersionChange version="6.2">

<h3>Schema changes</h3>

<SfDbSchemaChangesTable>

```
[
  {
    "Table": "sync_sourceSharepointListName_DestinationSitefinityDocumentLibraryName",
    "Change": "Added column",
    "Description": "[voa_version]\n[int] NULL",
    "Details": "Maintains the version of a row in this table"
  },
  {
    "Table": "sync_sourceSharepointListName_DestinationSitefinityDocumentLibraryName",
    "Change": "Added column",
    "Description": "[sf_last_modified]\n[datettimeoffset(7)] NULL",
    "Details": "The type of the column is changed to datettimeoffset(7) and the column allows null value"
  },
  {
    "Table": "sync_sourceSharepointListName_DestinationSitefinityDocumentLibraryName",
    "Change": "Added column",
    "Description": "[sp_last_modified]\n[datettimeoffset(7)] NULL",
    "Details": "The type of the column is changed to datettimeoffset(7) and the column allows null value"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[original_owner]\n[uniqueidentifier] NULL",
    "Details": "Added in order for keep the real initial owner or author of the product."
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[idx_sf_products_app_name]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[idx_sf_products_org_cnt_id]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[idx_sf_products_pub_date]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_ec_product",
    "Change": "Added column",
    "Description": "[idx_sf_products_clr_type]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_ec_product_attribute",
    "Change": "Added column",
    "Description": "[ordinal]\n[real] NOT NULL",
    "Details": "Added in order for keep the order of the attributes used in the backend and frontend when showing attributes."
  },
  {
    "Table": "sf_ec_cart_order",
    "Change": "Added column",
    "Description": "[shipping_service_code]\n[nvarchar] NULL",
    "Details": "Added in order for keep the real code of the service chosen and not using only the title/name of it as before."
  },
  {
    "Table": "sf_ec_cart_detail",
    "Change": "Added column",
    "Description": "[voa_version]\n[smallint] NULL",
    "Details": "Because of removing the optimistic locking check for concurrentchanges on this table."
  },
  {
    "Table": "sf_ec_cart_discount",
    "Change": "Added column",
    "Description": "[voa_version]\n[smallint] NULL",
    "Details": "Because of removing the optimistic locking check forconcurrentchanges on this table."
  },
  {
    "Table": "sf_ec_wishlist",
    "Change": "Added column",
    "Description": "[voa_version]\n[smallint] NULL",
    "Details": "Because of removing the optimistic locking check forconcurrentchanges on this table."
  },
  {
    "Table": "sf_ec_wishlist_detail",
    "Change": "Added column",
    "Description": "[voa_version]\n[smallint] NULL",
    "Details": "Because of removing the optimistic locking check forconcurrentchanges on this table."
  },
  {
    "Table": "sf_forums",
    "Change": "Added column",
    "Description": "[icon_id]\n[uniqueidentifier] NULL",
    "Details": "Holds the iconId of the forum."
  },
  {
    "Table": "sf_forums",
    "Change": "Added column",
    "Description": "[is_locked]\n[tinyint] NOT NULL",
    "Details": "Indicates whether the forum is locked for new posts."
  },
  {
    "Table": "sf_forum_groups",
    "Change": "Added column",
    "Description": "[url_name_]\n[uniqueidentifier] NULL",
    "Details": "Holds the url of the forum group."
  },
  {
    "Table": "sf_forum_groups",
    "Change": "Added column",
    "Description": "[is_locked]\n[tinyint] NOT NULL",
    "Details": "Indicates whether the thread is locked for new posts"
  },
  {
    "Table": "sf_media_content",
    "Change": "Added column",
    "Description": "[lgcy_tmb_strg]\n[tinyint] NOT NULL",
    "Details": "Indicates if the media content is using the old legacy way use for loading thumbnails. Used by items stored in exterbal blob storage with not regenerated thumbnails after upgrade."
  },
  {
    "Table": "sf_media_content",
    "Change": "Added column",
    "Description": "[tmb_regen]\n[tinyint] NOT NULL",
    "Details": "Indicates that the thumbnails for this media content need to be regenerated."
  },
  {
    "Table": "sf_libraries",
    "Change": "Added column",
    "Description": "[tmb_regen]\n[tinyint] NOT NULL",
    "Details": "Indicates that the thumbnails for this library need to be regenerated. Set to true when a regenerate thumbnails task is started, or after upgrade for libraries using blob storage different than Database."
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[id]\n[uniqueidentifier]",
    "Details": "Primary key"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[nme]\n[varchar(10)] NULL",
    "Details": "Holds the name of the thumbnail corresponding to the name of the thumbnail profile set for the library"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[file_id]\n[uniqueidentifier] NULL",
    "Details": "Holds the id of the blob data"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[total_size]\n[bigint] NOT NULL",
    "Details": "The total size of the thumbnail blob data in bytes"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[typ]\n[int] NOT NULL",
    "Details": "The type of the thumbnail:\n0-Custom (for the furute usage for custom uploaded thumbnails),\n1-System (Always generated regardless of thumbnal profiles selected for the library),\n3-Autogenerated (generated based on the profiles selected for the library)"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[number_of_chunks]\n[int] NOT NULL",
    "Details": "Stored number of chunks. Used only when the blob data is stored in ChunkedBlobStorageProvider"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[uploaded]\n[tinyint] NOT NULL",
    "Details": "Stores flag if uploade. Used only when the blob data is stored in ChunkedBlobStorageProvider"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[chunk_size]\n[int] NOT NULL",
    "Details": "Stores the size of the chunk. Used only when the blob data is stored in ChunkedBlobStorageProvider"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[width]\n[int] NULL",
    "Details": "The width in the thumbnail image in pixels"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Added column",
    "Description": "[height]\n[int] NULL",
    "Details": "The height of the thumbnail image in pixels"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Removed column",
    "Description": "[sf_media_thumbnails_id]",
    "Details": "Primary key changed from int to guid"
  },
  {
    "Table": "sf_media_thumbnails",
    "Change": "Removed column",
    "Description": "[size]",
    "Details": "Obsolete. Use the name instead."
  },
  {
    "Table": "sf_notif_msg_job",
    "Change": "Added column",
    "Description": "[dyn_subsription_list_id]\n[uniqueidentifier] NULL",
    "Details": "This column is related to the excluded subscribers list functionality"
  },
  {
    "Table": "sf_page_node",
    "Change": "Added column",
    "Description": "[enable_default_canonical_url]\n[tinyint] NULL",
    "Details": "Indicates if the canonical URL tag will be added on this page; if there are no widgets on it that will add it automatically. If not set - the global settings will take place."
  },
  {
    "Table": "sf_page_data",
    "Change": "Added column",
    "Description": "[idx_sf_pd_pers_master_id]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_object_data",
    "Change": "Added column",
    "Description": "[idx_sf_bjct_dta_sibling_id]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_presentation_data",
    "Change": "Added column",
    "Description": "[name_for_developers]\n[varchar (255)] NULL",
    "Details": "Keeps the Developer name value of the template. It is used to get the template by name instead of GUID ID."
  },
  {
    "Table": "sf_permissions",
    "Change": "Added column",
    "Description": "[idx_sf_permissions]",
    "Details": "Added for optimization purpose"
  },
  {
    "Table": "sf_site_sync_log_entry",
    "Change": "Added column",
    "Description": "[timestamp]\n[datetime] NULL",
    "Details": "Log entry modification time."
  },
  {
    "Table": "sf_site_sync_log_entry",
    "Change": "Added column",
    "Description": "[user_id]\n[uniqueidentifier] NULL",
    "Details": "The ID of the user causing the logged event."
  },
  {
    "Table": "sf_site_sync_summary",
    "Change": "Added column",
    "Description": "[server_id]\n[varchar(255)] NULL",
    "Details": "The ID of the target server."
  },
  {
    "Table": "sf_dashboard_log",
    "Change": "New table",
    "Description": "",
    "Details": "Stores information about items that are shown on the dashboard."
  },
  {
    "Table": "sf_dashboard_watchlist",
    "Change": "New table",
    "Description": "",
    "Details": "Keeps track which user (user_id) is subscribed for which dashboard log entry (dashboard_log_entry_id)."
  },
  {
    "Table": "sf_cs_comments",
    "Change": "New table",
    "Description": "",
    "Details": "Stores information about comments."
  },
  {
    "Table": "sf_cs_threads",
    "Change": "New table",
    "Description": "",
    "Details": "Stores information about threads."
  },
  {
    "Table": "sf_cs_groups",
    "Change": "New table",
    "Description": "",
    "Details": "Stores information about groups."
  }
]
```

</SfDbSchemaChangesTable>

</SfDbVersionChange>

<SfDbVersionChange version="4.2">

</SfDbVersionChange>

</SfChanges>
