@@ -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