diff --git a/docs/en/Ambient-Context-Pattern.md b/docs/en/ambient-context-pattern.md
similarity index 100%
rename from docs/en/Ambient-Context-Pattern.md
rename to docs/en/ambient-context-pattern.md
diff --git a/docs/en/Aspect-Oriented-Programming.md b/docs/en/aspect-oriented-programming.md
similarity index 100%
rename from docs/en/Aspect-Oriented-Programming.md
rename to docs/en/aspect-oriented-programming.md
diff --git a/docs/en/Deploy-azure-app-service.md b/docs/en/deploy-azure-app-service.md
similarity index 100%
rename from docs/en/Deploy-azure-app-service.md
rename to docs/en/deploy-azure-app-service.md
diff --git a/docs/en/Dynamic-Proxying-Interceptors.md b/docs/en/dynamic-proxying-interceptors.md
similarity index 100%
rename from docs/en/Dynamic-Proxying-Interceptors.md
rename to docs/en/dynamic-proxying-interceptors.md
diff --git a/docs/en/Extension-Methods-And-Helpers.md b/docs/en/extension-methods-and-helpers.md
similarity index 100%
rename from docs/en/Extension-Methods-And-Helpers.md
rename to docs/en/extension-methods-and-helpers.md
diff --git a/docs/en/framework/ui/angular/Abp-Window-Service.md b/docs/en/framework/ui/angular/abp-window-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Abp-Window-Service.md
rename to docs/en/framework/ui/angular/abp-window-service.md
diff --git a/docs/en/framework/ui/angular/Account-Module.md b/docs/en/framework/ui/angular/account-module.md
similarity index 100%
rename from docs/en/framework/ui/angular/Account-Module.md
rename to docs/en/framework/ui/angular/account-module.md
diff --git a/docs/en/framework/ui/angular/Authorization.md b/docs/en/framework/ui/angular/authorization.md
similarity index 100%
rename from docs/en/framework/ui/angular/Authorization.md
rename to docs/en/framework/ui/angular/authorization.md
diff --git a/docs/en/framework/ui/angular/Basic-Theme.md b/docs/en/framework/ui/angular/basic-theme.md
similarity index 100%
rename from docs/en/framework/ui/angular/Basic-Theme.md
rename to docs/en/framework/ui/angular/basic-theme.md
diff --git a/docs/en/framework/ui/angular/Breadcrumb.md b/docs/en/framework/ui/angular/breadcrumb.md
similarity index 100%
rename from docs/en/framework/ui/angular/Breadcrumb.md
rename to docs/en/framework/ui/angular/breadcrumb.md
diff --git a/docs/en/framework/ui/angular/Caps-Lock-Directive.md b/docs/en/framework/ui/angular/caps-lock-directive.md
similarity index 100%
rename from docs/en/framework/ui/angular/Caps-Lock-Directive.md
rename to docs/en/framework/ui/angular/caps-lock-directive.md
diff --git a/docs/en/framework/ui/angular/Card-Component.md b/docs/en/framework/ui/angular/card-component.md
similarity index 100%
rename from docs/en/framework/ui/angular/Card-Component.md
rename to docs/en/framework/ui/angular/card-component.md
diff --git a/docs/en/framework/ui/angular/Chart-Component.md b/docs/en/framework/ui/angular/chart-component.md
similarity index 100%
rename from docs/en/framework/ui/angular/Chart-Component.md
rename to docs/en/framework/ui/angular/chart-component.md
diff --git a/docs/en/framework/ui/angular/Checkbox-Component.md b/docs/en/framework/ui/angular/checkbox-component.md
similarity index 100%
rename from docs/en/framework/ui/angular/Checkbox-Component.md
rename to docs/en/framework/ui/angular/checkbox-component.md
diff --git a/docs/en/framework/ui/angular/Component-Replacement.md b/docs/en/framework/ui/angular/component-replacement.md
similarity index 100%
rename from docs/en/framework/ui/angular/Component-Replacement.md
rename to docs/en/framework/ui/angular/component-replacement.md
diff --git a/docs/en/framework/ui/angular/Config-State-Service.md b/docs/en/framework/ui/angular/config-state-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Config-State-Service.md
rename to docs/en/framework/ui/angular/config-state-service.md
diff --git a/docs/en/framework/ui/angular/Config-State.md b/docs/en/framework/ui/angular/config-state.md
similarity index 100%
rename from docs/en/framework/ui/angular/Config-State.md
rename to docs/en/framework/ui/angular/config-state.md
diff --git a/docs/en/framework/ui/angular/Confirmation-Service.md b/docs/en/framework/ui/angular/confirmation-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Confirmation-Service.md
rename to docs/en/framework/ui/angular/confirmation-service.md
diff --git a/docs/en/framework/ui/angular/Container-Strategy.md b/docs/en/framework/ui/angular/container-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Container-Strategy.md
rename to docs/en/framework/ui/angular/container-strategy.md
diff --git a/docs/en/framework/ui/angular/Content-Projection-Service.md b/docs/en/framework/ui/angular/content-projection-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Content-Projection-Service.md
rename to docs/en/framework/ui/angular/content-projection-service.md
diff --git a/docs/en/framework/ui/angular/Content-Security-Strategy.md b/docs/en/framework/ui/angular/content-security-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Content-Security-Strategy.md
rename to docs/en/framework/ui/angular/content-security-strategy.md
diff --git a/docs/en/framework/ui/angular/Content-Strategy.md b/docs/en/framework/ui/angular/content-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Content-Strategy.md
rename to docs/en/framework/ui/angular/content-strategy.md
diff --git a/docs/en/framework/ui/angular/Context-Strategy.md b/docs/en/framework/ui/angular/context-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Context-Strategy.md
rename to docs/en/framework/ui/angular/context-strategy.md
diff --git a/docs/en/framework/ui/angular/Cross-Origin-Strategy.md b/docs/en/framework/ui/angular/cross-origin-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Cross-Origin-Strategy.md
rename to docs/en/framework/ui/angular/cross-origin-strategy.md
diff --git a/docs/en/framework/ui/angular/Current-User.md b/docs/en/framework/ui/angular/current-user.md
similarity index 100%
rename from docs/en/framework/ui/angular/Current-User.md
rename to docs/en/framework/ui/angular/current-user.md
diff --git a/docs/en/framework/ui/angular/Customization-User-Interface.md b/docs/en/framework/ui/angular/customization-user-interface.md
similarity index 100%
rename from docs/en/framework/ui/angular/Customization-User-Interface.md
rename to docs/en/framework/ui/angular/customization-user-interface.md
diff --git a/docs/en/framework/ui/angular/Data-Table-Column-Extensions.md b/docs/en/framework/ui/angular/data-table-column-extensions.md
similarity index 100%
rename from docs/en/framework/ui/angular/Data-Table-Column-Extensions.md
rename to docs/en/framework/ui/angular/data-table-column-extensions.md
diff --git a/docs/en/framework/ui/angular/DateTime-Format-Pipe.md b/docs/en/framework/ui/angular/datetime-format-pipe.md
similarity index 100%
rename from docs/en/framework/ui/angular/DateTime-Format-Pipe.md
rename to docs/en/framework/ui/angular/datetime-format-pipe.md
diff --git a/docs/en/framework/ui/angular/Dom-Insertion-Service.md b/docs/en/framework/ui/angular/dom-insertion-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Dom-Insertion-Service.md
rename to docs/en/framework/ui/angular/dom-insertion-service.md
diff --git a/docs/en/framework/ui/angular/Dom-Strategy.md b/docs/en/framework/ui/angular/dom-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Dom-Strategy.md
rename to docs/en/framework/ui/angular/dom-strategy.md
diff --git a/docs/en/framework/ui/angular/Dynamic-Form-Extensions.md b/docs/en/framework/ui/angular/dynamic-form-extensions.md
similarity index 100%
rename from docs/en/framework/ui/angular/Dynamic-Form-Extensions.md
rename to docs/en/framework/ui/angular/dynamic-form-extensions.md
diff --git a/docs/en/framework/ui/angular/Ellipsis-Directive.md b/docs/en/framework/ui/angular/ellipsis-directive.md
similarity index 100%
rename from docs/en/framework/ui/angular/Ellipsis-Directive.md
rename to docs/en/framework/ui/angular/ellipsis-directive.md
diff --git a/docs/en/framework/ui/angular/Entity-Action-Extensions.md b/docs/en/framework/ui/angular/entity-action-extensions.md
similarity index 100%
rename from docs/en/framework/ui/angular/Entity-Action-Extensions.md
rename to docs/en/framework/ui/angular/entity-action-extensions.md
diff --git a/docs/en/framework/ui/angular/Environment.md b/docs/en/framework/ui/angular/environment.md
similarity index 100%
rename from docs/en/framework/ui/angular/Environment.md
rename to docs/en/framework/ui/angular/environment.md
diff --git a/docs/en/framework/ui/angular/Extensions-Overall.md b/docs/en/framework/ui/angular/extensions-overall.md
similarity index 100%
rename from docs/en/framework/ui/angular/Extensions-Overall.md
rename to docs/en/framework/ui/angular/extensions-overall.md
diff --git a/docs/en/framework/ui/angular/Feature-Libraries.md b/docs/en/framework/ui/angular/feature-libraries.md
similarity index 100%
rename from docs/en/framework/ui/angular/Feature-Libraries.md
rename to docs/en/framework/ui/angular/feature-libraries.md
diff --git a/docs/en/framework/ui/angular/Features.md b/docs/en/framework/ui/angular/features.md
similarity index 100%
rename from docs/en/framework/ui/angular/Features.md
rename to docs/en/framework/ui/angular/features.md
diff --git a/docs/en/framework/ui/angular/FormInput-Component.md b/docs/en/framework/ui/angular/form-input-component.md
similarity index 100%
rename from docs/en/framework/ui/angular/FormInput-Component.md
rename to docs/en/framework/ui/angular/form-input-component.md
diff --git a/docs/en/framework/ui/angular/Form-Validation.md b/docs/en/framework/ui/angular/form-validation.md
similarity index 100%
rename from docs/en/framework/ui/angular/Form-Validation.md
rename to docs/en/framework/ui/angular/form-validation.md
diff --git a/docs/en/framework/ui/angular/GlobalFeatures.md b/docs/en/framework/ui/angular/global-features.md
similarity index 100%
rename from docs/en/framework/ui/angular/GlobalFeatures.md
rename to docs/en/framework/ui/angular/global-features.md
diff --git a/docs/en/framework/ui/angular/How-Replaceable-Components-Work-with-Extensions.md b/docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
similarity index 100%
rename from docs/en/framework/ui/angular/How-Replaceable-Components-Work-with-Extensions.md
rename to docs/en/framework/ui/angular/how-replaceable-components-work-with-extensions.md
diff --git a/docs/en/framework/ui/angular/HTTP-Error-Handling.md b/docs/en/framework/ui/angular/http-error-handling.md
similarity index 100%
rename from docs/en/framework/ui/angular/HTTP-Error-Handling.md
rename to docs/en/framework/ui/angular/http-error-handling.md
diff --git a/docs/en/framework/ui/angular/HTTP-Error-Reporter-Service.md b/docs/en/framework/ui/angular/http-error-reporter-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/HTTP-Error-Reporter-Service.md
rename to docs/en/framework/ui/angular/http-error-reporter-service.md
diff --git a/docs/en/framework/ui/angular/HTTP-Requests.md b/docs/en/framework/ui/angular/http-requests.md
similarity index 100%
rename from docs/en/framework/ui/angular/HTTP-Requests.md
rename to docs/en/framework/ui/angular/http-requests.md
diff --git a/docs/en/framework/ui/angular/Internet-Connection-Service.md b/docs/en/framework/ui/angular/internet-connection-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Internet-Connection-Service.md
rename to docs/en/framework/ui/angular/internet-connection-service.md
diff --git a/docs/en/framework/ui/angular/Lazy-Load-Service.md b/docs/en/framework/ui/angular/lazy-load-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Lazy-Load-Service.md
rename to docs/en/framework/ui/angular/lazy-load-service.md
diff --git a/docs/en/framework/ui/angular/List-Service.md b/docs/en/framework/ui/angular/list-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/List-Service.md
rename to docs/en/framework/ui/angular/list-service.md
diff --git a/docs/en/framework/ui/angular/Loading-Directive.md b/docs/en/framework/ui/angular/loading-directive.md
similarity index 100%
rename from docs/en/framework/ui/angular/Loading-Directive.md
rename to docs/en/framework/ui/angular/loading-directive.md
diff --git a/docs/en/framework/ui/angular/Loading-Strategy.md b/docs/en/framework/ui/angular/loading-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Loading-Strategy.md
rename to docs/en/framework/ui/angular/loading-strategy.md
diff --git a/docs/en/framework/ui/angular/Localization.md b/docs/en/framework/ui/angular/localization.md
similarity index 100%
rename from docs/en/framework/ui/angular/Localization.md
rename to docs/en/framework/ui/angular/localization.md
diff --git a/docs/en/framework/ui/angular/Migration-Guide-v3.md b/docs/en/framework/ui/angular/migration-guide-v3.md
similarity index 100%
rename from docs/en/framework/ui/angular/Migration-Guide-v3.md
rename to docs/en/framework/ui/angular/migration-guide-v3.md
diff --git a/docs/en/framework/ui/angular/Modal.md b/docs/en/framework/ui/angular/modal.md
similarity index 100%
rename from docs/en/framework/ui/angular/Modal.md
rename to docs/en/framework/ui/angular/modal.md
diff --git a/docs/en/framework/ui/angular/Modifying-the-Menu.md b/docs/en/framework/ui/angular/modifying-the-menu.md
similarity index 100%
rename from docs/en/framework/ui/angular/Modifying-the-Menu.md
rename to docs/en/framework/ui/angular/modifying-the-menu.md
diff --git a/docs/en/framework/ui/angular/Multi-Tenancy.md b/docs/en/framework/ui/angular/multi-tenancy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Multi-Tenancy.md
rename to docs/en/framework/ui/angular/multi-tenancy.md
diff --git a/docs/en/framework/ui/angular/OAuth-Module.md b/docs/en/framework/ui/angular/oauth-module.md
similarity index 100%
rename from docs/en/framework/ui/angular/OAuth-Module.md
rename to docs/en/framework/ui/angular/oauth-module.md
diff --git a/docs/en/framework/ui/angular/Page-Alerts.md b/docs/en/framework/ui/angular/page-alerts.md
similarity index 100%
rename from docs/en/framework/ui/angular/Page-Alerts.md
rename to docs/en/framework/ui/angular/page-alerts.md
diff --git a/docs/en/framework/ui/angular/Page-Component.md b/docs/en/framework/ui/angular/page-component.md
similarity index 100%
rename from docs/en/framework/ui/angular/Page-Component.md
rename to docs/en/framework/ui/angular/page-component.md
diff --git a/docs/en/framework/ui/angular/Page-Toolbar-Extensions.md b/docs/en/framework/ui/angular/page-toolbar-extensions.md
similarity index 100%
rename from docs/en/framework/ui/angular/Page-Toolbar-Extensions.md
rename to docs/en/framework/ui/angular/page-toolbar-extensions.md
diff --git a/docs/en/framework/ui/angular/Permission-Management-Component-Replacement.md b/docs/en/framework/ui/angular/permission-management-component-replacement.md
similarity index 100%
rename from docs/en/framework/ui/angular/Permission-Management-Component-Replacement.md
rename to docs/en/framework/ui/angular/permission-management-component-replacement.md
diff --git a/docs/en/framework/ui/angular/Permission-Management.md b/docs/en/framework/ui/angular/permission-management.md
similarity index 100%
rename from docs/en/framework/ui/angular/Permission-Management.md
rename to docs/en/framework/ui/angular/permission-management.md
diff --git a/docs/en/framework/ui/angular/Projection-Strategy.md b/docs/en/framework/ui/angular/projection-strategy.md
similarity index 100%
rename from docs/en/framework/ui/angular/Projection-Strategy.md
rename to docs/en/framework/ui/angular/projection-strategy.md
diff --git a/docs/en/framework/ui/angular/PWA-Configuration.md b/docs/en/framework/ui/angular/pwa-configuration.md
similarity index 100%
rename from docs/en/framework/ui/angular/PWA-Configuration.md
rename to docs/en/framework/ui/angular/pwa-configuration.md
diff --git a/docs/en/framework/ui/angular/Quick-Start.md b/docs/en/framework/ui/angular/quick-start.md
similarity index 100%
rename from docs/en/framework/ui/angular/Quick-Start.md
rename to docs/en/framework/ui/angular/quick-start.md
diff --git a/docs/en/framework/ui/angular/Router-Events.md b/docs/en/framework/ui/angular/router-events.md
similarity index 100%
rename from docs/en/framework/ui/angular/Router-Events.md
rename to docs/en/framework/ui/angular/router-events.md
diff --git a/docs/en/framework/ui/angular/Service-Proxies.md b/docs/en/framework/ui/angular/service-proxies.md
similarity index 100%
rename from docs/en/framework/ui/angular/Service-Proxies.md
rename to docs/en/framework/ui/angular/service-proxies.md
diff --git a/docs/en/framework/ui/angular/Settings.md b/docs/en/framework/ui/angular/settings.md
similarity index 100%
rename from docs/en/framework/ui/angular/Settings.md
rename to docs/en/framework/ui/angular/settings.md
diff --git a/docs/en/framework/ui/angular/Show-Password-Directive.md b/docs/en/framework/ui/angular/show-password-directive.md
similarity index 100%
rename from docs/en/framework/ui/angular/Show-Password-Directive.md
rename to docs/en/framework/ui/angular/show-password-directive.md
diff --git a/docs/en/framework/ui/angular/Sorting-Navigation-Elements.md b/docs/en/framework/ui/angular/sorting-navigation-elements.md
similarity index 100%
rename from docs/en/framework/ui/angular/Sorting-Navigation-Elements.md
rename to docs/en/framework/ui/angular/sorting-navigation-elements.md
diff --git a/docs/en/framework/ui/angular/Subscription-Service.md b/docs/en/framework/ui/angular/subscription-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Subscription-Service.md
rename to docs/en/framework/ui/angular/subscription-service.md
diff --git a/docs/en/framework/ui/angular/Testing.md b/docs/en/framework/ui/angular/testing.md
similarity index 100%
rename from docs/en/framework/ui/angular/Testing.md
rename to docs/en/framework/ui/angular/testing.md
diff --git a/docs/en/framework/ui/angular/Theme-Configurations.md b/docs/en/framework/ui/angular/theme-configurations.md
similarity index 100%
rename from docs/en/framework/ui/angular/Theme-Configurations.md
rename to docs/en/framework/ui/angular/theme-configurations.md
diff --git a/docs/en/framework/ui/angular/Theming.md b/docs/en/framework/ui/angular/theming.md
similarity index 100%
rename from docs/en/framework/ui/angular/Theming.md
rename to docs/en/framework/ui/angular/theming.md
diff --git a/docs/en/framework/ui/angular/Toaster-Service.md b/docs/en/framework/ui/angular/toaster-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Toaster-Service.md
rename to docs/en/framework/ui/angular/toaster-service.md
diff --git a/docs/en/framework/ui/angular/Track-By-Service.md b/docs/en/framework/ui/angular/track-by-service.md
similarity index 100%
rename from docs/en/framework/ui/angular/Track-By-Service.md
rename to docs/en/framework/ui/angular/track-by-service.md
diff --git a/docs/en/framework/ui/blazor/Authentication.md b/docs/en/framework/ui/blazor/authentication.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Authentication.md
rename to docs/en/framework/ui/blazor/authentication.md
diff --git a/docs/en/framework/ui/blazor/Authorization.md b/docs/en/framework/ui/blazor/authorization.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Authorization.md
rename to docs/en/framework/ui/blazor/authorization.md
diff --git a/docs/en/framework/ui/blazor/Basic-Theme.md b/docs/en/framework/ui/blazor/basic-theme.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Basic-Theme.md
rename to docs/en/framework/ui/blazor/basic-theme.md
diff --git a/docs/en/framework/ui/blazor/Block-Busy.md b/docs/en/framework/ui/blazor/block-busy.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Block-Busy.md
rename to docs/en/framework/ui/blazor/block-busy.md
diff --git a/docs/en/framework/ui/blazor/Branding.md b/docs/en/framework/ui/blazor/branding.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Branding.md
rename to docs/en/framework/ui/blazor/branding.md
diff --git a/docs/en/framework/ui/blazor/Components/SubmitButton.md b/docs/en/framework/ui/blazor/components/submit-button.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Components/SubmitButton.md
rename to docs/en/framework/ui/blazor/components/submit-button.md
diff --git a/docs/en/framework/ui/blazor/CurrentTenant.md b/docs/en/framework/ui/blazor/current-tenant.md
similarity index 100%
rename from docs/en/framework/ui/blazor/CurrentTenant.md
rename to docs/en/framework/ui/blazor/current-tenant.md
diff --git a/docs/en/framework/ui/blazor/CurrentUser.md b/docs/en/framework/ui/blazor/current-user.md
similarity index 100%
rename from docs/en/framework/ui/blazor/CurrentUser.md
rename to docs/en/framework/ui/blazor/current-user.md
diff --git a/docs/en/framework/ui/blazor/Customization-Overriding-Components.md b/docs/en/framework/ui/blazor/customization-overriding-components.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Customization-Overriding-Components.md
rename to docs/en/framework/ui/blazor/customization-overriding-components.md
diff --git a/docs/en/framework/ui/blazor/Data-Table-Column-Extensions.md b/docs/en/framework/ui/blazor/data-table-column-extensions.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Data-Table-Column-Extensions.md
rename to docs/en/framework/ui/blazor/data-table-column-extensions.md
diff --git a/docs/en/framework/ui/blazor/Entity-Action-Extensions.md b/docs/en/framework/ui/blazor/entity-action-extensions.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Entity-Action-Extensions.md
rename to docs/en/framework/ui/blazor/entity-action-extensions.md
diff --git a/docs/en/framework/ui/blazor/Error-Handling.md b/docs/en/framework/ui/blazor/error-handling.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Error-Handling.md
rename to docs/en/framework/ui/blazor/error-handling.md
diff --git a/docs/en/framework/ui/blazor/Forms-Validation.md b/docs/en/framework/ui/blazor/forms-validation.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Forms-Validation.md
rename to docs/en/framework/ui/blazor/forms-validation.md
diff --git a/docs/en/framework/ui/blazor/Global-Features.md b/docs/en/framework/ui/blazor/global-features.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Global-Features.md
rename to docs/en/framework/ui/blazor/global-features.md
diff --git a/docs/en/framework/ui/blazor/Global-Scripts-Styles.md b/docs/en/framework/ui/blazor/global-scripts-styles.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Global-Scripts-Styles.md
rename to docs/en/framework/ui/blazor/global-scripts-styles.md
diff --git a/docs/en/framework/ui/blazor/Layout-Hooks.md b/docs/en/framework/ui/blazor/layout-hooks.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Layout-Hooks.md
rename to docs/en/framework/ui/blazor/layout-hooks.md
diff --git a/docs/en/framework/ui/blazor/Localization.md b/docs/en/framework/ui/blazor/localization.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Localization.md
rename to docs/en/framework/ui/blazor/localization.md
diff --git a/docs/en/framework/ui/blazor/Message.md b/docs/en/framework/ui/blazor/message.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Message.md
rename to docs/en/framework/ui/blazor/message.md
diff --git a/docs/en/framework/ui/blazor/Navigation-Menu.md b/docs/en/framework/ui/blazor/navigation-menu.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Navigation-Menu.md
rename to docs/en/framework/ui/blazor/navigation-menu.md
diff --git a/docs/en/framework/ui/blazor/Notification.md b/docs/en/framework/ui/blazor/notification.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Notification.md
rename to docs/en/framework/ui/blazor/notification.md
diff --git a/docs/en/framework/ui/blazor/Overall.md b/docs/en/framework/ui/blazor/overall.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Overall.md
rename to docs/en/framework/ui/blazor/overall.md
diff --git a/docs/en/framework/ui/blazor/Page-Alerts.md b/docs/en/framework/ui/blazor/page-alerts.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Page-Alerts.md
rename to docs/en/framework/ui/blazor/page-alerts.md
diff --git a/docs/en/framework/ui/blazor/Page-Header.md b/docs/en/framework/ui/blazor/page-header.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Page-Header.md
rename to docs/en/framework/ui/blazor/page-header.md
diff --git a/docs/en/framework/ui/blazor/Page-Layout.md b/docs/en/framework/ui/blazor/page-layout.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Page-Layout.md
rename to docs/en/framework/ui/blazor/page-layout.md
diff --git a/docs/en/framework/ui/blazor/Page-Progress.md b/docs/en/framework/ui/blazor/page-progress.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Page-Progress.md
rename to docs/en/framework/ui/blazor/page-progress.md
diff --git a/docs/en/framework/ui/blazor/Page-Toolbar-Extensions.md b/docs/en/framework/ui/blazor/page-toolbar-extensions.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Page-Toolbar-Extensions.md
rename to docs/en/framework/ui/blazor/page-toolbar-extensions.md
diff --git a/docs/en/framework/ui/blazor/Pwa-Configuration.md b/docs/en/framework/ui/blazor/pwa-configuration.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Pwa-Configuration.md
rename to docs/en/framework/ui/blazor/pwa-configuration.md
diff --git a/docs/en/framework/ui/blazor/Routing.md b/docs/en/framework/ui/blazor/routing.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Routing.md
rename to docs/en/framework/ui/blazor/routing.md
diff --git a/docs/en/framework/ui/blazor/Settings.md b/docs/en/framework/ui/blazor/settings.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Settings.md
rename to docs/en/framework/ui/blazor/settings.md
diff --git a/docs/en/framework/ui/blazor/Testing.md b/docs/en/framework/ui/blazor/testing.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Testing.md
rename to docs/en/framework/ui/blazor/testing.md
diff --git a/docs/en/framework/ui/blazor/Theming.md b/docs/en/framework/ui/blazor/theming.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Theming.md
rename to docs/en/framework/ui/blazor/theming.md
diff --git a/docs/en/framework/ui/blazor/Toolbars.md b/docs/en/framework/ui/blazor/toolbars.md
similarity index 100%
rename from docs/en/framework/ui/blazor/Toolbars.md
rename to docs/en/framework/ui/blazor/toolbars.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/AutoComplete-Select.md b/docs/en/framework/ui/mvc-razor-pages/auto-complete-select.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/AutoComplete-Select.md
rename to docs/en/framework/ui/mvc-razor-pages/auto-complete-select.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Basic-Theme.md b/docs/en/framework/ui/mvc-razor-pages/basic-theme.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Basic-Theme.md
rename to docs/en/framework/ui/mvc-razor-pages/basic-theme.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Branding.md b/docs/en/framework/ui/mvc-razor-pages/branding.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Branding.md
rename to docs/en/framework/ui/mvc-razor-pages/branding.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Bundling-Minification.md b/docs/en/framework/ui/mvc-razor-pages/bundling-minification.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Bundling-Minification.md
rename to docs/en/framework/ui/mvc-razor-pages/bundling-minification.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Client-Side-Package-Management.md b/docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Client-Side-Package-Management.md
rename to docs/en/framework/ui/mvc-razor-pages/client-side-package-management.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Customization-User-Interface.md b/docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Customization-User-Interface.md
rename to docs/en/framework/ui/mvc-razor-pages/customization-user-interface.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Data-Table-Column-Extensions.md b/docs/en/framework/ui/mvc-razor-pages/data-table-column-extensions.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Data-Table-Column-Extensions.md
rename to docs/en/framework/ui/mvc-razor-pages/data-table-column-extensions.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Data-Tables.md b/docs/en/framework/ui/mvc-razor-pages/data-tables.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Data-Tables.md
rename to docs/en/framework/ui/mvc-razor-pages/data-tables.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Dynamic-JavaScript-Proxies.md b/docs/en/framework/ui/mvc-razor-pages/dynamic-javascript-proxies.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Dynamic-JavaScript-Proxies.md
rename to docs/en/framework/ui/mvc-razor-pages/dynamic-javascript-proxies.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Entity-Action-Extensions.md b/docs/en/framework/ui/mvc-razor-pages/entity-action-extensions.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Entity-Action-Extensions.md
rename to docs/en/framework/ui/mvc-razor-pages/entity-action-extensions.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Forms-Validation.md b/docs/en/framework/ui/mvc-razor-pages/forms-validation.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Forms-Validation.md
rename to docs/en/framework/ui/mvc-razor-pages/forms-validation.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Ajax.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/ajax.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Ajax.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/ajax.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Auth.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/auth.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Auth.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/auth.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Block-Busy.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/block-busy.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Block-Busy.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/block-busy.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/CurrentUser.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/current-user.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/CurrentUser.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/current-user.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/DOM.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/dom.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/DOM.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/dom.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Events.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/events.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Events.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/events.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Features.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/features.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Features.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/features.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/GlobalFeatures.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/global-features.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/GlobalFeatures.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/global-features.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Index.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/index.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Index.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/index.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Localization.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/localization.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Localization.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/localization.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Logging.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/logging.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Logging.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/logging.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Message.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/message.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Message.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/message.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Notify.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/notify.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Notify.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/notify.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/ResourceLoader.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/resource-loader.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/ResourceLoader.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/resource-loader.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Settings.md b/docs/en/framework/ui/mvc-razor-pages/javascript-api/settings.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/JavaScript-API/Settings.md
rename to docs/en/framework/ui/mvc-razor-pages/javascript-api/settings.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Layout-Hooks.md b/docs/en/framework/ui/mvc-razor-pages/layout-hooks.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Layout-Hooks.md
rename to docs/en/framework/ui/mvc-razor-pages/layout-hooks.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Modals.md b/docs/en/framework/ui/mvc-razor-pages/modals.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Modals.md
rename to docs/en/framework/ui/mvc-razor-pages/modals.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Navigation-Menu.md b/docs/en/framework/ui/mvc-razor-pages/navigation-menu.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Navigation-Menu.md
rename to docs/en/framework/ui/mvc-razor-pages/navigation-menu.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Overall.md b/docs/en/framework/ui/mvc-razor-pages/overall.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Overall.md
rename to docs/en/framework/ui/mvc-razor-pages/overall.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Page-Alerts.md b/docs/en/framework/ui/mvc-razor-pages/page-alerts.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Page-Alerts.md
rename to docs/en/framework/ui/mvc-razor-pages/page-alerts.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Page-Header.md b/docs/en/framework/ui/mvc-razor-pages/page-header.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Page-Header.md
rename to docs/en/framework/ui/mvc-razor-pages/page-header.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Page-Toolbar-Extensions.md b/docs/en/framework/ui/mvc-razor-pages/page-toolbar-extensions.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Page-Toolbar-Extensions.md
rename to docs/en/framework/ui/mvc-razor-pages/page-toolbar-extensions.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Security-Headers.md b/docs/en/framework/ui/mvc-razor-pages/security-headers.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Security-Headers.md
rename to docs/en/framework/ui/mvc-razor-pages/security-headers.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Static-JavaScript-Proxies.md b/docs/en/framework/ui/mvc-razor-pages/static-javascript-proxies.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Static-JavaScript-Proxies.md
rename to docs/en/framework/ui/mvc-razor-pages/static-javascript-proxies.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Alerts.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/alerts.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Alerts.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/alerts.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Badges.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/badges.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Badges.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/badges.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Blockquote.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/blockquote.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Blockquote.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/blockquote.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Borders.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/borders.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Borders.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/borders.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Breadcrumbs.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/breadcrumbs.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Breadcrumbs.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/breadcrumbs.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Button-groups.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/button-groups.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Button-groups.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/button-groups.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Buttons.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/buttons.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Buttons.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/buttons.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Cards.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/cards.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Cards.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/cards.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Carousel.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/carousel.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Carousel.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/carousel.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Collapse.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/collapse.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Collapse.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/collapse.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Dropdowns.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/dropdowns.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Dropdowns.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/dropdowns.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Dynamic-Forms.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/dynamic-forms.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Dynamic-Forms.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/dynamic-forms.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Figure.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/figure.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Figure.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/figure.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Form-elements.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/form-elements.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Form-elements.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/form-elements.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Grids.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/grids.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Grids.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/grids.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Index.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Index.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/index.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/List-Groups.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/list-groups.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/List-Groups.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/list-groups.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Modals.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/modals.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Modals.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/modals.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Navs.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/navs.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Navs.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/navs.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Paginator.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/paginator.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Paginator.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/paginator.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Popovers.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/popovers.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Popovers.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/popovers.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Progress-Bars.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/progress-bars.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Progress-Bars.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/progress-bars.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tables.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/tables.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tables.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/tables.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tabs.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/tabs.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tabs.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/tabs.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tooltips.md b/docs/en/framework/ui/mvc-razor-pages/tag-helpers/tooltips.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Tag-Helpers/Tooltips.md
rename to docs/en/framework/ui/mvc-razor-pages/tag-helpers/tooltips.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Testing.md b/docs/en/framework/ui/mvc-razor-pages/testing.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Testing.md
rename to docs/en/framework/ui/mvc-razor-pages/testing.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Theming.md b/docs/en/framework/ui/mvc-razor-pages/theming.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Theming.md
rename to docs/en/framework/ui/mvc-razor-pages/theming.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Toolbars.md b/docs/en/framework/ui/mvc-razor-pages/toolbars.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Toolbars.md
rename to docs/en/framework/ui/mvc-razor-pages/toolbars.md
diff --git a/docs/en/framework/ui/mvc-razor-pages/Widgets.md b/docs/en/framework/ui/mvc-razor-pages/widgets.md
similarity index 100%
rename from docs/en/framework/ui/mvc-razor-pages/Widgets.md
rename to docs/en/framework/ui/mvc-razor-pages/widgets.md
diff --git a/docs/en/Index.md b/docs/en/index.md
similarity index 100%
rename from docs/en/Index.md
rename to docs/en/index.md
diff --git a/docs/en/Multi-Lingual-Entities.md b/docs/en/multi-lingual-entities.md
similarity index 100%
rename from docs/en/Multi-Lingual-Entities.md
rename to docs/en/multi-lingual-entities.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_0-Angular.md b/docs/en/release-info/migration-guides/abp-4-0-angular.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_0-Angular.md
rename to docs/en/release-info/migration-guides/abp-4-0-angular.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_0-Blazor.md b/docs/en/release-info/migration-guides/abp-4-0-blazor.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_0-Blazor.md
rename to docs/en/release-info/migration-guides/abp-4-0-blazor.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_0-MVC-Razor-Pages.md b/docs/en/release-info/migration-guides/abp-4-0-mvc-razor-pages.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_0-MVC-Razor-Pages.md
rename to docs/en/release-info/migration-guides/abp-4-0-mvc-razor-pages.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_0.md b/docs/en/release-info/migration-guides/abp-4-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_0.md
rename to docs/en/release-info/migration-guides/abp-4-0.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_2.md b/docs/en/release-info/migration-guides/abp-4-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_2.md
rename to docs/en/release-info/migration-guides/abp-4-2.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-4_3.md b/docs/en/release-info/migration-guides/abp-4-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-4_3.md
rename to docs/en/release-info/migration-guides/abp-4-3.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5_0-Angular.md b/docs/en/release-info/migration-guides/abp-5-0-angular.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5_0-Angular.md
rename to docs/en/release-info/migration-guides/abp-5-0-angular.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5-0-Blazor.md b/docs/en/release-info/migration-guides/abp-5-0-blazor.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5-0-Blazor.md
rename to docs/en/release-info/migration-guides/abp-5-0-blazor.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5-0-MVC.md b/docs/en/release-info/migration-guides/abp-5-0-mvc.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5-0-MVC.md
rename to docs/en/release-info/migration-guides/abp-5-0-mvc.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5_0.md b/docs/en/release-info/migration-guides/abp-5-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5_0.md
rename to docs/en/release-info/migration-guides/abp-5-0.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5_2.md b/docs/en/release-info/migration-guides/abp-5-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5_2.md
rename to docs/en/release-info/migration-guides/abp-5-2.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-5_3.md b/docs/en/release-info/migration-guides/abp-5-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-5_3.md
rename to docs/en/release-info/migration-guides/abp-5-3.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-6_0.md b/docs/en/release-info/migration-guides/abp-6-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-6_0.md
rename to docs/en/release-info/migration-guides/abp-6-0.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-7_0.md b/docs/en/release-info/migration-guides/abp-7-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-7_0.md
rename to docs/en/release-info/migration-guides/abp-7-0.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-7_1.md b/docs/en/release-info/migration-guides/abp-7-1.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-7_1.md
rename to docs/en/release-info/migration-guides/abp-7-1.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-7_2.md b/docs/en/release-info/migration-guides/abp-7-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-7_2.md
rename to docs/en/release-info/migration-guides/abp-7-2.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-7_3.md b/docs/en/release-info/migration-guides/abp-7-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-7_3.md
rename to docs/en/release-info/migration-guides/abp-7-3.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-7_4.md b/docs/en/release-info/migration-guides/abp-7-4.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-7_4.md
rename to docs/en/release-info/migration-guides/abp-7-4.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-8_0.md b/docs/en/release-info/migration-guides/abp-8-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-8_0.md
rename to docs/en/release-info/migration-guides/abp-8-0.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-8_1.md b/docs/en/release-info/migration-guides/abp-8-1.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-8_1.md
rename to docs/en/release-info/migration-guides/abp-8-1.md
diff --git a/docs/en/release-info/Migration-Guides/Abp-8-2-Blazor-Web-App.md b/docs/en/release-info/migration-guides/abp-8-2-blazor-web-app.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Abp-8-2-Blazor-Web-App.md
rename to docs/en/release-info/migration-guides/abp-8-2-blazor-web-app.md
diff --git a/docs/en/release-info/Migration-Guides/BlazorUI-3_3.md b/docs/en/release-info/migration-guides/blazorui-3-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/BlazorUI-3_3.md
rename to docs/en/release-info/migration-guides/blazorui-3-3.md
diff --git a/docs/en/release-info/Migration-Guides/IdentityServer_To_OpenIddict.md b/docs/en/release-info/migration-guides/identityserver-to-openiddict.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/IdentityServer_To_OpenIddict.md
rename to docs/en/release-info/migration-guides/identityserver-to-openiddict.md
diff --git a/docs/en/release-info/Migration-Guides/IdentityServer4-Step-by-Step.md b/docs/en/release-info/migration-guides/identityserver4-step-by-step.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/IdentityServer4-Step-by-Step.md
rename to docs/en/release-info/migration-guides/identityserver4-step-by-step.md
diff --git a/docs/en/release-info/migration-guides/images/integration-postfix-not-removed.png b/docs/en/release-info/migration-guides/images/integration-postfix-not-removed.png
new file mode 100644
index 0000000000..6ec19d7121
Binary files /dev/null and b/docs/en/release-info/migration-guides/images/integration-postfix-not-removed.png differ
diff --git a/docs/en/release-info/migration-guides/images/openiddict-pro-application-modal.png b/docs/en/release-info/migration-guides/images/openiddict-pro-application-modal.png
new file mode 100644
index 0000000000..12ac682084
Binary files /dev/null and b/docs/en/release-info/migration-guides/images/openiddict-pro-application-modal.png differ
diff --git a/docs/en/release-info/migration-guides/images/openiddict-pro-application-timelife-modal.png b/docs/en/release-info/migration-guides/images/openiddict-pro-application-timelife-modal.png
new file mode 100644
index 0000000000..4c0523325b
Binary files /dev/null and b/docs/en/release-info/migration-guides/images/openiddict-pro-application-timelife-modal.png differ
diff --git a/docs/en/release-info/migration-guides/images/route-4.png b/docs/en/release-info/migration-guides/images/route-4.png
new file mode 100644
index 0000000000..8723e7d0d6
Binary files /dev/null and b/docs/en/release-info/migration-guides/images/route-4.png differ
diff --git a/docs/en/release-info/migration-guides/images/route-before-4.png b/docs/en/release-info/migration-guides/images/route-before-4.png
new file mode 100644
index 0000000000..b27dd18476
Binary files /dev/null and b/docs/en/release-info/migration-guides/images/route-before-4.png differ
diff --git a/docs/en/release-info/Migration-Guides/Index.md b/docs/en/release-info/migration-guides/index.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Index.md
rename to docs/en/release-info/migration-guides/index.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict-Angular.md b/docs/en/release-info/migration-guides/openiddict-angular.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict-Angular.md
rename to docs/en/release-info/migration-guides/openiddict-angular.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict-Blazor-Server.md b/docs/en/release-info/migration-guides/openiddict-blazor-server.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict-Blazor-Server.md
rename to docs/en/release-info/migration-guides/openiddict-blazor-server.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict-Blazor.md b/docs/en/release-info/migration-guides/openiddict-blazor.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict-Blazor.md
rename to docs/en/release-info/migration-guides/openiddict-blazor.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict-Mvc.md b/docs/en/release-info/migration-guides/openiddict-mvc.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict-Mvc.md
rename to docs/en/release-info/migration-guides/openiddict-mvc.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict-Step-by-Step.md b/docs/en/release-info/migration-guides/openiddict-step-by-step.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict-Step-by-Step.md
rename to docs/en/release-info/migration-guides/openiddict-step-by-step.md
diff --git a/docs/en/release-info/Migration-Guides/OpenIddict4-to-5.md b/docs/en/release-info/migration-guides/openiddict4-to-5.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/OpenIddict4-to-5.md
rename to docs/en/release-info/migration-guides/openiddict4-to-5.md
diff --git a/docs/en/release-info/Migration-Guides/pro/blazor-ui-3_3.md b/docs/en/release-info/migration-guides/pro/blazorui-3-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/blazor-ui-3_3.md
rename to docs/en/release-info/migration-guides/pro/blazorui-3-3.md
diff --git a/docs/en/release-info/migration-guides/pro/index.md b/docs/en/release-info/migration-guides/pro/index.md
new file mode 100644
index 0000000000..86e46aa3ba
--- /dev/null
+++ b/docs/en/release-info/migration-guides/pro/index.md
@@ -0,0 +1,18 @@
+# Migration Guides
+
+The following documents explain how to migrate your existing ABP Commercial applications. We write migration documents only if you need to take an action while upgrading your solution. Otherwise, you can easily upgrade your solution using the [abp update command](https://docs.abp.io/en/abp/latest/Upgrading).
+
+> **The following guides are only for paid license holders. Please also see the [ABP (open source) migration guides](../Index.md) while upgrading your solution.**
+
+* [8.0 to 8.1](v8_1.md)
+* [7.x to 8.0](v8_0.md)
+* [7.3 to 7.4](v7_4.md)
+* [7.1 to 7.2](v7_2.md)
+* [6.0 to 7.0](v7_0.md)
+* [5.3 to 6.0](v6_0.md)
+* [5.2 to 5.3](v5_3.md)
+* [5.x to 5.2](v5_2.md)
+* [4.x to 5.2 (microservice solution)](microservice-4_x_to_5_2.md)
+* [4.x to 4.3](v4_3.md)
+* [3.2 to 3.3](blazor-ui-3_3.md)
+
diff --git a/docs/en/release-info/Migration-Guides/pro/microservice-4_x_to_5_2.md b/docs/en/release-info/migration-guides/pro/microservice-4-x-to-5-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/microservice-4_x_to_5_2.md
rename to docs/en/release-info/migration-guides/pro/microservice-4-x-to-5-2.md
diff --git a/docs/en/release-info/migration-guides/pro/migrating-to-yarp.md b/docs/en/release-info/migration-guides/pro/migrating-to-yarp.md
new file mode 100644
index 0000000000..86f1fc4b05
--- /dev/null
+++ b/docs/en/release-info/migration-guides/pro/migrating-to-yarp.md
@@ -0,0 +1,927 @@
+# Migrating API Gateway from Ocelot to YARP
+
+This guide provides guidance for migrating your existing microservice application's API Gateway from [Ocelot](https://github.com/ThreeMammals/Ocelot) to [YARP](https://github.com/microsoft/reverse-proxy). Since YARP is available with ABP v8.0+, you will need to update your existing application in order to apply YARP changes.
+
+## History
+
+Until this version, ABP Commercial was using the [Ocelot](https://github.com/ThreeMammals/Ocelot) for the API Gateway, in the [Microservice Startup Template](https://docs.abp.io/en/commercial/latest/startup-templates/microservice/index). Since the **Ocelot** library is not actively maintained, we have searched for an alternative and decided to switch from Ocelot to [YARP](https://github.com/microsoft/reverse-proxy) for the API Gateway. YARP is maintained by Microsoft and is actively being developed and seems a better alternative than Ocelot and provides the same feature stack and even more.
+
+## YARP Migration Steps
+
+You should update various files in different projects to upgrade your the API Gateway from Ocelot to YARP. All of the required changes are listed below in different sections, please apply the following steps to upgrade from Ocelot to YARP.
+
+> Alternatively, you can create a Microservice Startup Template and compare your changes with the microservice template. It's recommended approach to ensure all the required changes have been done.
+
+### Shared Hosting Gateways Project
+
+* Remove the Ocelot packages and add `YARP` packages as follows:
+
+```diff
+
+-
+-
++
+
+```
+
+* Open the `*SharedHostingGatewaysModule.cs` and make the following changes:
+
+```diff
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ var configuration = context.Services.GetConfiguration();
+ var env = context.Services.GetHostingEnvironment();
+
+- var ocelotBuilder = context.Services.AddOcelot(configuration)
+- .AddPolly();
+
+- if (!env.IsProduction())
+- {
+- ocelotBuilder.AddDelegatingHandler(true);
+- }
+
++ context.Services.AddReverseProxy()
++ .LoadFromConfig(configuration.GetSection("ReverseProxy"));
+ }
+```
+
+* Update the `GatewayHostBuilderExtensions.cs` file as follows:
+
+```csharp
+using Microsoft.Extensions.Configuration;
+
+namespace Microsoft.Extensions.Hosting;
+
+public static class AbpHostingHostBuilderExtensions
+{
+ public const string AppYarpJsonPath = "yarp.json";
+
+ public static IHostBuilder AddYarpJson(
+ this IHostBuilder hostBuilder,
+ bool optional = true,
+ bool reloadOnChange = true,
+ string path = AppYarpJsonPath)
+ {
+ return hostBuilder.ConfigureAppConfiguration((_, builder) =>
+ {
+ builder.AddJsonFile(
+ path: AppYarpJsonPath,
+ optional: optional,
+ reloadOnChange: reloadOnChange
+ );
+ });
+ }
+}
+```
+
+* Delete the `OcelotConfiguration.cs` file from the solution.
+
+### Public Web Gateway Project
+
+* Remove the **ocelot.json** file and instead create a new **yarp.json** file and update its content as follows (in the root directory of the `PublicWebGateway` project):
+
+```json
+{
+ "ReverseProxy": {
+ "Routes": {
+ "AbpApi": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/abp/{**catch-all}"
+ }
+ },
+ "AdministrationSwagger": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/swagger-json/Administration/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ {
+ "PathRemovePrefix": "/swagger-json/Administration"
+ }
+ ]
+ },
+ "Account": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account/{**catch-all}"
+ }
+ },
+ "AuthServerSwagger": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ {
+ "PathRemovePrefix": "/swagger-json/AuthServer"
+ }
+ ]
+ },
+ "Product": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/api/product-service/{**catch-all}"
+ }
+ },
+ "ProductSwagger": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/swagger-json/Product/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ {
+ "PathRemovePrefix": "/swagger-json/Product"
+ }
+ ]
+ }
+ },
+ "Clusters": {
+ "AuthServer": {
+ "Destinations": {
+ "AuthServer": {
+ "Address": "https://localhost:44322/"
+ }
+ }
+ },
+ "Administration": {
+ "Destinations": {
+ "Administration": {
+ "Address": "https://localhost:44367/"
+ }
+ }
+ },
+ "Product": {
+ "Destinations": {
+ "Product": {
+ "Address": "https://localhost:44361/"
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+* Open the `Program.cs` file and make the following changes:
+
+```diff
+ builder.Host
+ .AddAppSettingsSecretsJson()
+- .AddOcelotJson()
++ .AddYarpJson()
+ .UseAutofac()
+ .UseSerilog();
+```
+
+* Open the module class of the `PublicWebGateway` project and update the `OnApplicationInitialization` method as follows:
+
+```diff
++ using Yarp.ReverseProxy.Configuration;
+
+ //other configurations...
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ var app = context.GetApplicationBuilder();
+ var env = context.GetEnvironment();
+ var configuration = context.GetConfiguration();
++ var proxyConfig = app.ApplicationServices.GetRequiredService().GetConfig();
+
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseCorrelationId();
+ app.UseStaticFiles();
++ app.UseCors();
++ app.UseRouting();
++ app.UseAuthorization();
+ app.UseSwagger();
++ app.UseAbpSwaggerUI(options => { ConfigureSwaggerUI(proxyConfig, options, configuration); });
+ app.UseAbpSerilogEnrichers();
++ app.UseRewriter(CreateSwaggerRewriteOptions());
+ app.UseEndpoints(endpoints => endpoints.MapReverseProxy());
+ }
+
++ private static void ConfigureSwaggerUI(
++ IProxyConfig proxyConfig,
++ SwaggerUIOptions options,
++ IConfiguration configuration)
++ {
++ foreach (var cluster in proxyConfig.Clusters)
++ {
++ options.SwaggerEndpoint($"/swagger-json/{cluster.ClusterId}/swagger/v1/swagger.json", $"{cluster.ClusterId} API");
++ }
+
++ options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
++ options.OAuthScopes(
++ "AdministrationService",
++ "AccountService",
++ "ProductService"
++ );
++ }
+
++ private static RewriteOptions CreateSwaggerRewriteOptions()
++ {
++ var rewriteOptions = new RewriteOptions();
++ rewriteOptions.AddRedirect("^(|\\|\\s+)$", "/swagger"); // Regex for "/" and "" (whitespace)
++ return rewriteOptions;
++ }
+```
+
+### Web Gateway Project
+
+* Remove the **ocelot.json** file and instead create a new **yarp.json** file and update its content as follows (in the root directory of the `WebGateway` project):
+
+```json
+{
+ "ReverseProxy": {
+ "Routes": {
+ "AbpApi": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/abp/{**catch-all}"
+ }
+ },
+ "SettingManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/setting-management/{**catch-all}"
+ }
+ },
+ "FeatureManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/feature-management/{**catch-all}"
+ }
+ },
+ "PermissionManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/permission-management/{**catch-all}"
+ }
+ },
+ "AuditLogging": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/audit-logging/{**catch-all}"
+ }
+ },
+ "LanguageManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/language-management/{**catch-all}"
+ }
+ },
+ "TextTemplateManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/text-template-management/{**catch-all}"
+ }
+ },
+ "LeptonThemeManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/lepton-theme-management/{**catch-all}"
+ }
+ },
+ "GDPR": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/gdpr/{**catch-all}"
+ }
+ },
+ "AdministrationSwagger": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/swagger-json/Administration/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Administration" }
+ ]
+ },
+ "Account": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account/{**catch-all}"
+ }
+ },
+ "AccountAdmin": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account-admin/{**catch-all}"
+ }
+ },
+ "AuthServerSwagger": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/AuthServer" }
+ ]
+ },
+ "Identity": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/api/identity/{**catch-all}"
+ }
+ },
+ "OpenIddict": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/api/openiddict/{**catch-all}"
+ }
+ },
+ "IdentitySwagger": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/swagger-json/Identity/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Identity" }
+ ]
+ },
+ "Saas": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/saas/{**catch-all}"
+ }
+ },
+ "Payment": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/payment/{**catch-all}"
+ }
+ },
+ "PaymentAdmin": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/payment-admin/{**catch-all}"
+ }
+ },
+ "SaasSwagger": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/swagger-json/Saas/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Saas" }
+ ]
+ },
+ "Product": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/api/product-service/{**catch-all}"
+ }
+ },
+ "ProductSwagger": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/swagger-json/Product/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Product" }
+ ]
+ }
+ },
+ "Clusters": {
+ "AuthServer": {
+ "Destinations": {
+ "AuthServer": {
+ "Address": "https://localhost:44322/"
+ }
+ }
+ },
+ "Administration": {
+ "Destinations": {
+ "Administration": {
+ "Address": "https://localhost:44367/"
+ }
+ }
+ },
+ "Identity": {
+ "Destinations": {
+ "Identity": {
+ "Address": "https://localhost:44388/"
+ }
+ }
+ },
+ "Saas": {
+ "Destinations": {
+ "Saas": {
+ "Address": "https://localhost:44381/"
+ }
+ }
+ },
+ "Product": {
+ "Destinations": {
+ "Product": {
+ "Address": "https://localhost:44361/"
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+* Open the `Program.cs` file and make the change in the below:
+
+```diff
+ builder.Host
+ .AddAppSettingsSecretsJson()
+- .AddOcelotJson()
++ .AddYarpJson()
+ .UseAutofac()
+ .UseSerilog();
+```
+
+* Open the module class of the `WebGateway` project and update the `OnApplicationInitialization` method as follows:
+
+```diff
++ using Yarp.ReverseProxy.Configuration;
+
+ //other configurations...
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ var app = context.GetApplicationBuilder();
+ var env = context.GetEnvironment();
+ var configuration = context.GetConfiguration();
++ var proxyConfig = app.ApplicationServices.GetRequiredService().GetConfig();
+
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+
+ app.UseCorrelationId();
+ app.UseStaticFiles();
++ app.UseCors();
++ app.UseRouting();
++ app.UseAuthorization();
+ app.UseSwagger();
++ app.UseAbpSwaggerUI(options => { ConfigureSwaggerUI(proxyConfig, options, configuration); });
+ app.UseAbpSerilogEnrichers();
++ app.UseRewriter(CreateSwaggerRewriteOptions());
+ app.UseEndpoints(endpoints => endpoints.MapReverseProxy());
+ }
+
++ private static void ConfigureSwaggerUI(
++ IProxyConfig proxyConfig,
++ SwaggerUIOptions options,
++ IConfiguration configuration)
++ {
++ foreach (var cluster in proxyConfig.Clusters)
++ {
++ options.SwaggerEndpoint($"/swagger-json/{cluster.ClusterId}/swagger/v1/swagger.json", $"{cluster.ClusterId} API");
++ }
+
++ options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
++ options.OAuthScopes(
++ "AdministrationService",
++ "AccountService",
++ "IdentityService",
++ "SaasService",
++ "ProductService"
++ );
++ }
+
++ private static RewriteOptions CreateSwaggerRewriteOptions()
++ {
++ var rewriteOptions = new RewriteOptions();
++ rewriteOptions.AddRedirect("^(|\\|\\s+)$", "/swagger"); // Regex for "/" and "" (whitespace)
++ return rewriteOptions;
++ }
+```
+
+### Chart Updates
+
+* Update the `gateway-web-public-configmap.yaml` as follows (_etc/k8s//charts/gateway-web-public/templates/gateway-web-public-configmap.yaml_):
+
+```yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {%{{{ .Release.Name }}}%}-{%{{{ .Chart.Name }}}%}-configmap
+data:
+ yarp.json: |-
+ {
+ "ReverseProxy": {
+ "Routes": {
+ "AbpApi": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/abp/{**catch-all}"
+ }
+ },
+ "AdministrationSwagger": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/swagger-json/Administration/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Administration" }
+ ]
+ },
+ "Account": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account/{**catch-all}"
+ }
+ },
+ "AuthServerSwagger": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/AuthServer" }
+ ]
+ },
+ "Product": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/api/product-service/{**catch-all}"
+ }
+ },
+ "ProductSwagger": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/swagger-json/Product/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Product" }
+ ]
+ }
+ },
+ "Clusters": {
+ "AuthServer": {
+ "Destinations": {
+ "AuthServer": {
+ "Address": "{%{{{ .Values.reRoutes.accountService.url }}}%}"
+ }
+ }
+ },
+ "Administration": {
+ "Destinations": {
+ "Administration": {
+ "Address": "{%{{{ .Values.reRoutes.administrationService.url }}}%}"
+ }
+ }
+ },
+ "Product": {
+ "Destinations": {
+ "Product": {
+ "Address": "{%{{{ .Values.reRoutes.productService.url }}}%}"
+ }
+ }
+ }
+ }
+ }
+ }
+```
+
+* Make the following changes in the `gateway-web-public-deployment.yaml` file (_etc/k8s//charts/gateway-web-public/templates/gateway-web-public-deployment.yaml_):
+
+```diff
+- mountPath: /app/ocelot.json
++ mountPath: /app/yarp.json
+- subPath: ocelot.json
++ subPath: yarp.json
+```
+
+* Update the `values.yaml` file as follows (_etc/k8s//charts/gateway-web-public/values.yaml_):
+
+```yaml
+config:
+ selfUrl: # https://gateway-public.myprojectname.dev
+ corsOrigins: # https://myprojectname-st-gateway-web,https://myprojectname-st-gateway-public-web
+ authServer:
+ authority: # http://myprojectname-st-authserver
+ requireHttpsMetadata: # "false"
+ metadataAddress: # https://authserver.myprojectname.dev/.well-known/openid-configuration
+ swaggerClientId: # WebGateway_Swagger
+ dotnetEnv: Staging
+ redisHost: #
+ rabbitmqHost: #
+ elasticsearchUrl: #
+ AbpLicenseCode: #
+
+reRoutes:
+ accountService:
+ url: http://myprojectname-st-authserver
+ saasService:
+ url: http://saas-st-administration
+ administrationService:
+ url: http://myprojectname-st-administration
+ productService:
+ url: http://myprojectname-st-product
+
+ingress:
+ host: gateway-public.myprojectname.dev
+ tlsSecret: myprojectname-tls
+
+image:
+ repository: mycompanyname/myprojectname-gateway-web-public
+ tag: latest
+ pullPolicy: IfNotPresent
+
+env: {}
+```
+
+* Update the `gateway-web-configmap.yaml` as follows (_etc/k8s//charts/gateway-web/templates/gateway-web-configmap.yaml_):
+
+```yaml
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: {%{{{ .Release.Name }}}%}-{%{{{ .Chart.Name }}}%}-configmap
+data:
+ yarp.json: |-
+ {
+ "ReverseProxy": {
+ "Routes": {
+ "AbpApi": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/abp/{**catch-all}"
+ }
+ },
+ "SettingManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/setting-management/{**catch-all}"
+ }
+ },
+ "FeatureManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/feature-management/{**catch-all}"
+ }
+ },
+ "PermissionManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/permission-management/{**catch-all}"
+ }
+ },
+ "AuditLogging": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/audit-logging/{**catch-all}"
+ }
+ },
+ "LanguageManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/language-management/{**catch-all}"
+ }
+ },
+ "TextTemplateManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/text-template-management/{**catch-all}"
+ }
+ },
+ "LeptonThemeManagement": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/lepton-theme-management/{**catch-all}"
+ }
+ },
+ "GDPR": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/api/gdpr/{**catch-all}"
+ }
+ },
+ "AdministrationSwagger": {
+ "ClusterId": "Administration",
+ "Match": {
+ "Path": "/swagger-json/Administration/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Administration" }
+ ]
+ },
+ "Account": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account/{**catch-all}"
+ }
+ },
+ "AccountAdmin": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/api/account-admin/{**catch-all}"
+ }
+ },
+ "AuthServerSwagger": {
+ "ClusterId": "AuthServer",
+ "Match": {
+ "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/AuthServer" }
+ ]
+ },
+ "Identity": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/api/identity/{**catch-all}"
+ }
+ },
+ "OpenIddict": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/api/openiddict/{**catch-all}"
+ }
+ },
+ "IdentitySwagger": {
+ "ClusterId": "Identity",
+ "Match": {
+ "Path": "/swagger-json/Identity/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Identity" }
+ ]
+ },
+ "Saas": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/saas/{**catch-all}"
+ }
+ },
+ "Payment": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/payment/{**catch-all}"
+ }
+ },
+ "PaymentAdmin": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/api/payment-admin/{**catch-all}"
+ }
+ },
+ "SaasSwagger": {
+ "ClusterId": "Saas",
+ "Match": {
+ "Path": "/swagger-json/Saas/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Saas" }
+ ]
+ },
+ "Product": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/api/product-service/{**catch-all}"
+ }
+ },
+ "ProductSwagger": {
+ "ClusterId": "Product",
+ "Match": {
+ "Path": "/swagger-json/Product/swagger/v1/swagger.json"
+ },
+ "Transforms": [
+ { "PathRemovePrefix": "/swagger-json/Product" }
+ ]
+ }
+ },
+ "Clusters": {
+ "AuthServer": {
+ "Destinations": {
+ "AuthServer": {
+ "Address": "{%{{{ .Values.reRoutes.accountService.url }}}%}"
+ }
+ }
+ },
+ "Administration": {
+ "Destinations": {
+ "Administration": {
+ "Address": "{%{{{ .Values.reRoutes.administrationService.url }}}%}"
+ }
+ }
+ },
+ "Identity": {
+ "Destinations": {
+ "Identity": {
+ "Address": "{%{{{ .Values.reRoutes.identityService.url }}}%}"
+ }
+ }
+ },
+ "Saas": {
+ "Destinations": {
+ "Saas": {
+ "Address": "{%{{{ .Values.reRoutes.saasService.url }}}%}"
+ }
+ }
+ },
+ "Product": {
+ "Destinations": {
+ "Product": {
+ "Address": "{%{{{ .Values.reRoutes.productService.url }}}%}"
+ }
+ }
+ }
+ }
+ }
+ }
+```
+
+* Make the following changes in the `gateway-web-deployment.yaml` file (_etc/k8s//charts/gateway-web/templates/gateway-web-deployment.yaml_):
+
+```diff
+- mountPath: /app/ocelot.json
++ mountPath: /app/yarp.json
+- subPath: ocelot.json
++ subPath: yarp.json
+```
+
+* Update the `values.yaml` file as follows (_etc/k8s//charts/gateway-web/values.yaml_):
+
+```yaml
+config:
+ selfUrl: # https://gateway-web.myprojectname.dev
+ corsOrigins: # https://myprojectname-st-angular
+ globalConfigurationBaseUrl: # http://myprojectname-st-gateway-web
+ authServer:
+ authority: # http://myprojectname-st-authserver
+ requireHttpsMetadata: # "false"
+ metadataAddress: # https://authserver.myprojectname.dev/.well-known/openid-configuration
+ swaggerClientId: # WebGateway_Swagger
+ dotnetEnv: #
+ redisHost: #
+ rabbitmqHost: #
+ elasticsearchUrl: #
+ AbpLicenseCode: #
+
+reRoutes:
+ accountService:
+ url: http://myprojectname-st-authserver
+ saasService:
+ url: http://saas-st-administration
+ administrationService:
+ url: http://myprojectname-st-administration
+ identityService:
+ url: http://myprojectname-st-identity
+ productService:
+ url: http://myprojectname-st-product
+ingress:
+ host: # gateway-web.myprojectname.dev
+ tlsSecret: myprojectname-tls
+
+image:
+ repository: mycompanyname/myprojectname-gateway-web
+ tag: latest
+ pullPolicy: IfNotPresent
+
+env: {}
+```
+
+* Update the `values.yaml` file as follows (_etc/k8s//values.yaml_):
+
+```diff
+- globalConfigurationBaseUrl: http://myprojectname-st-gateway-web
+
+reRoutes:
+ accountService:
++ url: http://myprojectname-st-authserver
+- dns: https://authserver.myprojectname.dev
+- schema: http
+- host: myprojectname-st-authserver
+- port: 80
+ identityService:
++ url: http://myprojectname-st-identity
+- dns: https://identity.myprojectname.dev
+- schema: http
+- host: myprojectname-st-identity
+- port: 80
+ administrationService:
++ url: http://myprojectname-st-administration
+- dns: https://administration.myprojectname.dev
+- schema: http
+- host: myprojectname-st-administration
+- port: 80
+ saasService:
++ url: http://myprojectname-st-saas
+- dns: https://saas.myprojectname.dev
+- schema: http
+- host: myprojectname-st-saas
+- port: 80
+ productService:
++ url: http://myprojectname-st-product
+- dns: https://product.myprojectname.dev
+- schema: http
+- host: myprojectname-st-product
+- port: 80
+```
+
+## See Also
+
+* [ABP Commercial Version 8.0 Migration Guide](v8_0.md)
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-angular.md b/docs/en/release-info/migration-guides/pro/openiddict-angular.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-angular.md
rename to docs/en/release-info/migration-guides/pro/openiddict-angular.md
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-blazor-server.md b/docs/en/release-info/migration-guides/pro/openiddict-blazor-server.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-blazor-server.md
rename to docs/en/release-info/migration-guides/pro/openiddict-blazor-server.md
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-blazor.md b/docs/en/release-info/migration-guides/pro/openiddict-blazor.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-blazor.md
rename to docs/en/release-info/migration-guides/pro/openiddict-blazor.md
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-microservice.md b/docs/en/release-info/migration-guides/pro/openiddict-microservice.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-microservice.md
rename to docs/en/release-info/migration-guides/pro/openiddict-microservice.md
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-mvc.md b/docs/en/release-info/migration-guides/pro/openiddict-mvc.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-mvc.md
rename to docs/en/release-info/migration-guides/pro/openiddict-mvc.md
diff --git a/docs/en/release-info/Migration-Guides/pro/openIddict-step-by-step.md b/docs/en/release-info/migration-guides/pro/openiddict-step-by-step.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/openIddict-step-by-step.md
rename to docs/en/release-info/migration-guides/pro/openiddict-step-by-step.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v4_3.md b/docs/en/release-info/migration-guides/pro/v4-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v4_3.md
rename to docs/en/release-info/migration-guides/pro/v4-3.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v5_2.md b/docs/en/release-info/migration-guides/pro/v5-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v5_2.md
rename to docs/en/release-info/migration-guides/pro/v5-2.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v5_3.md b/docs/en/release-info/migration-guides/pro/v5-3.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v5_3.md
rename to docs/en/release-info/migration-guides/pro/v5-3.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v6_0.md b/docs/en/release-info/migration-guides/pro/v6-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v6_0.md
rename to docs/en/release-info/migration-guides/pro/v6-0.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v6.0_identity_pro.md b/docs/en/release-info/migration-guides/pro/v6.0-identity-pro.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v6.0_identity_pro.md
rename to docs/en/release-info/migration-guides/pro/v6.0-identity-pro.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v7_0.md b/docs/en/release-info/migration-guides/pro/v7-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v7_0.md
rename to docs/en/release-info/migration-guides/pro/v7-0.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v7_2.md b/docs/en/release-info/migration-guides/pro/v7-2.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v7_2.md
rename to docs/en/release-info/migration-guides/pro/v7-2.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v7_4.md b/docs/en/release-info/migration-guides/pro/v7-4.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v7_4.md
rename to docs/en/release-info/migration-guides/pro/v7-4.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v8_0.md b/docs/en/release-info/migration-guides/pro/v8-0.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v8_0.md
rename to docs/en/release-info/migration-guides/pro/v8-0.md
diff --git a/docs/en/release-info/Migration-Guides/pro/v8_1.md b/docs/en/release-info/migration-guides/pro/v8-1.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/pro/v8_1.md
rename to docs/en/release-info/migration-guides/pro/v8-1.md
diff --git a/docs/en/release-info/Migration-Guides/Upgrading-Startup-Template.md b/docs/en/release-info/migration-guides/upgrading-startup-template.md
similarity index 100%
rename from docs/en/release-info/Migration-Guides/Upgrading-Startup-Template.md
rename to docs/en/release-info/migration-guides/upgrading-startup-template.md
diff --git a/docs/en/release-info/Nightly-Builds.md b/docs/en/release-info/nightly-builds.md
similarity index 100%
rename from docs/en/release-info/Nightly-Builds.md
rename to docs/en/release-info/nightly-builds.md
diff --git a/docs/en/release-info/Previews.md b/docs/en/release-info/previews.md
similarity index 100%
rename from docs/en/release-info/Previews.md
rename to docs/en/release-info/previews.md
diff --git a/docs/en/release-info/Road-Map.md b/docs/en/release-info/road-map.md
similarity index 100%
rename from docs/en/release-info/Road-Map.md
rename to docs/en/release-info/road-map.md
diff --git a/docs/en/release-info/Upgrading.md b/docs/en/release-info/upgrading.md
similarity index 100%
rename from docs/en/release-info/Upgrading.md
rename to docs/en/release-info/upgrading.md
diff --git a/docs/en/samples/easy-crm.md b/docs/en/samples/easy-crm.md
new file mode 100644
index 0000000000..56678269b5
--- /dev/null
+++ b/docs/en/samples/easy-crm.md
@@ -0,0 +1,44 @@
+# Easy CRM - Sample ABP Project
+
+This is a sample solution developed on top of ABP Commercial.
+
+
+
+## Download
+
+> **Note:** EasyCRM sample application is only for the **ABP Commercial customers**. Therefore, you need to have a commercial license to be able to download the source code.
+
+* You can download the complete source-code from [https://abp.io/api/download/samples/easy-crm](https://abp.io/Account/Login?returnUrl=/api/download/samples/easy-crm)
+
+## Demo
+
+Visit [easycrm.abp.io](http://easycrm.abp.io/) to see this sample application in action. The online demo is with the ASP.NET Core MVC / Razor Pages UI, while the sample project is available with the Angular UI and Blazor too, when you download its source code.
+
+## How To Run?
+
+When you download and open the zip file, you will see two folders:
+
+* **aspnet-core** folder contains the server side, the MVC (Razor Pages) UI and the Blazor UI.
+* **angular** folder contains the Angular UI.
+
+### Server Side / MVC (Razor Pages) Application
+
+* Open the solution (inside the aspnet-core folder) in **Visual Studio 2019** or later (or with another IDE that supports ASP.NET Core).
+* This project use `Sqlite`, the default database folder is located at appsettings (`"SqliteDbFolder": "sqliteDbs"`, this folder is located in the MVC project).
+* Open the `appsettings.json` file in the `Volo.EasyCrm.Web` application and set `"UseDynamicDatabase": "false"`.
+ > The MVC project is creating new database for each unique visitor. And the visitor id is stored at cookies. When you set `UseDynamicDatabase` as a `true`, you cannot run Blazor & Angular projects because they have no cookie implementation. Be aware it is set as `false` for running Blazor & Angular applications.
+* Run the `Volo.EasyCrm.Web` application.
+* You can login using `admin` as the user name and `1q2w3E*` as the password.
+* Enjoy and check the source code!
+
+### Angular UI
+
+* First, follow all the steps above to run the server side and seed the sample data.
+* Open a command prompt in the angular folder.
+* Run the `yarn` command to install NPM packages (requires the [Yarn](https://yarnpkg.com/) package manager).
+* Run the `yarn start` command to run the Angular application. It will automatically open the `localhost://4200` in your default browser once the application initialized.
+
+### Blazor UI
+
+* First, follow all the steps above to run the server side and seed the sample data.
+* Run the `Volo.EasyCrm.Blazor` application.
diff --git a/docs/en/Samples/eShopOnAbp/Index.md b/docs/en/samples/eshop-on-abp/index.md
similarity index 100%
rename from docs/en/Samples/eShopOnAbp/Index.md
rename to docs/en/samples/eshop-on-abp/index.md
diff --git a/docs/en/Samples/Index.md b/docs/en/samples/index.md
similarity index 100%
rename from docs/en/Samples/Index.md
rename to docs/en/samples/index.md
diff --git a/docs/en/Samples/Microservice-Demo.md b/docs/en/samples/microservice-demo.md
similarity index 100%
rename from docs/en/Samples/Microservice-Demo.md
rename to docs/en/samples/microservice-demo.md
diff --git a/docs/en/ui-themes/Index.md b/docs/en/ui-themes/index.md
similarity index 100%
rename from docs/en/ui-themes/Index.md
rename to docs/en/ui-themes/index.md
diff --git a/docs/en/ui-themes/lepton-x-lite/Angular.md b/docs/en/ui-themes/lepton-x-lite/angular.md
similarity index 100%
rename from docs/en/ui-themes/lepton-x-lite/Angular.md
rename to docs/en/ui-themes/lepton-x-lite/angular.md
diff --git a/docs/en/ui-themes/lepton-x-lite/AspNetCore.md b/docs/en/ui-themes/lepton-x-lite/aspnetcore.md
similarity index 100%
rename from docs/en/ui-themes/lepton-x-lite/AspNetCore.md
rename to docs/en/ui-themes/lepton-x-lite/aspnetcore.md
diff --git a/docs/en/ui-themes/lepton-x-lite/Blazor.md b/docs/en/ui-themes/lepton-x-lite/blazor.md
similarity index 100%
rename from docs/en/ui-themes/lepton-x-lite/Blazor.md
rename to docs/en/ui-themes/lepton-x-lite/blazor.md
diff --git a/docs/en/ui-themes/lepton-x-lite/Index.md b/docs/en/ui-themes/lepton-x-lite/index.md
similarity index 100%
rename from docs/en/ui-themes/lepton-x-lite/Index.md
rename to docs/en/ui-themes/lepton-x-lite/index.md