• 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

Procedure

1

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.

2

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 update on 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.

3

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?.