# v4 code migration: Back end overview
This back end code migration overview is part of the v4 code migration guide.
Most of the back end of Strapi has been entirely rewritten in Strapi v4:
- The core features of a Strapi v4 server (routes, policies, controllers, and services) use factory functions. The new files can be easily created with the interactive
- There is a clear distinction in Strapi v4 between policies and middlewares, which leads to the introduction of route middlewares.
Migrating the back end of a Strapi application to v4 requires updating all of these core features:
Optionally, depending on your usage of these features in Strapi v3, you might also need to migrate:
The dedicated short guides listed in this back end code migration guide are not exhaustive resources for the v4 back end customization features, which are described in the back end customization documentation.
Once the back end of Strapi has been migrated to v4, you can proceed to migrating the front end.