Child Nodes Keep Appearing

I added child nodes to TYPO3.Neos.NodeTypes:Page in NodeTypes.yaml and Root.ts2. Couple of days later I removed them but they still appear in the Admin UI and I can’t make them go away. flow flow:cache:flush --force and flow node:repair did not help.

Do you have any suggestions how to get rid of those child nodes?

I also tried to delete all rows from the database using this query:

SELECT * FROM neos.typo3_typo3cr_domain_model_nodedata where path like ‘%disclaimer%’;

but flow node:repair added them back:

Auto created node named “disclaimer” in “/sites/tbd/node-57f1a5d828ab1”

I searched for the word ‘disclaimer’ (the name of the node) in my site and it doesn’t exist anywhere.

I have no idea what to do.

Node:repair will remove undefined node types and nodes that are forbidden by constraints.
What is the type of the nodes that refuse to disappear. Can you show the old node-configuration?

There are two node types that refuse to disappear, both of them are TYPO3.Neos:ContentCollection

See the current NodeTypes.yaml and Root.ts2 files below (sorry they are pretty long). Also I found an old version (NodeTypes_OLD.yaml at the end) that still contains the ‘left’ child node.

As there is a character limit I’ll send them in separate posts.

NodeTypes.yaml

    ##
    # default page
    #
    'TYPO3.Neos.NodeTypes:Page':
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # welcome (index) page
    #
    'TYPO3.Neos.NodeTypes:WelcomePage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Welcome Page'
            icon: 'icon-camera'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'welcomePage':
                                    label: 'Welcome Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # photography page
    #
    'TYPO3.Neos.NodeTypes:PhotographyPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Photography Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'photographyPage':
                                    label: 'Photography Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # photography portfolio page
    #
    'TYPO3.Neos.NodeTypes:PhotographyPortfolioPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Photography Portfolio Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'photographyPortfolioPage':
                                    label: 'Photography Portfolio Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # photography pricing page
    #
    'TYPO3.Neos.NodeTypes:PhotographyPricingPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Photography Pricing Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
            disclaimer:
                type: 'TYPO3.Neos:ContentCollection'
            package1Title:
                type: 'TYPO3.Neos:ContentCollection'
            package1Body:
                type: 'TYPO3.Neos:ContentCollection'
            package2Title:
                type: 'TYPO3.Neos:ContentCollection'
            package2Body:
                type: 'TYPO3.Neos:ContentCollection'
            package3Title:
                type: 'TYPO3.Neos:ContentCollection'
            package3Body:
                type: 'TYPO3.Neos:ContentCollection'
            package4Title:
                type: 'TYPO3.Neos:ContentCollection'
            package4Body:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'photographyPricingPage':
                                    label: 'Photography Pricing Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # my orders page
    #
    'TYPO3.Neos.NodeTypes:MyOrdersPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'My Orders Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'myOrdersPage':
                                    label: 'My Orders Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # pay photo session deposit page
    #
    'TYPO3.Neos.NodeTypes:PayPhotoSessionDepositPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Pay Photo Session Deposit Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'payPhotoSessionDepositPage':
                                    label: 'Pay Photo Session Deposit Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # pay final page
    #
    'TYPO3.Neos.NodeTypes:PayFinalPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Pay Final Balance Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'payFinalPage':
                                    label: 'Pay Final Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # choose session pictures page
    #
    'TYPO3.Neos.NodeTypes:ChooseSessionPicturesPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Choose Session Pictures Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'chooseSessionPicturesPage':
                                    label: 'Choose Session Pictures Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # photo retouching page
    #
    'TYPO3.Neos.NodeTypes:PhotoRetouchingPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Photo Retouching Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'photoRetouchingPage':
                                    label: 'Photo Retouching Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    ##
    # photo portfolio page
    #
    'TYPO3.Neos.NodeTypes:PhotoRetouchingPortfolioPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Photo Retouching Portfolio Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'photoRetouchingPortfolioPage':
                                    label: 'Photo Retouching Portfolio Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    #-----------------------------------------------------------------------------------------------------------------------------------------------------------
    #------------------------------------------------------------------------------------------- User Account Management ---------------------------------------
    #-----------------------------------------------------------------------------------------------------------------------------------------------------------


    ##
    # registration page
    #
    'TYPO3.Neos.NodeTypes:RegistrationPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Registration Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'registrationPage':
                                    label: 'Registration Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions


    ##
    # login page
    #
    'TYPO3.Neos.NodeTypes:LoginPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Login Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'loginPage':
                                    label: 'Login Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions


    ##
    # password reset page
    #
    'TYPO3.Neos.NodeTypes:PasswordResetPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Password Reset Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'passwordResetPage':
                                    label: 'Password Reset Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions


    ##
    # password change page
    #
    'TYPO3.Neos.NodeTypes:PasswordChangePage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Password Change Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'passwordChangePage':
                                    label: 'Password Change Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions


    ##
    # my account page
    #
    'TYPO3.Neos.NodeTypes:MyAccountPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'My Account Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'myAccountPage':
                                    label: 'My Account Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions


    ##
    # contact page
    #
    'TYPO3.Neos.NodeTypes:ContactPage':
        superTypes:
            'TYPO3.Neos.NodeTypes:Page': TRUE
        ui:
            label: 'Contact Page'
            icon: 'icon-camera'
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'contactPage':
                                    label: 'Contact Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions











    #-----------------------------------------------------------------------------------------------------------------------------------------------------------
    #------------------------------------------------------------------------------------------- Nodes ---------------------------------------------------------
    #-----------------------------------------------------------------------------------------------------------------------------------------------------------

    ##
    # Three column div
    #
    'TYPO3.Neos.NodeTypes:ThreeColumn':
      properties:
        width:
          type: integer
          defaultValue: '600'
          ui:
            label: 'Width'
            reloadIfChanged: TRUE
            inspector:
              group: 'column'
              position: 10
        layout:
          defaultValue: '33-33-33'
          ui:
            reloadIfChanged: TRUE
            inspector:
              editorOptions:
                values:
                  '33-33-33':
                    label: '33% / 33% / 33%'
                  '50-25-25':
                    label: '50% / 25% / 25%'
                  '25-50-25':
                    label: '25% / 50% / 25%'
                  '25-25-50':
                    label: '25% / 25% / 50%'
            inspector:
              group: 'column'
              position: 20



    ##
    # A "Youtube" content element
    #
    'tadewebdesign.doraphotography:YouTube':
      superTypes:
        'TYPO3.Neos:Content': TRUE
      ui:
        label: YouTube
        icon: 'icon-youtube'
        inspector:
          groups:
            'video':
              label: i18n
              position: 50
        help:
          message: 'Embeds a YouTube video as content defined by a video ID.'
      properties:
        'video':
          type: string
          defaultValue: ''
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'
            help:
              message: |
                The video identifier is visible in the URL to a youtube video

                Eg. in the URL

                `https://youtu.be/G6D1YI-41ao`

                the video id is `G6D1YI-41ao`.
        'width':
          type: integer
          defaultValue: 400
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'
        'height':
          type: integer
          defaultValue: 300
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'


    ##
    # A "PortfolioImage" content element
    #
    'tadewebdesign.doraphotography:PortfolioImage':
      superTypes:
        'TYPO3.Neos:Content': TRUE
      ui:
        label: 'Portfolio Image'
        group: 'general'
        icon: 'icon-picture'
        inspector:
          groups:
            'image':
              label: 'Image'
              position: 50
            'attributes':
              label: 'Attributes'
              position: 60
        help:
          message: 'Portfolio image with date and description'
      properties:
        'image':
          type: TYPO3\Media\Domain\Model\ImageInterface
          ui:
            label: 'Image'
            reloadIfChanged: TRUE
            inspector:
              group: 'image'
        'date':
          type: string
          defaultValue: 'mm/dd/yyyy'
          ui:
            label: 'Date'
            inlineEditable: TRUE
            inspector:
              group: 'attributes'
        'description':
          type: string
          defaultValue: 'Describe your image here...'
          ui:
            label: 'Description'
            inlineEditable: TRUE
            inspector:
              group: 'attributes'
        'keywords':
          type: string
          defaultValue: '#hashtag1 #hashtag2'
          ui:
            label: 'Keywords'
            inlineEditable: TRUE
            inspector:
              group: 'attributes'

Root.ts2

    /**
     * Root TypoScript template for the doraphotography.com site
     */
    page = Page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/DefaultPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/DefaultPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/DefaultPage.html'
            sectionName = 'body'
            parts {
                menu = Menu
            }
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/DefaultPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for welcome page
     */
    welcomePage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/WelcomePage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/WelcomePage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/WelcomePage.html'
            sectionName = 'body'

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/WelcomePage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for photography page
     */
    photographyPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for photographyPortfolio page
     */
    photographyPortfolioPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPortfolioPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPortfolioPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPortfolioPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPortfolioPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for photographyPricing page
     */
    photographyPricingPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPricingPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPricingPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPricingPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
                disclaimer = ContentCollection {
                    nodePath = 'disclaimer'
                }
                package1Title = ContentCollection {
                    nodePath = 'package1Title'
                }
                package1Body = ContentCollection {
                    nodePath = 'package1Body'
                }
                package2Title = ContentCollection {
                    nodePath = 'package2Title'
                }
                package2Body = ContentCollection {
                    nodePath = 'package2Body'
                }
                package3Title = ContentCollection {
                    nodePath = 'package3Title'
                }
                package3Body = ContentCollection {
                    nodePath = 'package3Body'
                }
                package4Title = ContentCollection {
                    nodePath = 'package4Title'
                }
                package4Body = ContentCollection {
                    nodePath = 'package4Body'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotographyPricingPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for registration page
     */
    registrationPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/RegistrationPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/RegistrationPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/RegistrationPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/RegistrationPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for login page
     */
    loginPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/LoginPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/LoginPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/LoginPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/LoginPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for passwordReset page
     */
    passwordResetPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordResetPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordResetPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordResetPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordResetPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for passwordChange page
     */
    passwordChangePage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordChangePage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordChangePage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordChangePage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PasswordChangePage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for myAccount page
     */
    myAccountPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyAccountPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyAccountPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyAccountPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyAccountPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for contact page
     */
    contactPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ContactPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ContactPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ContactPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ContactPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for my orders page
     */
    myOrdersPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyOrdersPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyOrdersPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyOrdersPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/MyOrdersPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for pay photo session deposit page
     */
    payPhotoSessionDepositPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayPhotoSessionDepositPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayPhotoSessionDepositPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayPhotoSessionDepositPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayPhotoSessionDepositPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for pay final page
     */
    payFinalPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayFinalPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayFinalPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayFinalPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PayFinalPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for choose session pictures page
     */
    chooseSessionPicturesPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ChooseSessionPicturesPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ChooseSessionPicturesPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ChooseSessionPicturesPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/ChooseSessionPicturesPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for photo retouching page
     */
    photoRetouchingPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }




    /**
     * Special layout for photoRetouchingPortfolio page
     */
    photoRetouchingPortfolioPage < page {
        head {
            stylesheets.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPortfolioPage.html'
                sectionName = 'stylesheets'
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPortfolioPage.html'
                sectionName = 'headScripts'
            }
        }

        body {
            templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPortfolioPage.html'
            sectionName = 'body'
            // These are your content areas, you can define as many as you want, just name them and the nodePath.
            content {
                // The default content section
                main = PrimaryContent {
                    nodePath = 'main'
                }
            }

            javascripts.site = TYPO3.TypoScript:Template {
                templatePath = 'resource://tadewebdesign.doraphotography/Private/Templates/Page/PhotoRetouchingPortfolioPage.html'
                sectionName = 'bodyScripts'
            }
        }
    }

NodeTypes.yaml (OLD)

    ##
    # Default Page
    #
    'TYPO3.Neos.NodeTypes:Page':
        childNodes:
            main:
                type: 'TYPO3.Neos:ContentCollection'
            left:
                type: 'TYPO3.Neos:ContentCollection'
        properties:
            'layout':
                ui:
                    inspector:
                        group: layout
                        position: 10
                        editorOptions: &pagePropertyLayoutEditorOptions
                            values:
                                'defaultPage':
                                    label: 'Default'
                                'welcomePage':
                                    label: 'Welcome Page'
                                'photographyPage':
                                    label: 'Photography Page'
                                'registrationPage':
                                    label: 'Registration Page'
                                'loginPage':
                                    label: 'Login Page'
                                'myOrdersPage':
                                    label: 'My Orders Page'
                                'payPhotoSessionDepositPage':
                                    label: 'Pay Photo Session Deposit Page'
                                'payFinalPage':
                                    label: 'Pay Final Page'
                                'chooseSessionPicturesPage':
                                    label: 'Choose Session Pictures Page'
                                'photoRetouchingPage':
                                    label: 'Photo Retouching Page'
            'subpageLayout':
                ui:
                    inspector:
                        group: layout
                        position: 11
                        editorOptions: *pagePropertyLayoutEditorOptions




    'TYPO3.Neos.NodeTypes:ThreeColumn':
      properties:
        width:
          type: integer
          defaultValue: '600'
          ui:
            label: 'Width'
            reloadIfChanged: TRUE
            inspector:
              group: 'column'
              position: 10
        layout:
          defaultValue: '33-33-33'
          ui:
            reloadIfChanged: TRUE
            inspector:
              editorOptions:
                values:
                  '33-33-33':
                    label: '33% / 33% / 33%'
                  '50-25-25':
                    label: '50% / 25% / 25%'
                  '25-50-25':
                    label: '25% / 50% / 25%'
                  '25-25-50':
                    label: '25% / 25% / 50%'
            inspector:
              group: 'column'
              position: 20



    ##
    # A "Youtube" content element
    #
    'tadewebdesign.doraphotography:YouTube':
      superTypes:
        'TYPO3.Neos:Content': TRUE
      ui:
        label: YouTube
        icon: 'icon-youtube'
        inspector:
          groups:
            'video':
              label: i18n
              position: 50
        help:
          message: 'Embeds a YouTube video as content defined by a video ID.'
      properties:
        'video':
          type: string
          defaultValue: ''
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'
            help:
              message: |
                The video identifier is visible in the URL to a youtube video

                Eg. in the URL

                `https://youtu.be/G6D1YI-41ao`

                the video id is `G6D1YI-41ao`.
        'width':
          type: integer
          defaultValue: 400
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'
        'height':
          type: integer
          defaultValue: 300
          ui:
            label: i18n
            reloadIfChanged: TRUE
            inspector:
              group: 'video'

I just tried this in the Neos.Demo Package.

I added a new collection to the page document

'TYPO3.Neos.NodeTypes:Page':
  childNodes:
    'teaser_two':
      type: 'TYPO3.Neos:ContentCollection'
      constraints:
        nodeTypes:
          '*': FALSE
          'TYPO3.Neos.NodeTypes:Headline': TRUE
          'TYPO3.Neos.NodeTypes:Text': TRUE
          'TYPO3.Neos.NodeTypes:Image': TRUE

then ran node:repair

Auto created node named "teaser-two" in "/sites/neosdemo"
Auto created node named "teaser-two" in "/sites/neosdemo"
...

I removed that child node configuration and ran node:repair again
… with this result

Checking for disallowed child nodes
Found disallowed node named "teaser-two" (TYPO3.Neos:ContentCollection) in "/sites/neosdemo/features/shortcuts/shortcut-to-child-node/downtherabbithole/teaser-two", child of node "downtherabbithole" (TYPO3.Neos.NodeTypes:Page)
Found disallowed node named "teaser-two" (TYPO3.Neos:ContentCollection) in "/sites/neosdemo/features/shortcuts/teaser-two", child of node "shortcuts" (TYPO3.Neos.NodeTypes:Page)
Found disallowed node named "teaser-two" (TYPO3.Neos:ContentCollection) in 
 .... 
Found disallowed node named "teaser-two" (TYPO3.Neos:ContentCollection) in "/sites/neosdemo/teaser-two", child of node "neosdemo" (Neos.Demo:Homepage)
Found disallowed node named "teaser-two" (TYPO3.Neos:ContentCollection) in "/sites/neosdemo/teaser-two", child of node "neosdemo" (Neos.Demo:Homepage)

Do you want to remove all disallowed child nodes? (y/n)y

Do you have some configuration that allows TYPO3.Neos:ContentCollection als child of Page because in genereal the constraint for documents are defined like this.

'TYPO3.Neos:Document':
  constraints:
    nodeTypes:
      '*': FALSE
      'TYPO3.Neos:Document': TRUE

Is it possible that you have configuration that interferes with this constraint?

Thank you for your quick response, I appreciate it. Where should I look for that configuration besides Sites\vendor.domain\Resources\Private\TypoScript\Root.ts2 and Sites\vendor.domain\Configuration\NodeTypes.yaml? The name of one of the Content Collection child nodes I need to go is ‘left’. I searched for that word in all files under the site root and it wasn’t found in any config file.

I tried to add a new child node to one of the pages and verified it appeared in the Structure section of the Admin UI. After that I removed that child node and after node:repair it disappeared as it should.

Checking for disallowed child nodes …
Found disallowed node named “intro” (TYPO3.Neos:ContentCollection) in “/sites/doraphotography/node-58348a1e5986b/intro”, child of node “node-58348a1e5986b” (TYPO3.Neos.NodeTypes:PhotoRetouchingHowDoesItWorkPage)

Do you want to remove all disallowed child nodes? (y/n)y

Removed 1 disallowed node.

So it is working correctly for newly added and removed child nodes, it must be with those 2 old nodes stuck there.

Did you look into the db-table typo3_typo3cr_domain_model_nodedata ?

If you have the path or the identifier of those nodes you can take a look what the actual NodeType … it would be interesting what type they have.

You also can remove the collection in that db-table manually … that is not recommended but sometimes it is more efficient to fix a strange behavior the hard way then to invest the time to relly understand it.

Yes, I’ve been looking at that table.

Here’s the query I used to see the parent node the children I’d like to get rid of belong to:

SELECT * FROM neos.typo3_typo3cr_domain_model_nodedata where path = '/sites/doraphotography/node-5834e54a9ea72';

Here’s the results:

persistence_object_identifier,workspace,contentobjectproxy,path,identifier,sortingindex,properties,nodetype,removed,hidden,hiddenbeforedatetime,hiddenafterdatetime,hiddeninindex,accessroles,version,parentpath,pathhash,dimensionshash,dimensionvalues,parentpathhash,movedto,creationdatetime,lastmodificationdatetime,lastpublicationdatetime
22b36e64-10cc-4e5b-ba58-6e7255ff6678,live,NULL,/sites/doraphotography/node-5834e54a9ea72,d63811dc-7d77-4853-b3d1-6c54da31874d,891,"{
    ""uriPathSegment"": ""studiorental"",
    ""canonicalLink"": """",
    ""title"": ""studiorental"",
    ""titleOverride"": """",
    ""metaDescription"": """",
    ""metaKeywords"": """",
    ""metaRobotsNoindex"": false,
    ""metaRobotsNofollow"": false,
    ""twitterCardType"": """",
    ""twitterCardCreator"": """",
    ""twitterCardTitle"": """",
    ""twitterCardDescription"": """",
    ""twitterCardImage"": """",
    ""openGraphType"": """",
    ""openGraphTitle"": """",
    ""openGraphDescription"": """",
    ""openGraphImage"": """",
    ""xmlSitemapChangeFrequency"": """",
    ""xmlSitemapPriority"": """",
    ""layout"": ""studioRentalPage"",
    ""subpageLayout"": """"
}",TYPO3.Neos.NodeTypes:StudioRentalPage,0,0,NULL,NULL,0,{},4,/sites/doraphotography,dc36ed0dd52dec86b0e722e648500de1,d751713988987e9331980363e24189ce,{},6ba0ffd16634696ccc6d677c301e3494,NULL,"2016-11-22 19:39:38","2016-11-22 20:03:56","2016-11-22 20:03:55"

And this query lists all the nodes whose parent is the node above:

SELECT * FROM neos.typo3_typo3cr_domain_model_nodedata where parentpath = '/sites/doraphotography/node-5834e54a9ea72';

persistence_object_identifier,workspace,contentobjectproxy,path,identifier,sortingindex,properties,nodetype,removed,hidden,hiddenbeforedatetime,hiddenafterdatetime,hiddeninindex,accessroles,version,parentpath,pathhash,dimensionshash,dimensionvalues,parentpathhash,movedto,creationdatetime,lastmodificationdatetime,lastpublicationdatetime
02f7dac6-3f13-4b17-b176-59977d105a72,live,NULL,/sites/doraphotography/node-5834e54a9ea72/left,8f033acc-9490-0aed-1f5f-92e6c4be7bc5,200,{},TYPO3.Neos:ContentCollection,0,0,NULL,NULL,0,{},2,/sites/doraphotography/node-5834e54a9ea72,b51874a5c1c11114eed16a9961d27781,d751713988987e9331980363e24189ce,{},dc36ed0dd52dec86b0e722e648500de1,NULL,"2016-11-22 19:39:38","2016-11-22 19:43:55","2016-11-22 19:43:54"
7a544bab-1957-44d9-baff-70b6bdbe7b2a,live,NULL,/sites/doraphotography/node-5834e54a9ea72/disclaimer,1ea94359-36ee-d21f-7198-080a77adffa8,300,{},TYPO3.Neos:ContentCollection,0,0,NULL,NULL,0,{},2,/sites/doraphotography/node-5834e54a9ea72,7c552fca4cf0abf83214cc8df991cdf5,d751713988987e9331980363e24189ce,{},dc36ed0dd52dec86b0e722e648500de1,NULL,"2016-11-22 19:39:38","2016-11-22 19:43:55","2016-11-22 19:43:54"
d781cd1d-927d-42af-af46-ec080ab4aa4c,live,NULL,/sites/doraphotography/node-5834e54a9ea72/pictures,1f4b3a6a-2ecd-458d-90fb-25e67fe28976,400,{},TYPO3.Neos:ContentCollection,0,0,NULL,NULL,0,{},1,/sites/doraphotography/node-5834e54a9ea72,4815eb7c81d84b861b91f8ac58e8479e,d751713988987e9331980363e24189ce,{},dc36ed0dd52dec86b0e722e648500de1,NULL,"2016-11-22 20:10:04","2016-11-22 20:10:04",NULL
e15ec65e-9c72-4026-9495-32f3b4937bf9,live,NULL,/sites/doraphotography/node-5834e54a9ea72/main,89e9ea92-7e76-ccc2-e79b-1e9908cb74e1,100,{},TYPO3.Neos:ContentCollection,0,0,NULL,NULL,0,{},2,/sites/doraphotography/node-5834e54a9ea72,4d5391883e6c693178777bc9137470e5,d751713988987e9331980363e24189ce,{},dc36ed0dd52dec86b0e722e648500de1,NULL,"2016-11-22 19:39:38","2016-11-22 19:43:55","2016-11-22 19:43:54"

Sorry it’s a bit hard to ready but I can’t attach CSV files…

I’d like to remove the ‘left’ and ‘disclaimer’ nodes. I went ahead and removed them from the database:

DELETE FROM `neos`.`typo3_typo3cr_domain_model_nodedata` WHERE `persistence_object_identifier`='02f7dac6-3f13-4b17-b176-59977d105a72';
DELETE FROM `neos`.`typo3_typo3cr_domain_model_nodedata` WHERE `persistence_object_identifier`='7a544bab-1957-44d9-baff-70b6bdbe7b2a';

I ran flow:repair and it added the children back I just deleted:

Checking for missing child nodes ...
Auto created node named "left" in "/sites/doraphotography/node-5834e54a9ea72"
Auto created node named "disclaimer" in "/sites/doraphotography/node-5834e54a9ea72"
Created 2 new child nodes
Checking for child nodes that needs reordering ...
Moved node named "pictures" after node named "disclaimer" in "/sites/doraphotography/node-5834e54a9ea72"

None of these files contain the words ‘left’:
\Resources\Private\Templates\Page\StudioRentalPage.html
\Configuration\NodeTypes.yaml
\Resources\Private\TypoScript\Root.ts2

Where that configuration could be that still says the ‘studioRental’ page should have disclaimer and left child nodes?

I think the application-context is the problem here. The problem seems to be either a config file in an unexpected location or caching of configurations.

Is is possible that you are running in Production Context where the configuration is cached. Did you run ./flow flow:cache:flush --force . Make sure you are running the cli commands in the same context as the website?

You can check the currently active configuration in the Configuration Module of the Neos-Backend.

Yes I have ran ./flow flow:cache:flush --force many times. It says Force-flushed caches for “Development” context. It definitely does something because I need to re-login in the Admin UI.

I tried to access the Configuration screen (http://domain.com/neos/administration/configuration) via the Admin UI by clicking the top left menu and clicking Configuration but the page couldn’t load (“The connection was reset”).

This is as far as my knowledge about Neos goes, we tried everything I could think of…
It’s no big deal, definitely not a showstopper as it’s only a minor defect, it’s annoying that the unused nodes are there in the bottom left corner in the Admin UI but it doesn’t break any functionality. Plus I’ll most likely rebuild the site in the live environment when it’s ready instead of migrating it.

So thank you for all you help but if you don’t have any more ideas it’s OK.

Thanks again,
Daniel

Two informations from my side:

childNode content collections that you remove from configuration are never removed by us, because we can never know if they are there on purpose or not (as the configuration is gone). For us it’s just a node that is there.
If you did this kind of thing the only way to get rid of them is to delete them from the DB I guess. Which means finding them and removing those and children (by path).

If node:repair afterwards tries to re-add them your configuration still contains these as child nodes and you need to find the place.