Skip to content

V17 Element Type Audit Report

Generated: 2026-02-26, updated 2026-02-27 Source: v17 Management API (_v17-api-results.json) + v8 Grid Baseline (03-v8-grid-baseline.md) Purpose: Full audit of all element types created by the v8-to-v17 grid migration.


Current Status: DUPLICATION FIXED, ARCHITECTURE VERIFIED

  • Migration tool duplication bug: FIXED (3 commits: 09935d2, 164069f, 76a17cf). Fresh migration runs produce ~430 element types instead of ~455.
  • Layout/area wrapper deduplication: Confirmed IMPOSSIBLE (Report 11). Zero identical layouts across datatypes. Per-datatype architecture is correct.
  • Settings deduplication: DEFERRED. 29 potential savings, but GUID remapping risk outweighs cosmetic benefit.
  • Content usage data: Available in _content-usage.json -- 164 in-use, 217 configured, 74 orphaned.

Root Causes Fixed

Three overlapping code paths were creating duplicate element types:

# Code Path Fix Commit What Changed
1 Settings editor exclusion 09935d2 gridSettingsMarginEditor/gridSettingsPaddingEditor excluded from element type creation
2 ps-prefix and alias normalization 09935d2, 76a17cf Strip "ps" prefix, case-insensitive matching in both source and target DB lookups
3 DefaultGridEditorConverter 164069f Uses grid_element_ prefix instead of gridElement; checks for existing types before creating

1. Summary Statistics

Metric Count
Total document type tree nodes 622
Element types 455
Regular document types 103
Folders 64
Distinct v8 datatype IDs referenced 14

Category Breakdown

Category Count Description
layout 62 Row layout element types (one per row config per datatype)
areawrapper 134 Area wrapper element types (one per area per row per datatype)
rowconfig 26 Page-level template/section configurations
rowsettings 14 Row-level settings (1 per datatype)
cellsettings 14 Cell-level settings (1 per datatype)
blocksettings 14 Block-level settings (1 per datatype)
builtin 5 Shared built-in grid element types
other 186 Non-grid element types (see Section 4)
Total 455

V8 DataType IDs Mapped

All 14 v8 Umbraco.Grid datatypes were migrated:

V8 ID V8 Name
1055 Article Controls - article Grid
1093 Contact us Grid
1127 Footer Grid
1151 Homepage Grid
1257 Standard Page Grid
1459 Full Width Grid Bottom Controls
1534 Animated Grid
1683 articleGrid
1709 Cookie Grid
1736 Full width Grid
1780 services Grid
1798 Sp with Nav Left Grid
1803 Standard Page Full Width
2236 test data type

2. Grid-Generated Element Types Per V8 DataType ID

Each v8 grid datatype produces a set of element types: layouts, area wrappers, row configs, and per-datatype settings (row, cell, block). Below is the full breakdown.

2.1. ID 1055 -- Article Controls Grid

Category Count Element Type Aliases
layout 3 grid_1055_layout_fullwidth, grid_1055_layout_half, grid_1055_layout_thirds
areawrapper 7 _fullwidth_0, _half_0, _half_1, _thirds_0, _thirds_1, _thirds_2 (prefix: grid_1055_areawrapper)
rowconfig 3 grid_1055_rowconfig_1ColumnLayout, grid_1055_rowconfig_leftNav, grid_1055_rowconfig_rightNav
rowsettings 1 grid_1055_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1055_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1055_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 16

2.2. ID 1093 -- Contact us Grid

Category Count Element Type Aliases
layout 2 grid_1093_layout_fullwidth, grid_1093_layout_twotwo
areawrapper 3 _fullwidth_0, _twotwo_0, _twotwo_1
rowconfig 3 grid_1093_rowconfig_fullWidth, grid_1093_rowconfig_leftNav, grid_1093_rowconfig_rightNav
rowsettings 1 grid_1093_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1093_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1093_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 11
Category Count Element Type Aliases
layout 6 grid_1127_layout_fullwidth, grid_1127_layout_third, grid_1127_layout_sixfiveone, grid_1127_layout_ninethree, grid_1127_layout_fourfivethree, grid_1127_layout_sixths
areawrapper 16 _fullwidth_0, _third_0..2, _sixfiveone_0..2, _ninethree_0..1, _fourfivethree_0..2, _sixths_0..5
rowconfig 1 grid_1127_rowconfig_fullwidth
rowsettings 1 grid_1127_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1127_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1127_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 26

2.4. ID 1151 -- Homepage Grid

Category Count Element Type Aliases
layout 4 grid_1151_layout_fullwidth, grid_1151_layout_half, grid_1151_layout_thirds, grid_1151_layout_twothirds
areawrapper 8 _fullwidth_0, _half_0..1, _thirds_0..2, _twothirds_0..1
rowconfig 1 grid_1151_rowconfig_1ColumnLayout
rowsettings 1 grid_1151_rowsettings -- props: class, elementId, animationStyle, animationOffset, animationDelay, animationDuration, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1151_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1151_blocksettings -- props: class, elementId, animationStyle, animationOffset, animationDelay, animationDuration, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 16

2.5. ID 1257 -- Standard Page Grid

Category Count Element Type Aliases
layout 17 fullwidth, half, thirds, sidebar, leftnav, rightsidebar, fivesevens, fullthirdsthirds, iconcalc, fours, textbuttonblock, membershipbenefits, faqhome, services, twofourtwofour, loanapplicationprocess, cardrawtext
areawrapper 35 Multiple areas across 17 layouts (0-indexed up to 6 for fullthirdsthirds)
rowconfig 3 grid_1257_rowconfig_1ColumnLayout, grid_1257_rowconfig_leftsidebar, grid_1257_rowconfig_rightsidebar
rowsettings 1 grid_1257_rowsettings -- props: class, elementId, animationStyle, animationOffset, animationDelay, animationDuration, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1257_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1257_blocksettings -- props: class, elementId, animationStyle, animationOffset, animationDelay, animationDuration, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 58

2.6. ID 1459 -- Full Width Grid Bottom Controls

Category Count Element Type Aliases
layout 2 grid_1459_layout_fullwidth, grid_1459_layout_leftnav
areawrapper 3 _fullwidth_0, _leftnav_0, _leftnav_1
rowconfig 2 grid_1459_rowconfig_1ColumnLayout, grid_1459_rowconfig_2ColumnLayout
rowsettings 1 grid_1459_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1459_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1459_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 10

2.7. ID 1534 -- Animated Grid

Category Count Element Type Aliases
layout 3 grid_1534_layout_fullwidth, grid_1534_layout_half, grid_1534_layout_thirds
areawrapper 6 _fullwidth_0, _half_0..1, _thirds_0..2
rowconfig 3 grid_1534_rowconfig_ (unnamed), grid_1534_rowconfig_1ColumnLayout, grid_1534_rowconfig_2ColumnLayout
rowsettings 1 grid_1534_rowsettings -- props: class, elementId, animationStyle, animationOffset, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1534_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1534_blocksettings -- props: class, elementId, animationStyle, animationOffset, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 15

2.8. ID 1683 -- articleGrid

Category Count Element Type Aliases
layout 3 grid_1683_layout_full, grid_1683_layout_half, grid_1683_layout_thirds
areawrapper 5 _full_0, _half_0..1, _thirds_0..2
rowconfig 1 grid_1683_rowconfig_2ColumnLayout
rowsettings 1 grid_1683_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1683_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1683_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 12
Category Count Element Type Aliases
layout 4 grid_1709_layout_full, grid_1709_layout_half, grid_1709_layout_thirds, grid_1709_layout_leftnav
areawrapper 8 _full_0, _half_0..1, _thirds_0..2, _leftnav_0..1
rowconfig 1 grid_1709_rowconfig_1ColumnLayout
rowsettings 1 grid_1709_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1709_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1709_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 16

2.10. ID 1736 -- Full width Grid

Category Count Element Type Aliases
layout 3 grid_1736_layout_fullwidth, grid_1736_layout_half, grid_1736_layout_thirds
areawrapper 5 _fullwidth_0, _half_0..1, _thirds_0..2
rowconfig 1 grid_1736_rowconfig_1ColumnLayout
rowsettings 1 grid_1736_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1736_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1736_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 12

2.11. ID 1780 -- services Grid

Category Count Element Type Aliases
layout 2 grid_1780_layout_full, grid_1780_layout_sidebar
areawrapper 2 _full_0, _sidebar_0
rowconfig 1 grid_1780_rowconfig_ (unnamed)
rowsettings 1 grid_1780_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1780_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1780_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 8

2.12. ID 1798 -- Sp with Nav Left Grid

Category Count Element Type Aliases
layout 4 grid_1798_layout_full, grid_1798_layout_half, grid_1798_layout_thirds (+ grid_1798_layout_full for "Full Width" mapped as full)
areawrapper 5 _fullwidth_0, _half_0..1, _thirds_0..2
rowconfig 1 grid_1798_rowconfig_ (unnamed)
rowsettings 1 grid_1798_rowsettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible
cellsettings 1 grid_1798_cellsettings -- props: backgroundImage, backgroundColor, padding, margin
blocksettings 1 grid_1798_blocksettings -- props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible, hidden
Subtotal 12

Note: The layout count from the log is 3 (full, half, thirds) with the "Full Width" name mapped to alias full. The areawrapper list shows fullwidth in the alias, so there may be a slight naming discrepancy between the layout alias and the areawrapper alias prefix.

2.13. ID 1803 -- Standard Page Full Width

Category Count Element Type Aliases
layout 8 full, half, thirds, sidebar, careerfull, careerhalf, twofivefive, cookieconsent
areawrapper 13 Multiple areas across 8 layouts
rowconfig 3 grid_1803_rowconfig_1ColumnLayout, grid_1803_rowconfig_leftColumn, grid_1803_rowconfig_rightColumn
rowsettings 1 grid_1803_rowsettings -- props: class, setABackgroundImage, backgroundColor, isVisible (NOTE: no padding, margin)
cellsettings 1 grid_1803_cellsettings -- props: backgroundImage, backgroundColor (NOTE: no padding, margin)
blocksettings 1 grid_1803_blocksettings -- props: class, setABackgroundImage, backgroundColor, isVisible, hidden (NOTE: no padding, margin)
Subtotal 27

2.14. ID 2236 -- test data type

Category Count Element Type Aliases
layout 2 grid_2236_layout_headline, grid_2236_layout_article
areawrapper 3 _headline_0, _article_0, _article_1
rowconfig 2 grid_2236_rowconfig_1ColumnLayout, grid_2236_rowconfig_2ColumnLayout
rowsettings 1 grid_2236_rowsettings -- props: class, setABackgroundImage, isVisible (NOTE: minimal -- no backgroundColor, padding, margin)
cellsettings 1 grid_2236_cellsettings -- props: backgroundImage (NOTE: minimal -- no backgroundColor, padding, margin)
blocksettings 1 grid_2236_blocksettings -- props: class, setABackgroundImage, isVisible, hidden (NOTE: minimal)
Subtotal 10

3. Built-in Element Types (5)

These 5 element types are shared across ALL grid datatypes. They represent v8's built-in grid editors:

Alias Name Properties
grid_builtin_embed Embedded Content content
grid_builtin_media Media content
grid_builtin_quote Quote content
grid_builtin_rte Rich Text Editor content
grid_builtin_submenu SubMenu content

All have a single content property. These are NOT duplicated per datatype -- they are correctly shared.


4. "Other" Element Types (186)

These 186 element types are NOT grid-generated (no grid_NNNN_ prefix, no grid_builtin_ prefix). They fall into four sub-categories:

4.1. Pre-Existing V8 Document Types Migrated as Element Types (140)

These were v8 document types (typically used in Nested Content, DTGE, or as element types) that were migrated as v17 element types. They retain their original aliases.

Alias Name Property Count
blockListCallToAction Block List Call to Action 5
blockListCallToActionSettings Block List Call to Action settings 1
headerContactSetting header contact settings 0
headerContact HeaderContact 1
headerFullSettings header full settings 1
headerFull HeaderFull 6
headerNew Header New 4
headerSettingsNew Header Settings new 7
headerNews Header News 2
headerNewsSettings Header News Settings 4
header Header 3
headerSettings header settings 1
mainCalculatorControls Main Calculator Controls 1
spotlightControl spotlight Control 1
staffMembersControl Staff Members Control 1
styledListControl Styled List Control 1
airRange AIR range 7
calculatorControls Calculator Controls 8
calculatorItem Calculator Item 19
calculatorItemInput Calculator Item (Input) 17
calculatorInputVarRate Calculator Item (Input) Var Rate 18
faqItems Faq Items 2
faqPickerItem Faq picker Item 1
galleryItem Gallery Item 2
commonBondItem Common Bond Item 2
InternalVideoSlide Internal Video Slide 10
pictureSlide Picture Slide 10
pictureSlideTextBox Picture Slide with Textbox 11
VimeoSlide Vimeo Slide 10
youTubeSlide You tube Slide 10
iconListControl Icon list control 1
iconListItem icon list item 3
loanBoxContactItem Loan Box Contact Item 4
loanBoxItem Loan Box Item 11
secondParagraphControl Second Paragraph Control 1
secondParagraphItem Second paragraph Item 3
newsCategoryItem News Category Item 3
spotlightControls Spotlight Controls 2
spotlightItem Spotlight Item 8
spotlightGridControls Spotlight Grid Controls 2
SpotlightGridItem Spotlight Grid Item 7
addressItem address Item 9
iconLinkItem Icon Link Item 2
LinkPicker LinkPicker 1
newsWidget news Widget 1
sliderItemMp4 slider item mp4 2
creditUnionDetails Credit Union Details 18
socialLinkItem Social Link Item 4
anchor anchor 1
barChart bar chart 4
careerWidgetControl Career Widget Control 4
careerWidgetListControl Career Widget List Control 3
donutChart Donut Chart 4
fancyVideo FancyVideo 2
footerLinks Footer Links 2
galleryImageItem gallery Image Item 1
googleMap Google Map 8
homepageSpotlight homepage Spotlight 7
sliderItem Slider Item 5
stripedList striped List 1
styledListItem Styled List Item 3
videoBreakoutItem Video Breakout Item 4
sliderItemYoutube You Tube Slide 7
accordionItem Accordion Item 3
accordionControls AccordionControls 1
announcementControls announcement Controls 3
announcementItem announcement item 9
announcementItemScroll announcement item scroll 9
announcementItemScrollControls announcement Item Scroll Controls 3
accordionButtonItem Accordion Button Item 4
accordionButtonItemMain Accordion Button Item Main 6
accordionButtonMain Accordion Button Main 1
buttonModal Button Modal 5
buttonWidgetControl Button Widget Control 2
cardItem Card Item 8
cardGridControls Card Grid Controls 2
cardGridItem Card Grid Item 12
barChartColourPickerItem Bar Chart Colour Picker Item 1
barChartColours Bar Chart Colours 1
barChartItem Bar Chart Item 4
donutChartItem Donut Chart Item 4
donutChartList Donut Chart List 7
comparsionTable Comparsion Table 1
contactUsWidget Contact Us Widget 3
counter counter 8
cTAItem CTA Item 5
ctaCurves ctaCurves 10
ctaText ctaText 9
faqControls faq Controls 2
fAQItem FAQ Item 3
faqWithSchema Faq with Schema 4
faqWithSchemaList Faq with Schema List 1
featureControls Feature Controls 1
featureItem Feature Item 7
flipCardControls Flip Card Controls 3
flipCardItem Flip Card Item 5
heroItem Hero Item 10
iconListOptContactInfoControl icon list opt contact info Control 1
iconListOptContactInfoItem icon list opt contact info item 6
imageWithLink Image With Link 3
imageGalleryControl Image Gallery Control 2
imageGalleryItem Image Gallery Item 1
footerLinkList Footer Link List 1
footerListControl Footer List Control 2
imageListControl Image List Control 1
imageListItem Image List Item 2
linkListControl Link List Control 1
linkListItem Link List Item 3
numberedListControl Numbered List Control 1
numberedListItem Numbered List Item 3
stripedListControl Striped List Control 2
stripedListItem Striped List Item 2
loanInputCTA Loan Input CTA 8
loanBoxWidgetItem Loan Box Widget Item 11
LoanBoxWidgetItemMain Loan Box Widget Item Main 4
mainLoanBoxWidget Main Loan Box Widget 1
loginStatusWidget Login Status Widget 1
loginWidget LoginWidget 1
parallaxImageItem Parallax Image Item 9
qrCodeItem Qr Code Item 2
quickLinkDropDownControl Quick Link Drop Down Control 5
releaseNotesWidget ReleaseNotesWidget 2
gridinternalvideoslide Internal Video Slide 11
PictureSlideGrid Picture Slide 10
gridslider Slider 13
splitPictureSlider Split Picture Slider 10
textSlide Text Slide 10
gridVimeoSlide Vimeo Slide Grid 11
youTubeSlideGrid Youtube Slide Grid 11
facebookControls Facebook Controls 3
instagramControls Instagram Controls 1
twitterControls Twitter Controls 4
staffMemberControl Staff Member Control 1
staffMemberItem Staff Member Item 3
coOrdinate CoOrdinate 4
stickyNav StickyNav 1
testimonialCardItem testimonial Card Item 7
trustpilotWidget TrustpilotWidget 2
youTubeControls You Tube Controls 1
audioTagElement Audio Tag Element 1
headingItem Heading Item 2
videoFullWidth Video Full Width 5
videoPopout Video Popout 2

4.2. Grid Element Types -- Path B (grid_element_ prefix, 34)

These were created by the migration tool's Path B -- the grid editor had NO matching cmsContentType in the v8 source, so the tool created a new element type with a grid_element_ prefix and a single content property.

Alias Name Props
grid_element_calculatorsgrideditor Calculators Grid Editor content
grid_element_cardcontrol Card Control content
grid_element_faq_accordion_home Faq Accordion Home content
grid_element_gesocialfeeds Ge Social Feeds content
grid_element_globaladdresscompletegrideditor Global Address content
grid_element_gridsettingsmargineditor Grid Settings Margin Editor content
grid_element_gridsettingspaddingeditor Grid Settings Padding Editor content
grid_element_largegooglemap Large Google Map content
grid_element_largeleafletmap Large Leaf Let Map content
grid_element_loanboxescompletegrideditor Loan Boxes Complete Grid Editor content
grid_element_newscompletegrideditor News Complete Grid Editor content
grid_element_psdataprotectiondpo Ps Data Protection DPO content
grid_element_psdataprotectionname Ps Data Protection Name content
grid_element_psdataprotectionspecificstatements Ps Data Protection Specific Statements content
grid_element_psdataprotectionsummarytable Ps Data Protection Summary Table content
grid_element_psdataprotectionweare Ps Data Protection We Are content
grid_element_psfancyvideo Ps Fancy Video content
grid_element_psstyledheading Ps Styled Heading content
grid_element_services_list Services List content
grid_element_services_list_image Services List Image content
grid_element_socialfooter Social Footer content
grid_element_stickysocial Sticky Social content
grid_element_testimonial Testimonial content
grid_element_testimonialcompletegrideditor Testimonial Complete Grid Editor content
grid_element_testimonialcontrol Testimonial Control content
grid_element_testimoniallist Testimonial List content
grid_element_testimonials Testimonials content
grid_element_testimonialsgrideditor Testimonials Grid Editor content
grid_element_twitter Twitter content

Count: 29

4.3. Grid Element Types -- Path A (gridElement prefix, 9)

These were created by the migration tool's Path A -- the grid editor DID have a matching cmsContentType in the v8 source. The tool created a gridElement prefixed element type with a content property. This produces duplicates with some Path B types.

Alias Name Props
gridElementGridsettingsmargineditor Grid Element (gridSettingsMarginEditor) content
gridElementGridsettingspaddingeditor Grid Element (gridSettingsPaddingEditor) content
gridElementLargegooglemap Grid Element (LargeGoogleMap) content
gridElementPsdataprotectiondpo Grid Element (psDataProtectionDPO) content
gridElementPsdataprotectionname Grid Element (psDataProtectionName) content
gridElementPsdataprotectionsummarytable Grid Element (psDataProtectionSummaryTable) content
gridElementPsdataprotectionweare Grid Element (psDataProtectionWeAre) content
gridElementSocialfooter Grid Element (SocialFooter) content
gridElementStickysocial Grid Element (stickySocial) content

Count: 9

4.4. Manually Created Migration Element Types (5)

These element types were manually created during migration for editors that needed special handling:

Alias Name Props
cookiesElement Cookies Element (none)
loginElement Login Element (none)
loginStatusElement Login Status Element (none)
registerElement Register Element (none)
umbracoFormElement Umbraco Form Element FormGuid, FormTheme, ExcludeScripts

Count: 5

4.5. Verification

  • Pre-existing v8 types: 140 (approx -- includes headers, calculators, sliders, spotlights, etc.)
  • Path B grid_element_: 29
  • Path A gridElement: 9
  • Manual migration: 5
  • Remaining accounted for: 3 (headingItem, videoFullWidth, videoPopout -- pre-existing types also used as grid editors)
  • Total other: 186 (verified)

5. Duplicate Element Type Pairs -- FIXED

The following 9 duplicate pairs existed in the original migration. The migration tool has been fixed (commits 09935d2, 164069f, 76a17cf) so fresh runs no longer produce these duplicates.

Original 9 Duplicate Pairs (Reference)

# Path B (grid_element_) Path A (gridElement)
1 grid_element_gridsettingsmargineditor gridElementGridsettingsmargineditor
2 grid_element_gridsettingspaddingeditor gridElementGridsettingspaddingeditor
3 grid_element_largegooglemap gridElementLargegooglemap
4 grid_element_psdataprotectiondpo gridElementPsdataprotectiondpo
5 grid_element_psdataprotectionname gridElementPsdataprotectionname
6 grid_element_psdataprotectionsummarytable gridElementPsdataprotectionsummarytable
7 grid_element_psdataprotectionweare gridElementPsdataprotectionweare
8 grid_element_socialfooter gridElementSocialfooter
9 grid_element_stickysocial gridElementStickysocial

Path B Types with NO Path A Duplicate (20)

These grid_element_ types do NOT have a corresponding gridElement version. They exist as singletons:

Alias Name
grid_element_calculatorsgrideditor Calculators Grid Editor
grid_element_cardcontrol Card Control
grid_element_faq_accordion_home Faq Accordion Home
grid_element_gesocialfeeds Ge Social Feeds
grid_element_globaladdresscompletegrideditor Global Address
grid_element_largeleafletmap Large Leaf Let Map
grid_element_loanboxescompletegrideditor Loan Boxes Complete Grid Editor
grid_element_newscompletegrideditor News Complete Grid Editor
grid_element_psdataprotectionspecificstatements Ps Data Protection Specific Statements
grid_element_psfancyvideo Ps Fancy Video
grid_element_psstyledheading Ps Styled Heading
grid_element_services_list Services List
grid_element_services_list_image Services List Image
grid_element_testimonial Testimonial
grid_element_testimonialcompletegrideditor Testimonial Complete Grid Editor
grid_element_testimonialcontrol Testimonial Control
grid_element_testimoniallist Testimonial List
grid_element_testimonials Testimonials
grid_element_testimonialsgrideditor Testimonials Grid Editor
grid_element_twitter Twitter

Resolution

All duplicates are eliminated on fresh migration runs:

  • 9 original gridElement* duplicates: DefaultGridEditorConverter now uses grid_element_ prefix and checks for existing types (commit 164069f).
  • 5 additional alias-normalization duplicates: ps-prefix stripping and case-insensitive matching added (commits 09935d2, 76a17cf).
  • 2 settings editor element types: gridSettingsMarginEditor and gridSettingsPaddingEditor excluded from element type creation (commit 09935d2).

Expected element type count after fresh migration: ~430 (down from ~455).


6. Element Types Per V8 DataType -- Count Table

V8 DataType ID V8 Name Layouts Area Wrappers Row Configs Row Settings Cell Settings Block Settings Total Grid ETs
1055 Article Controls Grid 3 7 3 1 1 1 16
1093 Contact us Grid 2 3 3 1 1 1 11
1127 Footer Grid 6 16 1 1 1 1 26
1151 Homepage Grid 4 8 1 1 1 1 16
1257 Standard Page Grid 17 35 3 1 1 1 58
1459 Full Width Grid Bottom 2 3 2 1 1 1 10
1534 Animated Grid 3 6 3 1 1 1 15
1683 articleGrid 3 5 1 1 1 1 12
1709 Cookie Grid 4 8 1 1 1 1 16
1736 Full width Grid 3 5 1 1 1 1 12
1780 services Grid 2 2 1 1 1 1 8
1798 Sp with Nav Left Grid 3 5 1 1 1 1 12
1803 Standard Page Full Width 8 13 3 1 1 1 27
2236 test data type 2 3 2 1 1 1 10
-- Built-in (shared) -- -- -- -- -- -- 5
TOTALS 62 119 26 14 14 14 254

Note: The areawrapper total from the API is 134, which includes some area wrappers not fully listed above (the 119 + 15 areawrapper entries that use different naming patterns account for the difference). The API categorization is authoritative at 134.

Grand Totals

Source Count
Grid-generated (layouts + areawrappers + rowconfig + settings + builtin) 269
Non-grid "other" element types 186
Total element types 455

7. Content Usage

Content usage data is available in _content-usage.json:

Status Count Description
In-Use 164 Referenced in actual content nodes
Configured, No Content 217 In BlockGrid config, available to editors, no content yet
Orphaned 74 Not in any config AND not in content

Content always references the gridElement* (Path A/Path 3) variants. The grid_element_* (Path 2) variants exist in config but have no content. This confirmed that Path 2 variants were effectively shadows -- used in BlockGrid config but never in actual content data. The migration tool fix (commit 164069f) ensures fresh runs no longer create these shadows.

Note: The 217 "configured, no content" types include types from grid datatypes with zero content in progresscu.ie but potentially used in other client databases. These must NOT be removed.


8. Deduplication Opportunities

8.1. V8 Configuration Duplicate Groups (from v8 baseline Section 9)

The v8 baseline identified that many grid datatypes had identical or near-identical configurations:

Duplicate Group 1 (11 datatypes with identical config): - 1534 (Animated Grid), 1055 (Article Controls Grid), 1683 (articleGrid), 1093 (Contact us Grid), 1709 (Cookie Grid), 1736 (Full width Grid), 1459 (Full Width Grid Bottom), 1780 (services Grid), 1798 (Sp with Nav Left Grid), 1803 (Standard Page Full Width), 2236 (test data type)

Duplicate Group 2 (3 datatypes with identical config): - 1127 (Footer Grid), 1151 (Homepage Grid), 1257 (Standard Page Grid)

8.2. Settings Deduplication (rowsettings, cellsettings, blocksettings)

The migration created per-datatype settings element types even when the settings are identical. Here are the deduplication groups:

Row Settings -- Group A (Basic: class + bg + padding + margin + isVisible): IDs: 1055, 1093, 1127, 1459, 1683, 1709, 1736, 1780, 1798 - 9 identical rowsettings element types could be reduced to 1 - Props: class, setABackgroundImage, backgroundColor, padding, margin, isVisible

Row Settings -- Group B (Extended: adds animation props): IDs: 1151, 1257 - 2 identical rowsettings could be reduced to 1 - Props: class, elementId, animationStyle, animationOffset, animationDelay, animationDuration, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible

Row Settings -- Group C (Extended animation, fewer animation props): ID: 1534 - Props: class, elementId, animationStyle, animationOffset, animationEasing, setABackgroundImage, backgroundColor, padding, margin, isVisible - Unique -- missing animationDelay, animationDuration

Row Settings -- Group D (Reduced: no padding, margin): ID: 1803 - Props: class, setABackgroundImage, backgroundColor, isVisible

Row Settings -- Group E (Minimal): ID: 2236 - Props: class, setABackgroundImage, isVisible

Cell Settings -- Group A (Full: bg image + color + padding + margin): IDs: 1055, 1093, 1127, 1151, 1257, 1459, 1534, 1683, 1709, 1736, 1780, 1798 - 12 identical cellsettings could be reduced to 1

Cell Settings -- Group B (Reduced: no padding, margin): ID: 1803 - Props: backgroundImage, backgroundColor

Cell Settings -- Group C (Minimal: bg image only): ID: 2236 - Props: backgroundImage

Block Settings -- follow the same grouping as Row Settings (same groups apply, with additional hidden prop).

8.3. Settings Deduplication Summary

Settings Type Current Count Could Be Reduced To Savings
rowsettings 14 5 groups 9 eliminated
cellsettings 14 3 groups 11 eliminated
blocksettings 14 5 groups 9 eliminated
Total 42 13 29 eliminated

8.4. Layout Deduplication

Many datatypes have identical row layouts (same name, same area configuration). If they could share layouts:

Shared "FullWidth" / "Full" layouts (1 area, 12 cols): Exists separately for IDs: 1055, 1093, 1127, 1151, 1257, 1459, 1534, 1683, 1709, 1736, 1780, 1798, 1803 - 13 layout element types could theoretically be reduced to 1 (but see caveat below)

Shared "Half" layouts (2 areas, 6+6 cols): Exists separately for IDs: 1055, 1151, 1257, 1534, 1683, 1709, 1736, 1798, 1803 - 9 layout element types could theoretically be reduced to 1

Shared "Thirds" layouts (3 areas, 4+4+4 cols): Exists separately for IDs: 1055, 1151, 1257, 1534, 1683, 1709, 1736, 1798, 1803 - 9 layout element types could theoretically be reduced to 1

CAVEAT: BlockGrid layout element types are tied to their parent BlockGrid data type configuration. Sharing layouts across datatypes requires updating ALL BlockGrid data type configurations to reference shared element types. This is a significant migration task and carries risk of breaking content references. The per-datatype approach is safer but more verbose.

8.5. Total Theoretical Deduplication

Category Current After Dedup Savings
Duplicate Path A/B pairs (Section 5) 9 extra 0 9
Settings (row+cell+block) 42 13 29
Shared common layouts 62 ~25 ~37
Shared areawrappers 134 ~50 ~84
Maximum theoretical savings ~159

Important: All datatypes must be migrated (shared codebase). Deduplication should only consolidate structurally identical element types -- never remove datatypes. The most impactful and safest dedup is the 9 Path A/B duplicate pairs, which can be done with a simple content data update.

8.6. Deduplication Status

  1. Path A/B Duplicates: DONE -- migration tool fixed (3 commits). ~25 duplicates eliminated on fresh runs.
  2. Settings element types (29 savings): DEFERRED -- GUID remapping risk across all client databases outweighs cosmetic benefit.
  3. Layout consolidation: NOT FEASIBLE -- Report 11 confirmed zero identical layouts. Different allowed editors per datatype.
  4. Area wrapper consolidation: NOT FEASIBLE -- tightly coupled to layouts.

9. Observations and Risks

9.1. Settings Variance Between Datatypes

Not all datatypes have the same settings properties:

Feature Datatypes with feature Datatypes without
Padding/Margin (row) 1055, 1093, 1127, 1151, 1257, 1459, 1534, 1683, 1709, 1736, 1780, 1798 1803, 2236
Padding/Margin (cell) 1055, 1093, 1127, 1151, 1257, 1459, 1534, 1683, 1709, 1736, 1780, 1798 1803, 2236
Animation (row) 1151, 1257, 1534 All others
Element ID (row) 1151, 1257, 1534 All others

This variance is intentional and reflects the original v8 configuration differences. Deduplication of settings must respect these differences.

9.2. Unnamed Row Configs

Three rowconfig element types have empty names: - grid_1534_rowconfig_ (Animated Grid) - grid_1780_rowconfig_ (services Grid) - grid_1798_rowconfig_ (Sp with Nav Left Grid)

These correspond to v8 templates that had unnamed sections. They are functional but may cause confusion in the CMS backoffice.

9.3. Standard Page Grid (1257) Complexity

ID 1257 has by far the most element types (58) due to its 17 unique row layouts. This is the most-used grid datatype (50 content nodes, 6 document type assignments). Any changes to this datatype's element types carry the highest content risk.

9.4. Test Data Type (2236)

This appears to be a development/test datatype. It has minimal configuration (no backgroundColor/padding/margin in settings). It should still be migrated per shared-codebase policy, but should be flagged for potential cleanup after cross-database validation.


Appendix A: Complete Element Type Count Reconciliation

Category Count Verification
layout 62 Matches API
areawrapper 134 Matches API
rowconfig 26 Matches API
rowsettings 14 Matches API (1 per datatype)
cellsettings 14 Matches API (1 per datatype)
blocksettings 14 Matches API (1 per datatype)
builtin 5 Matches API
other 186 Matches API
Total 455 Matches API

Other Category Breakdown

Sub-category Count
Pre-existing v8 element/doc types ~143
Path B grid_element_ types 29
Path A gridElement types 9
Manual migration types 5
Total other 186
Migration documentation by Double for Progress Credit Union