diff --git a/application/source/data/transformer.mjs b/application/source/data/transformer.mjs
index bc8b8a0aede714e3f5e171dc4c0f4ce9bc4ab46f..2e3d2e2c15e008cb2c52701056ac1c1c8e1da781 100644
--- a/application/source/data/transformer.mjs
+++ b/application/source/data/transformer.mjs
@@ -576,6 +576,32 @@ function transform(value) {
 
             return map.get(value);
 
+        case "money":    
+        case "currency":
+
+            try {
+                locale = getLocaleOfDocument();
+            } catch (e) {
+                throw new Error("unsupported locale or missing format (" + e.message + ")");
+            }
+            
+            const currency = value.substring(0, 3);
+            if(!currency) {
+                throw new Error("missing currency parameter");
+            }
+            
+            const maximumFractionDigits = args?.[0] || 2;
+            const roundingIncrement = args?.[1] || 5;
+            
+            const nf = new Intl.NumberFormat(locale, {
+                style: "currency",
+                currency: currency,
+                maximumFractionDigits: maximumFractionDigits,
+                roundingIncrement: roundingIncrement,
+            });
+            
+            return nf.format(value.substring(3));
+            
         case "timestamp":
             date = new Date(value);
             timestamp = date.getTime();
@@ -598,6 +624,34 @@ function transform(value) {
                 throw new Error("unsupported locale or missing format (" + e.message + ")");
             }
 
+        case "datetime":
+            date = new Date(value);
+            if (isNaN(date.getTime())) {
+                throw new Error("invalid date");
+            }
+
+            try {
+                locale = getLocaleOfDocument();
+                return date.toLocaleString(locale);
+
+            } catch (e) {
+                throw new Error("unsupported locale or missing format (" + e.message + ")");
+            }
+            
+        case "date":
+            date = new Date(value);
+            if (isNaN(date.getTime())) {
+                throw new Error("invalid date");
+            }
+
+            try {
+                locale = getLocaleOfDocument();
+                return date.toLocaleDateString(locale);
+
+            } catch (e) {
+                throw new Error("unsupported locale or missing format (" + e.message + ")");
+            }
+            
 
         case "year":
             date = new Date(value);
@@ -658,20 +712,6 @@ function transform(value) {
 
             return date.getSeconds();
 
-        case "date":
-            date = new Date(value);
-            if (isNaN(date.getTime())) {
-                throw new Error("invalid date");
-            }
-
-            try {
-                locale = getLocaleOfDocument();
-                return date.toLocaleDateString(locale);
-
-            } catch (e) {
-                throw new Error("unsupported locale or missing format (" + e.message + ")");
-            }
-
         case "i18n":
         case "translation":
             translations = getDocumentTranslations();
diff --git a/development/package.json b/development/package.json
index a0832b0500fe8a977f512067a373503bead88672..940baa10e2df77c4fb0161a3b50b603827e352d9 100644
--- a/development/package.json
+++ b/development/package.json
@@ -35,7 +35,7 @@
     "esbuild": "^0.17.10",
     "flow-bin": "^0.200.1",
     "fs": "0.0.1-security",
-    "glob": "^9.0.1",
+    "glob": "^9.1.0",
     "graphviz": "^0.0.9",
     "jsdoc": "^4.0.2",
     "jsdoc-external-example": "github:volker-schukai/jsdoc-external-example",
diff --git a/development/pnpm-lock.yaml b/development/pnpm-lock.yaml
index 5d82fc78aef57fc882192a33b6485c01d9ddf6f2..42c593785d7b2016b6723f9299ca3917454136c5 100644
--- a/development/pnpm-lock.yaml
+++ b/development/pnpm-lock.yaml
@@ -16,7 +16,7 @@ specifiers:
   esbuild: ^0.17.10
   flow-bin: ^0.200.1
   fs: 0.0.1-security
-  glob: ^9.0.1
+  glob: ^9.1.0
   graphviz: ^0.0.9
   jsdoc: ^4.0.2
   jsdoc-external-example: github:volker-schukai/jsdoc-external-example
@@ -65,7 +65,7 @@ devDependencies:
   esbuild: 0.17.10
   flow-bin: 0.200.1
   fs: 0.0.1-security
-  glob: 9.0.1
+  glob: 9.1.0
   graphviz: 0.0.9
   jsdoc: 4.0.2
   jsdoc-external-example: github.com/volker-schukai/jsdoc-external-example/e039186b531487bd1b1d5e2e1586a396b910c9d9
@@ -791,8 +791,8 @@ packages:
       '@jridgewell/sourcemap-codec': 1.4.14
     dev: true
 
-  /@jsdoc/salty/0.2.3:
-    resolution: {integrity: sha512-bbtCxCkxcnWhi50I+4Lj6mdz9w3pOXOgEQrID8TCZ/DF51fW7M9GCQW2y45SpBDdHd1Eirm1X/Cf6CkAAe8HPg==}
+  /@jsdoc/salty/0.2.4:
+    resolution: {integrity: sha512-HRBmslXHM6kpZOfGf0o41NUlGYGER0NoUBcT2Sik4rxzAN7f7+si7ad57SFSFpftvaMVnUaY7YlJuv3v5G80ZA==}
     engines: {node: '>=v12.0.0'}
     dependencies:
       lodash: 4.17.21
@@ -1454,7 +1454,7 @@ packages:
     hasBin: true
     dependencies:
       caniuse-lite: 1.0.30001458
-      electron-to-chromium: 1.4.313
+      electron-to-chromium: 1.4.314
       node-releases: 2.0.10
       update-browserslist-db: 1.0.10_browserslist@4.21.5
     dev: true
@@ -1634,7 +1634,7 @@ packages:
     peerDependencies:
       jsdoc: '>=3.x <=4.x'
     dependencies:
-      '@jsdoc/salty': 0.2.3
+      '@jsdoc/salty': 0.2.4
       fs-extra: 10.1.0
       html-minifier: 4.0.0
       jsdoc: 4.0.2
@@ -1750,7 +1750,7 @@ packages:
       execa: 4.1.0
       polyfill-library: 3.111.0
       semver: 7.3.8
-      snyk: 1.1109.0
+      snyk: 1.1110.0
       yargs: 15.4.1
     transitivePeerDependencies:
       - supports-color
@@ -2012,8 +2012,8 @@ packages:
       tslib: 2.5.0
     dev: true
 
-  /electron-to-chromium/1.4.313:
-    resolution: {integrity: sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==}
+  /electron-to-chromium/1.4.314:
+    resolution: {integrity: sha512-+3RmNVx9hZLlc0gW//4yep0K5SYKmIvB5DXg1Yg6varsuAHlHwTeqeygfS8DWwLCsNOWrgj+p9qgM5WYjw1lXQ==}
     dev: true
 
   /emoji-regex/7.0.3:
@@ -2408,12 +2408,12 @@ packages:
       path-is-absolute: 1.0.1
     dev: true
 
-  /glob/9.0.1:
-    resolution: {integrity: sha512-psRdn8MI0gRcH0xow0VOhYxXD/6ZaRGmgtfN0oWN/hCgjxpRQBMCl7wE4JRJSAUTdJsW+FmD0EtE0CgJhKqSVw==}
+  /glob/9.1.0:
+    resolution: {integrity: sha512-bAnZn/xYN7o43Y97vDipnunJtQOOhJAyt7/zt1HrzFgtIrol4eJTUn8Kd74B1cMyOBuzWUMvBr2F178h0UQuUw==}
     engines: {node: '>=16 || 14 >=14.17'}
     dependencies:
       fs.realpath: 1.0.0
-      minimatch: 7.3.0
+      minimatch: 7.4.1
       minipass: 4.2.4
       path-scurry: 1.5.0
     dev: true
@@ -2751,7 +2751,7 @@ packages:
     hasBin: true
     dependencies:
       '@babel/parser': 7.21.2
-      '@jsdoc/salty': 0.2.3
+      '@jsdoc/salty': 0.2.4
       '@types/markdown-it': 12.2.3
       bluebird: 3.7.2
       catharsis: 0.9.0
@@ -2984,8 +2984,8 @@ packages:
       yallist: 4.0.0
     dev: true
 
-  /lru-cache/7.17.0:
-    resolution: {integrity: sha512-zSxlVVwOabhVyTi6E8gYv2cr6bXK+8ifYz5/uyJb9feXX6NACVDwY4p5Ut3WC3Ivo/QhpARHU3iujx2xGAYHbQ==}
+  /lru-cache/7.18.1:
+    resolution: {integrity: sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==}
     engines: {node: '>=12'}
     dev: true
 
@@ -3085,8 +3085,8 @@ packages:
       brace-expansion: 2.0.1
     dev: true
 
-  /minimatch/7.3.0:
-    resolution: {integrity: sha512-WaMDuhKa7a6zKiwplR1AOz+zGvJba24k5VU1Cy6NhEguavT2YRlHxuINUgTas4wiS6fwBpYq4TcA1XIECSntyw==}
+  /minimatch/7.4.1:
+    resolution: {integrity: sha512-Oz1iPEP+MGl7KS3SciLsLLcuZ7VsBfb7Qrz/jYt/s/sYAv272P26HSLz2f77Y6hzTKXiBi6g765fqpEDNc5fJw==}
     engines: {node: '>=10'}
     dependencies:
       brace-expansion: 2.0.1
@@ -3406,7 +3406,7 @@ packages:
     resolution: {integrity: sha512-hJ8rODLI9B2qwsYAd32rrI76gwVUPeu5kq/do6URDj2bJCVH3ilyT978Mv/NLuFMaqzHrn3XtiDLMZHaTTh4vA==}
     engines: {node: '>=14'}
     dependencies:
-      lru-cache: 7.17.0
+      lru-cache: 7.18.1
       minipass: 4.2.4
     dev: true
 
@@ -4191,8 +4191,8 @@ packages:
       supports-color: 7.2.0
     dev: true
 
-  /snyk/1.1109.0:
-    resolution: {integrity: sha512-sBcibkAfcq6nXr6t0GieDjdc8kQfEf429+M1VKavGfLaJPQNIqSjtOhQJ5FcZqaB/mCWa1szektkHeyAiB4m9A==}
+  /snyk/1.1110.0:
+    resolution: {integrity: sha512-rmyaxtEesqEPQOLeWcX7R9duOxNUKfP1ypX6/XaXxQRduvj7S+P6qXCIpZuJIcR3fnnN/jNbvY6WR+sdc2uqxA==}
     engines: {node: '>=12'}
     hasBin: true
     dev: true
diff --git a/development/test/cases/data/transformer.mjs b/development/test/cases/data/transformer.mjs
index 84e2e536ad7b7af9b18d2871d9ce450f277e8ad4..fa8168777cea91a2e85d997f041a1b0a78cf29fe 100644
--- a/development/test/cases/data/transformer.mjs
+++ b/development/test/cases/data/transformer.mjs
@@ -28,6 +28,10 @@ describe('Transformer', function () {
     describe('Transformer.run()', function () {
 
         [
+            ['currency:1:2', "EUR14.25", "14,2 €"],
+            ['currency', "EUR14.25", "14,25 €"],
+            ['datetime', "2023-02-14 14:12:10", "14.2.2023, 14:12:10"],
+            ['datetime', "2023-02-14 08:02:01", "14.2.2023, 08:02:01"],
             ['has-entries', {}, false],
             ['has-entries', {a:4}, true],
             ['has-entries', [], false],