@@ -17,7 +17,7 @@ Once a Change is deployed, never modify it. Create new Changes for corrections.
1717``` java
1818// Modifying an existing Change after deployment
1919@Change (id = " add-user-field" , author = " team" ) // order extracted from filename
20- public class _20250923_01_AddUserField {
20+ public class _0001__AddUserField {
2121 @Apply
2222 public void apply (MongoDatabase db ) {
2323 // Original: db.getCollection("users").updateMany(/* add field */)
@@ -30,7 +30,7 @@ public class _20250923_01_AddUserField {
3030``` java
3131// Keep the original unchanged
3232@Change (id = " add-user-field" , author = " team" ) // order extracted from filename
33- public class _20250923_01_AddUserField {
33+ public class _0001__AddUserField {
3434 @Apply
3535 public void apply (MongoDatabase db ) {
3636 // Original logic remains unchanged
@@ -39,7 +39,7 @@ public class _20250923_01_AddUserField {
3939
4040// Create a new Change for corrections
4141@Change (id = " fix-user-field-values" , author = " team" ) // order extracted from filename
42- public class _20250923_02_FixUserFieldValues {
42+ public class _0002__FixUserFieldValues {
4343 @Apply
4444 public void apply (MongoDatabase db ) {
4545 // Correction logic
@@ -83,7 +83,7 @@ Every Change must have a `@Rollback` method, regardless of target system type.
8383** Example with comprehensive rollback:**
8484``` java
8585@Change (id = " setup-user-indexes" , author = " db-team" ) // order extracted from filename
86- public class _20250923_01_SetupUserIndexes {
86+ public class _0001__SetupUserIndexes {
8787
8888 @Apply
8989 public void apply (MongoDatabase database ) {
@@ -127,7 +127,7 @@ Each Change should address one logical change. Avoid combining unrelated operati
127127** ❌ Avoid mixing concerns:**
128128``` java
129129@Change (id = " big-refactor" , author = " team" ) // order extracted from filename
130- public class _20250923_01_BigRefactor {
130+ public class _0001__BigRefactor {
131131 @Apply
132132 public void apply (MongoDatabase db , KafkaProducer producer ) {
133133 // Adding user field
@@ -146,13 +146,13 @@ public class _20250923_01_BigRefactor {
146146``` java
147147@TargetSystem (" user-database" )
148148@Change (id = " add-user-status" , author = " team" ) // order extracted from filename
149- public class _20250923_01_AddUserStatus {
149+ public class _0001__AddUserStatus {
150150 // Focus: User schema change only
151151}
152152
153153@TargetSystem (" kafka-events" )
154154@Change (id = " create-user-topic" , author = " team" ) // order extracted from filename
155- public class _20250923_01_CreateUserTopic {
155+ public class _0001__CreateUserTopic {
156156 // Focus: Kafka topic creation only
157157}
158158```
@@ -166,7 +166,7 @@ Make operations safe to re-run whenever possible.
166166** Example: Idempotent field addition:**
167167``` java
168168@Change (id = " add-user-preferences" , author = " team" ) // order extracted from filename
169- public class _20250923_01_AddUserPreferences {
169+ public class _0001__AddUserPreferences {
170170
171171 @Apply
172172 public void apply (MongoDatabase database ) {
@@ -240,35 +240,33 @@ public void removeEmailIndexAndRevertSchema(MongoDatabase db) { }
240240
241241** File names:**
242242- Use ` _ORDER_DescriptiveName ` format where ORDER is extracted between first and last underscores
243- - ** Recommended format** : ` YYYYMMDD_NN ` where:
244- - YYYY = year, MM = month, DD = day
245- - NN = sequence number (01-99) for changes on the same day
243+ - ** Recommended format for order** : ` NNNN ` with left-padding zeros (e.g., ` 0001 ` , ` 0002 ` , ` 0010 ` )
246244- When using this naming pattern, the order in ` @Change ` annotation or YAML is optional
247245- Use PascalCase for class names
248246
249247** Good examples:**
250248```
251- _20250923_01_CreateUserIndexes .java
252- _20250923_02_MigrateUserData .java
253- _20250924_01_AddUserPreferences .java
254- _20250925_01_OptimizeUserQueries .java
255- _20250930_01_MigrateToNewFormat .yaml
249+ _0001__CreateUserIndexes .java
250+ _0002__MigrateUserData .java
251+ _0002__AddUserPreferences .java
252+ _0005__OptimizeUserQueries .java
253+ _0004__MigrateToNewFormat .yaml
256254```
257255
258256:::tip Recommendation
259- We recommend specifying the order in the file/class name using the ` YYYYMMDD_NN ` format:
257+ We recommend specifying the order in the file/class name using the ` NN ` format:
260258
261259** Benefits:**
262- - ** Natural chronological sorting ** - Files automatically sort by date in folders
263- - ** Clear timeline visibility ** - Instantly see when changes were created
264- - ** Practical daily limit ** - 99 changes per day is more than sufficient
265- - ** Easy identification** - Quick visual scan shows change history
260+ - ** Simple and clear ** - Easy to understand and implement
261+ - ** Natural sorting ** - Files automatically sort numerically
262+ - ** No complexity ** - Just sequential numbering
263+ - ** Easy identification** - Quick visual scan shows execution order
266264- ** No annotation needed** - Order is extracted from filename
267265
268266Examples:
269- - ` _20250923_01_CreateUserTable .java` → order: "20250923_01 " (no need for order in @Change )
270- - ` _20250923_02_MigrateData .yaml` → order: "20250923_02 " (no need for order in YAML)
271- - ` _20250924_01_AddIndexes .java` → order: "20250924_01 "
267+ - ` _0001__CreateUserTable .java` → order: "0001 " (no need for order in @Change )
268+ - ` _0002__MigrateData .yaml` → order: "0002 " (no need for order in YAML)
269+ - ` _0004__AddIndexes .java` → order: "0004 "
272270:::
273271
274272
@@ -298,11 +296,11 @@ Changes should be organized chronologically by their order within stages. If you
298296
299297```
300298src/main/java/com/company/changes/
301- ├── _20250923_01_CreateUserCollection .java
302- ├── _20250923_02_AddUserIndexes .java
303- ├── _20250924_01_MigrateUserData .java
304- ├── _20250924_02_CreateOrdersTable .java
305- └── _20250925_01_AddOrderStatusColumn .java
299+ ├── _0001__CreateUserCollection .java
300+ ├── _0002__AddUserIndexes .java
301+ ├── _0003__MigrateUserData .java
302+ ├── _0004__CreateOrdersTable .java
303+ └── _0005__AddOrderStatusColumn .java
306304```
307305
308306## Testing and validation
@@ -318,7 +316,7 @@ public void testUserMigrationChange() {
318316 MongoDatabase testDb = getTestDatabase();
319317 insertTestUsers(testDb);
320318
321- var change = new _20250923_01_MigrateUsers ();
319+ var change = new _0001__MigrateUsers ();
322320
323321 // Act - Test execution
324322 change. execute(testDb);
0 commit comments