- Task
- Version · 6.0
- Create
Set up your changelog structure
Last updated: September 29, 2026
After generating your initial changelog, organizing your changelogs properly is essential to keep your project maintainable as it grows. Follow these steps to set up a root changelog and organize your nested changelogs for scalability and easier collaboration.
Before you begin
Make sure you've installed Liquibase and can run
liquibasefrom your command line.Connect your database to Liquibase. You'll need to follow the integration guide for your specific database.
If you have an existing database, you'll also need to generate your changelog from your existing database.
Procedure
Create a changelog folder.
Create a dedicated folder inside your Liquibase project to store all your changelog files. This keeps your project organized.
Note: If you have a generated changelog file, you'll want to move it into this folder.
Set up your root changelog.
The root changelog is a master file that organizes and references all your other changelog files. It doesn't usually contain any changesets directly—instead, it includes other changelog files using include or includeAll tags.
Why this matters:
Scalability: As your project grows, you'll have multiple changelog files for different features, database objects, or releases. A root changelog keeps everything connected in one place.
Deployment control: You can run
liquibase updateon the root file to apply all changes, or update individual changelogs as needed.Version tracking: It helps source control tools (like Git) track changes more easily when changelogs are modular and organized.
Create the file and give it a name, such as changelog-root. Be sure to use the file extension type you'd like to use, such as changelog-root.xml, changelog-root.json, changelog-root.yaml, or changelog-root.sql.
Choose how to organize your changes.
Decide how the changelogs inside your folder are organized. There are three strategies, each with its own guide:
Organize changes by object — one changelog per database object type.
Organize changes by release — one changelog per release or sprint.
Let generate-changelog build your structure — have the command lay out a by-object structure for you.
Whichever you choose, connect the changelogs to your root changelog with include or includeAll so one update run deploys everything in order.
Run Liquibase from your project root (or set search-path) so relative paths resolve consistently everywhere. If files aren’t being found, see How does Liquibase find files?.