@cap-js/change-tracking 1.1.3 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +45 -71
  3. package/_i18n/i18n.properties +12 -20
  4. package/_i18n/i18n_ar.properties +3 -3
  5. package/_i18n/i18n_bg.properties +3 -3
  6. package/_i18n/i18n_cs.properties +3 -3
  7. package/_i18n/i18n_da.properties +3 -3
  8. package/_i18n/i18n_de.properties +3 -3
  9. package/_i18n/i18n_el.properties +3 -3
  10. package/_i18n/i18n_en.properties +3 -3
  11. package/_i18n/i18n_en_US_saptrc.properties +3 -32
  12. package/_i18n/i18n_es.properties +3 -3
  13. package/_i18n/i18n_es_MX.properties +3 -3
  14. package/_i18n/i18n_fi.properties +3 -3
  15. package/_i18n/i18n_fr.properties +3 -3
  16. package/_i18n/i18n_he.properties +3 -3
  17. package/_i18n/i18n_hr.properties +3 -3
  18. package/_i18n/i18n_hu.properties +3 -3
  19. package/_i18n/i18n_it.properties +3 -3
  20. package/_i18n/i18n_ja.properties +3 -3
  21. package/_i18n/i18n_kk.properties +3 -3
  22. package/_i18n/i18n_ko.properties +3 -3
  23. package/_i18n/i18n_ms.properties +3 -3
  24. package/_i18n/i18n_nl.properties +3 -3
  25. package/_i18n/i18n_no.properties +3 -3
  26. package/_i18n/i18n_pl.properties +3 -3
  27. package/_i18n/i18n_pt.properties +3 -3
  28. package/_i18n/i18n_ro.properties +3 -3
  29. package/_i18n/i18n_ru.properties +3 -3
  30. package/_i18n/i18n_sh.properties +3 -3
  31. package/_i18n/i18n_sk.properties +3 -3
  32. package/_i18n/i18n_sl.properties +3 -3
  33. package/_i18n/i18n_sv.properties +3 -3
  34. package/_i18n/i18n_th.properties +3 -3
  35. package/_i18n/i18n_tr.properties +3 -3
  36. package/_i18n/i18n_uk.properties +3 -3
  37. package/_i18n/i18n_vi.properties +3 -3
  38. package/_i18n/i18n_zh_CN.properties +3 -3
  39. package/_i18n/i18n_zh_TW.properties +3 -3
  40. package/cds-plugin.js +17 -260
  41. package/index.cds +199 -75
  42. package/lib/TriggerCQN2SQL.js +42 -0
  43. package/lib/h2/java-codegen.js +843 -0
  44. package/lib/h2/register.js +27 -0
  45. package/lib/h2/triggers.js +42 -0
  46. package/lib/hana/composition.js +250 -0
  47. package/lib/hana/register.js +28 -0
  48. package/lib/hana/sql-expressions.js +224 -0
  49. package/lib/hana/triggers.js +254 -0
  50. package/lib/localization.js +59 -115
  51. package/lib/model-enhancer.js +266 -0
  52. package/lib/postgres/composition.js +191 -0
  53. package/lib/postgres/register.js +44 -0
  54. package/lib/postgres/sql-expressions.js +271 -0
  55. package/lib/postgres/triggers.js +115 -0
  56. package/lib/skipHandlers.js +34 -0
  57. package/lib/sqlite/composition.js +235 -0
  58. package/lib/sqlite/register.js +28 -0
  59. package/lib/sqlite/sql-expressions.js +238 -0
  60. package/lib/sqlite/triggers.js +164 -0
  61. package/lib/utils/change-tracking.js +394 -0
  62. package/lib/utils/composition-helpers.js +67 -0
  63. package/lib/utils/entity-collector.js +297 -0
  64. package/lib/utils/session-variables.js +278 -0
  65. package/lib/utils/trigger-utils.js +94 -0
  66. package/package.json +57 -39
  67. package/lib/change-log.js +0 -575
  68. package/lib/entity-helper.js +0 -216
  69. package/lib/format-options.js +0 -66
  70. package/lib/template-processor.js +0 -115
package/CHANGELOG.md CHANGED
@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](http://semver.org/).
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/).
6
6
 
7
- ## Version 1.1.4 - TBD
7
+ ## Version 2.0.0 - TBD
8
8
 
9
9
  ### Added
10
10
 
@@ -12,6 +12,41 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
12
12
 
13
13
  ### Changed
14
14
 
15
+ ## Version 2.0.0-beta - 27.02.26
16
+
17
+ ### Added
18
+ - Trigger generation for SQLite, HANA, Postgres and H2 to perform change tracking on a database level
19
+ - Allow grouping of changes via new `transactionID` column
20
+ - Added `valueChangedFromLabel` and `valueChangedToLabel` to `sap.changelog.Changes` for localized labels
21
+ - Allow change tracking skip via session variables for entire transactions, entities, elements (`ct.skip`)
22
+
23
+ ### Fixed
24
+ - Performance issues when working with entities that include a large number of fields and children
25
+ - Creation of changelogs at bulk operations
26
+ - Fixed search and sort functionality on the `ChangeView`
27
+ - `LargeString` are truncated and don't lead to failing insert
28
+ - Supports change tracking with every kind of update operation
29
+
30
+ ### Changed
31
+ - Switch from event handler registration to native database triggers for change capture mechanism
32
+ - Removed table entity `sap.changelog.ChangeLog` and flattened into `sap.changelog.Changes`
33
+ - Display changes with a Tree Table
34
+ - Modifications on `sap.changelog.Changes`
35
+ - Removed `serviceEntityPath`, `keys` and foreign key `changeLog`
36
+ - Renamed `entityID` to `objectID`
37
+ - Renamed `parentEntityID` to `rootObjectID` and `parentKey` to `rootEntityKey`
38
+ - Added `entityKey`, `createdAt` and `createdBy` from deleted entity `sap.changelog.ChangeLog`
39
+ - Added `rootEntity` field
40
+ - Localization is performed on database level and therefore the table `sap.changelog.i18nKeys` that stores localized labels was added
41
+ - Expose localized label fields on `sap.changelog.ChangeView`
42
+
43
+ ## Version 1.1.4 - 03.12.25
44
+
45
+ ### Fixed
46
+ - Server no longer crashes when after a DB migration the service name or attribute name change
47
+ - Fix crash when applications uses feature toogles or extensibility
48
+
49
+
15
50
  ## Version 1.1.3 - 27.10.25
16
51
 
17
52
  ### Changed
package/README.md CHANGED
@@ -5,23 +5,7 @@ a [CDS plugin](https://cap.cloud.sap/docs/node.js/cds-plugins#cds-plugin-package
5
5
  [![REUSE status](https://api.reuse.software/badge/github.com/cap-js/change-tracking)](https://api.reuse.software/info/github.com/cap-js/change-tracking)
6
6
 
7
7
  > [!IMPORTANT]
8
- > Following the CAP best practices, the new release now requires CDS8 or CDS9 as minimum versions. If you want to use the plugin with an older version of CAP (CDS7), you will need to manually update the peer dependency in `package.json`. Please be aware that there will be no support for this version of the plugin with a CDS version below 8!
9
-
10
- > [!IMPORTANT]
11
- > This release establishes support for multi-tenant deployments using MTX and extensibility.
12
- >
13
- > To achieve this, the code was modified significantly. While we tested extensively, there still may be glitches or unexpected situations which we did not cover. So please **test this release extensively before applying it to productive** scenarios. Please also report any bugs or glitches, ideally by contributing a test-case for us to incorporate.
14
- >
15
- > See the changelog for a full list of changes
16
-
17
- > [!Warning]
18
- >
19
- > Please note that if your project is multi-tenant, then the CDS version must be higher than 8.6 and the mtx version higher than 2.5 for change-tracking to work.
20
-
21
- > [!Warning]
22
- >
23
- > When using multi-tenancy with MTX, the generated facets and associations have to be created by the model provider of the MTX component. Therefore, the plugin also must be added to the `package.json` of the MTX sidecar.
24
- >Although we tested this scenario extensively, there still might be cases where the automatic generation will not work as expected. If this happends in your scenario, we suggest using the `@changelog.disable_assoc` ([see here](#disable-association-to-changes-generation)) for all tracked entities and to add the association and facet manually to the service entity.
8
+ > With version 2.0 we completely refactored how changes are tracked. Previously the logic was completely on the application layer, which limited the types of queries trackable and came with major performance penalties in larger projects. With v2.0 the changes are now fully tracked on the database layer via database triggers. Furthermore with v2.0 the table definition for changes was cleaned up. This means any upgrade involves a schema change.
25
9
 
26
10
 
27
11
  ### Table of Contents
@@ -46,61 +30,37 @@ a [CDS plugin](https://cap.cloud.sap/docs/node.js/cds-plugins#cds-plugin-package
46
30
 
47
31
  ## Try it Locally
48
32
 
49
- In this guide, we use the [Incidents Management reference sample app](https://github.com/cap-js/incidents-app) as the base to add change tracking to.
50
-
51
- 1. [Prerequisites](#1-prerequisites)
52
- 2. [Setup](#2-setup)
53
- 3. [Annotations](#3-annotations)
54
- 4. [Testing](#4-testing)
55
-
56
- ### 1. Prerequisites
57
-
58
- Clone the repository and apply the step-by-step instructions:
59
-
60
- ```sh
61
- git clone https://github.com/cap-js/incidents-app
62
- cd incidents-app
63
- npm i
64
- ```
65
-
66
- **Alternatively**, you can clone the incidents app including the prepared enhancements for change-tracking:
67
-
68
- ```sh
69
- git clone https://github.com/cap-js/calesi --recursive
70
- cd calesi
71
- npm i
72
- ```
73
-
74
- ```sh
75
- cds w samples/change-tracking
76
- ```
77
-
78
- ### 2. Setup
79
-
80
33
  To enable change tracking, simply add this self-configuring plugin package to your project:
81
34
 
82
35
  ```sh
83
36
  npm add @cap-js/change-tracking
84
37
  ```
85
- If you use multi-tenancy, please add the plugin also to the MTX poroject(The mtx version must be higher than 2.5).
86
38
 
87
- ### 3. Annotations
39
+ > [!Warning]
40
+ >
41
+ > Please note that if your project is multi-tenant, then the CDS version must be higher than 8.6 and the mtx version higher than 2.5 for change-tracking to work.
42
+
43
+ > [!Warning]
44
+ >
45
+ > When using multi-tenancy with MTX, the generated database triggers, facets and associations have to be created by the model provider of the MTX component. Therefore, the plugin also must be added to the `package.json` of the MTX sidecar.
46
+
47
+ ### Annotations
88
48
 
89
49
  > [!WARNING]
90
50
  > Please be aware that [**sensitive** or **personal** data](https://cap.cloud.sap/docs/guides/data-privacy/annotations#annotating-personal-data) (annotated with `@PersonalData`) is not change tracked, since viewing the log allows users to circumvent [audit-logging](https://cap.cloud.sap/docs/guides/data-privacy/audit-logging#setup).
91
51
 
92
- All we need to do is to identify what should be change-tracked by annotating respective entities and elements in our model with the `@changelog` annotation. Following the [best practice of separation of concerns](https://cap.cloud.sap/docs/guides/domain-modeling#separation-of-concerns), we do so in a separate file _srv/change-tracking.cds_:
52
+ All you need to do is to identify what should be change-tracked by annotating respective entities and elements in our model with the `@changelog` annotation. Following the [best practice of separation of concerns](https://cap.cloud.sap/docs/guides/domain-modeling#separation-of-concerns), we do so in a separate file _db/change-tracking.cds_:
93
53
 
94
54
  ```cds
95
- using { ProcessorService } from './processor-service';
55
+ using { sap.capire.Incidents, sap.capire.Conversations } from './schema.cds';
96
56
 
97
- annotate ProcessorService.Incidents {
57
+ annotate Incidents {
98
58
  customer @changelog: [customer.name];
99
59
  title @changelog;
100
60
  status @changelog;
101
61
  }
102
62
 
103
- annotate ProcessorService.Conversations with @changelog: [author, timestamp] {
63
+ annotate Conversations with @changelog: [author, timestamp] {
104
64
  message @changelog @Common.Label: 'Message';
105
65
  }
106
66
  ```
@@ -109,7 +69,7 @@ The minimal annotation we require for change tracking is `@changelog` on element
109
69
 
110
70
  Additional identifiers or labels can be added to obtain more *human-readable* change records as described below.
111
71
 
112
- ### 4. Testing
72
+ ### Testing
113
73
 
114
74
  With the steps above, we have successfully set up change tracking for our reference application. Let's see that in action.
115
75
 
@@ -119,7 +79,7 @@ With the steps above, we have successfully set up change tracking for our refere
119
79
  cds watch
120
80
  ```
121
81
 
122
- 2. **Make a change** on your change-tracked elements. This change will automatically be persisted in the database table (`sap.changelog.ChangeLog`) and made available in a pre-defined view, namely the [Change History view](#change-history-view) for your convenience.
82
+ 2. **Make a change** on your change-tracked elements. This change will automatically be persisted in the database table (`sap.changelog.Changes`) and made available in a pre-defined view, namely the [Change History view](#change-history-view) for your convenience.
123
83
 
124
84
  #### Change History View
125
85
 
@@ -239,7 +199,24 @@ The system now uses the SAPUI5 default setting `![@UI.PartOfPreview]: true`, suc
239
199
 
240
200
  ### Disable UI Facet generation
241
201
 
242
- If you do not want the UI facet added to a specific UI, you can annotate the service entity with `@changelog.disable_facet`. This will disable the automatic addition of the UI faced to this specific entity, but also all views or further projections up the chain.
202
+ If you do not want the auto-provided UI facet for viewing changes, you can provide your own facet for the `changes` association in the `@UI.Facets` annotation and the plugin won't override it.
203
+
204
+ Furthermore if you annotate the association as not readable, the facet is also not added. You can achive this, like
205
+
206
+ ```cds
207
+ @Capabilities.NavigationRestrictions.RestrictedProperties : [
208
+ {
209
+ NavigationProperty : changes,
210
+ ReadRestrictions : {
211
+ Readable : false,
212
+ },
213
+ },
214
+ ]
215
+ entity SalesOrders {
216
+ key ID : Int16;
217
+ title : String @changelog;
218
+ }
219
+ ```
243
220
 
244
221
  ### Disable Association to Changes Generation
245
222
 
@@ -337,7 +314,6 @@ This section describes modelling cases for further reference, from simple to com
337
314
  - [Don'ts](#donts)
338
315
  - [Use Case 1: Don't trace changes for field(s) with `Association to many`](#use-case-1-dont-trace-changes-for-fields-with-association-to-many)
339
316
  - [Use Case 2: Don't trace changes for field(s) with *Unmanaged Association*](#use-case-2-dont-trace-changes-for-fields-with-unmanaged-association)
340
- - [Use Case 3: Don't trace changes for CUD on DB entity](#use-case-3-dont-trace-changes-for-cud-on-db-entity)
341
317
 
342
318
  ### Specify Object ID
343
319
 
@@ -622,25 +598,23 @@ entity AggregatedBusinessTransactionData @(cds.autoexpose) : cuid {
622
598
  }
623
599
  ```
624
600
 
625
- The reason is that: When deploying to relational databases, Associations are mapped to foreign keys. Yet, when mapped to non-relational databases they're just references. More details could be found in [Prefer Managed Associations](https://cap.cloud.sap/docs/guides/domain-models#managed-associations). In the above sample, there is no column for FootprintInventory in the table AggregatedBusinessTransactionData, but there is a navigation property FootprintInventoryof in OData entity metadata.
601
+ The reason is that: When deploying to relational databases, Associations are mapped to foreign keys. Yet, when mapped to non-relational databases they're just references. More details could be found in [Prefer Managed Associations](https://cap.cloud.sap/docs/guides/domain-models#managed-associations). In the above sample, there is no column for FootprintInventory in the table AggregatedBusinessTransactionData, but there is a navigation property FootprintInventory of in OData entity metadata.
626
602
 
627
- #### Use Case 3: Don't trace changes for CUD on DB entity
628
603
 
629
- ```cds
630
- this.on("UpdateActivationStatus", async (req) =>
631
- // PaymentAgreementsOutgoingDb is the DB entity
632
- await UPDATE.entity(PaymentAgreementsOutgoingDb)
633
- .where({ ID: paymentAgreement.ID })
634
- .set({ ActivationStatus_code: ActivationCodes.ACTIVE });
635
- );
636
- ```
604
+ ## Contributing
637
605
 
638
- The reason is that: Application level services are by design the only place where business logic is enforced. This by extension means, that it also is the only point where e.g. change-tracking would be enabled. The underlying method used to do change tracking is `req.diff` which is responsible to read the necessary before-image from the database, and this method is not available on DB level.
606
+ This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/cap-js/change-tracking/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).
639
607
 
608
+ ### Testing changes locally
640
609
 
641
- ## Contributing
610
+ In the `tests/bookshop` folder a full sample application is provided, against which you can test your changes:
642
611
 
643
- This project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/cap-js/change-tracking/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).
612
+ ```sh
613
+ git clone https://github.com/cap-js/change-tracking
614
+ npm i
615
+ cd tests/bookshop
616
+ cds watch
617
+ ```
644
618
 
645
619
  ## Code of Conduct
646
620
 
@@ -3,11 +3,7 @@
3
3
  #XTIT: Field Name
4
4
  Changes.ID=Changes ID
5
5
  #XTIT: Field Name
6
- Changes.entityID=Object ID
7
- #XTIT: Field Name
8
- Changes.parentEntityID=Parent Object ID
9
- #XTIT: Field Name
10
- Changes.parentKey=Parent Key
6
+ Changes.objectID=Object ID
11
7
  #XTIT: Field Name
12
8
  Changes.serviceEntityPath=Service Entity Path
13
9
  #XTIT: Field Name
@@ -23,32 +19,28 @@ Changes.valueChangedTo=New Value
23
19
  #XTIT: Field Name
24
20
  Changes.entity=Object Type
25
21
  #XTIT: Field Name
26
- Changes.serviceEntity=Service Object Type
27
- #XTIT: Field Name
28
22
  Changes.valueDataType=Value Data Type
29
-
30
- ## Change Log Table Fields Description##
31
- ########################################
32
- #XTIT: Field Name
33
- ChangeLog.entity=Entity
23
+ #XFLD: Field label
24
+ Changes.createdAt=Changed at
25
+ #XFLD: Field label
26
+ Changes.createdBy=Changed by
34
27
  #XTIT: Field Name
35
- ChangeLog.entityKey=Entity Key
28
+ Changes.transactionID=Transaction ID
36
29
  #XTIT: Field Name
37
- ChangeLog.serviceEntity=Service Entity
38
-
30
+ Changes.entityKey=Entity Key
39
31
 
40
32
  ## Change Log Modifications##
41
33
  ########################################
42
34
  #XFLD: Field label
43
- ChangeLog.modification.create=Create
35
+ Changes.modification.create=Create
44
36
  #XFLD: Field label
45
- ChangeLog.modification.update=Update
37
+ Changes.modification.update=Update
46
38
  #XFLD: Field label
47
- ChangeLog.modification.delete=Delete
39
+ Changes.modification.delete=Delete
48
40
  #XFLD: Field label
49
- ChangeLog.createdAt=Changed at
41
+ Changes.createdAt=Changed On
50
42
  #XFLD: Field label
51
- ChangeLog.createdBy=Changed by
43
+ Changes.createdBy=Changed By
52
44
 
53
45
  ## Change History Table##
54
46
  ########################################
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u0643\u064A\u0627\u0646 \u0627\u0644\u062E\u062F\u0645\
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u0625\u0646\u0634\u0627\u0621
43
+ Changes.modification.create=\u0625\u0646\u0634\u0627\u0621
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u062A\u062D\u062F\u064A\u062B
45
+ Changes.modification.update=\u062A\u062D\u062F\u064A\u062B
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u062D\u0630\u0641
47
+ Changes.modification.delete=\u062D\u0630\u0641
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u0648\u0642\u062A \u0627\u0644\u062A\u063A\u064A\u064A\u0631
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u0415\u0434\u0438\u043D\u0438\u0446\u0430 \u0437\u0430
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435
43
+ Changes.modification.create=\u0421\u044A\u0437\u0434\u0430\u0432\u0430\u043D\u0435
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F
45
+ Changes.modification.update=\u0410\u043A\u0442\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043D\u0435
47
+ Changes.modification.delete=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043D\u0435
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u041F\u0440\u043E\u043C\u0435\u043D\u0435\u043D\u043E \u0432
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entita slu\u017Eby
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Vytvo\u0159it
43
+ Changes.modification.create=Vytvo\u0159it
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Aktualizovat
45
+ Changes.modification.update=Aktualizovat
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Odstranit
47
+ Changes.modification.delete=Odstranit
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Zm\u011Bn\u011Bno v
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Serviceentitet
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Opret
43
+ Changes.modification.create=Opret
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Opdater
45
+ Changes.modification.update=Opdater
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Slet
47
+ Changes.modification.delete=Slet
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u00C6ndret kl.
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Service-Entit\u00E4t
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Anlegen
43
+ Changes.modification.create=Anlegen
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Aktualisieren
45
+ Changes.modification.update=Aktualisieren
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=L\u00F6schen
47
+ Changes.modification.delete=L\u00F6schen
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Ge\u00E4ndert am
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u039F\u03BD\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1 \u03A5\
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1
43
+ Changes.modification.create=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u0395\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7
45
+ Changes.modification.update=\u0395\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE
47
+ Changes.modification.delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u0386\u03BB\u03BB\u03B1\u03BE\u03B5 \u03C3\u03C4\u03B9\u03C2
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Service Entity
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Create
43
+ Changes.modification.create=Create
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Update
45
+ Changes.modification.update=Update
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Delete
47
+ Changes.modification.delete=Delete
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Changed at
50
50
  #XFLD: Field label
@@ -1,55 +1,26 @@
1
- ## Change Table Fields Description##
2
- ####################################
3
- #XTIT: Field Name
4
1
  Changes.ID=VfK41Fkk0DbVUFpSXQ8AqA_Changes ID
5
- #XTIT: Field Name
6
2
  Changes.entityID=ZiKVAYEIaFE0mFC3IeEFbg_Object ID
7
- #XTIT: Field Name
8
3
  Changes.parentEntityID=rnkgCvsaOC/hCPg0vF5EwA_Parent Object ID
9
- #XTIT: Field Name
10
4
  Changes.parentKey=AF/Za63Sqdiz7MXXjEROnA_Parent Key
11
- #XTIT: Field Name
12
5
  Changes.serviceEntityPath=viNxBh1vYxxG3kXw60lQPg_Service Entity Path
13
- #XTIT: Field Name
14
6
  Changes.attribute=cWjA87iS+Cm9tvOovmGGeg_Field
15
- #XTIT: Field Name
16
7
  Changes.keys=yOxQrAVGEhnkFKx3Uu+UQA_Changes Keys
17
- #XTIT: Field Name
18
8
  Changes.modification=uubj6khCgQZXWKOkGbkQgQ_Change Type
19
- #XTIT: Field Name
20
9
  Changes.valueChangedFrom=iohxHdR2acDLGNkvq8miKw_Old Value
21
- #XTIT: Field Name
22
10
  Changes.valueChangedTo=y65Nf+sdmQLjY6WGSnP5Sg_New Value
23
- #XTIT: Field Name
24
11
  Changes.entity=X+l1TGFuUkDEx610r4yjKQ_Object Type
25
- #XTIT: Field Name
26
12
  Changes.serviceEntity=BsNZh4ZOpOzpazhamfXqww_Service Object Type
27
- #XTIT: Field Name
28
13
  Changes.valueDataType=t2TcrxYWauHkEKY0ZWU2sQ_Value Data Type
29
14
 
30
- ## Change Log Table Fields Description##
31
- ########################################
32
- #XTIT: Field Name
33
15
  ChangeLog.entity=D240DzaTaZ7FAgpA7cLIiQ_Entity
34
- #XTIT: Field Name
35
16
  ChangeLog.entityKey=xK+ceOtLvrRhC38wITucIg_Entity Key
36
- #XTIT: Field Name
37
17
  ChangeLog.serviceEntity=TWafyw7HrjY/21RcCMxxgQ_Service Entity
38
18
 
39
19
 
40
- ## Change Log Modifications##
41
- ########################################
42
- #XFLD: Field label
43
- ChangeLog.modification.create=HzvJkMkINr79zGGMJxCQhg_Create
44
- #XFLD: Field label
45
- ChangeLog.modification.update=Jy7YgwcIfJ78NVdC9GBHXg_Update
46
- #XFLD: Field label
47
- ChangeLog.modification.delete=6Vb15r75SwLYaAwPBAAlXA_Delete
48
- #XFLD: Field label
20
+ Changes.modification.create=HzvJkMkINr79zGGMJxCQhg_Create
21
+ Changes.modification.update=Jy7YgwcIfJ78NVdC9GBHXg_Update
22
+ Changes.modification.delete=6Vb15r75SwLYaAwPBAAlXA_Delete
49
23
  ChangeLog.createdAt=It3muKsTssohbqCBz66Waw_Changed at
50
- #XFLD: Field label
51
24
  ChangeLog.createdBy=uceIpGWLWLeh6E5F5GHPdQ_Changed by
52
25
 
53
- ## Change History Table##
54
- ########################################
55
26
  ChangeHistory=kUlw1/MxgMjeCPEQdQ3gRg_Change History
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entidad de servicio
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Crear
43
+ Changes.modification.create=Crear
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Actualizar
45
+ Changes.modification.update=Actualizar
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Eliminar
47
+ Changes.modification.delete=Eliminar
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Hora de modificaci\u00F3n
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entidad de servicio
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Crear
43
+ Changes.modification.create=Crear
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Actualizar
45
+ Changes.modification.update=Actualizar
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Eliminar
47
+ Changes.modification.delete=Eliminar
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Hora de modificaci\u00F3n
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Palveluentiteetti
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Luo
43
+ Changes.modification.create=Luo
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=P\u00E4ivit\u00E4
45
+ Changes.modification.update=P\u00E4ivit\u00E4
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Poista
47
+ Changes.modification.delete=Poista
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Muutosaika
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entit\u00E9 de service
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Cr\u00E9er
43
+ Changes.modification.create=Cr\u00E9er
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Mettre \u00E0 jour
45
+ Changes.modification.update=Mettre \u00E0 jour
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Supprimer
47
+ Changes.modification.delete=Supprimer
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Date/Heure de modification
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u05D9\u05E9\u05D5\u05EA \u05E9\u05D9\u05E8\u05D5\u05EA
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u05E6\u05D5\u05E8
43
+ Changes.modification.create=\u05E6\u05D5\u05E8
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u05E2\u05D3\u05DB\u05DF
45
+ Changes.modification.update=\u05E2\u05D3\u05DB\u05DF
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u05DE\u05D7\u05E7
47
+ Changes.modification.delete=\u05DE\u05D7\u05E7
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u05E9\u05D5\u05E0\u05D4 \u05D1\u05E9\u05E2\u05D4
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entitet usluge
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Stvori
43
+ Changes.modification.create=Stvori
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=A\u017Euriraj
45
+ Changes.modification.update=A\u017Euriraj
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Izbri\u0161i
47
+ Changes.modification.delete=Izbri\u0161i
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Promijenjeno
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Szolg\u00E1ltat\u00E1sentit\u00E1s
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=L\u00E9trehoz\u00E1s
43
+ Changes.modification.create=L\u00E9trehoz\u00E1s
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Aktualiz\u00E1l\u00E1s
45
+ Changes.modification.update=Aktualiz\u00E1l\u00E1s
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=T\u00F6rl\u00E9s
47
+ Changes.modification.delete=T\u00F6rl\u00E9s
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=M\u00F3dos\u00EDt\u00E1s id\u0151pontja
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=Entit\u00E0 di servizio
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=Crea
43
+ Changes.modification.create=Crea
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=Aggiorna
45
+ Changes.modification.update=Aggiorna
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=Elimina
47
+ Changes.modification.delete=Elimina
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=Ora di modifica
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u30B5\u30FC\u30D3\u30B9\u30A8\u30F3\u30C6\u30A3\u30C6\u
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u4F5C\u6210
43
+ Changes.modification.create=\u4F5C\u6210
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u66F4\u65B0
45
+ Changes.modification.update=\u66F4\u65B0
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u524A\u9664
47
+ Changes.modification.delete=\u524A\u9664
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u5909\u66F4\u6642\u523B
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\u049A\u044B\u0437\u043C\u0435\u0442 \u043E\u0431\u044A\
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\u0416\u0430\u0441\u0430\u0443
43
+ Changes.modification.create=\u0416\u0430\u0441\u0430\u0443
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\u0416\u0430\u04A3\u0430\u0440\u0442\u0443
45
+ Changes.modification.update=\u0416\u0430\u04A3\u0430\u0440\u0442\u0443
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\u0416\u043E\u044E
47
+ Changes.modification.delete=\u0416\u043E\u044E
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\u04E8\u0437\u0433\u0435\u0440\u0442\u0456\u043B\u0433\u0435\u043D \u0443\u0430\u049B\u044B\u0442\u044B
50
50
  #XFLD: Field label
@@ -40,11 +40,11 @@ ChangeLog.serviceEntity=\uC11C\uBE44\uC2A4 \uC5D4\uD2F0\uD2F0
40
40
  ## Change Log Modifications##
41
41
  ########################################
42
42
  #XFLD: Field label
43
- ChangeLog.modification.create=\uC0DD\uC131
43
+ Changes.modification.create=\uC0DD\uC131
44
44
  #XFLD: Field label
45
- ChangeLog.modification.update=\uC5C5\uB370\uC774\uD2B8
45
+ Changes.modification.update=\uC5C5\uB370\uC774\uD2B8
46
46
  #XFLD: Field label
47
- ChangeLog.modification.delete=\uC0AD\uC81C
47
+ Changes.modification.delete=\uC0AD\uC81C
48
48
  #XFLD: Field label
49
49
  ChangeLog.createdAt=\uBCC0\uACBD \uC2DC\uAC04
50
50
  #XFLD: Field label