diff --git a/package-lock.json b/package-lock.json
index 2393a08417e23f492a977a8607d146de5c1dea34..4b893a5420dc4a6b35372519366baf2bce10712d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -51,12 +51,6 @@
           "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
           "dev": true
         },
-        "jsonc-parser": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
-          "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
-          "dev": true
-        },
         "rxjs": {
           "version": "6.6.7",
           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -93,21 +87,6 @@
         "rxjs": "6.6.7"
       },
       "dependencies": {
-        "jsonc-parser": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
-          "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
-          "dev": true
-        },
-        "magic-string": {
-          "version": "0.26.2",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz",
-          "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        },
         "rxjs": {
           "version": "6.6.7",
           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -2501,9 +2480,9 @@
       }
     },
     "@eslint/eslintrc": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz",
-      "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
+      "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==",
       "dev": true,
       "requires": {
         "ajv": "^6.12.4",
@@ -3444,27 +3423,6 @@
       "integrity": "sha512-b2TT2X6BFbnNoeteiaxCIiHaFcSbVW+S5yygYqiIq5i6H77yIU3IVuLdpQkHq8/EqOWFwMopLN8jdkUT71Am9w==",
       "requires": {
         "axios": "0.27.2"
-      },
-      "dependencies": {
-        "axios": {
-          "version": "0.27.2",
-          "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
-          "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
-          "requires": {
-            "follow-redirects": "^1.14.9",
-            "form-data": "^4.0.0"
-          }
-        },
-        "form-data": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
-          "requires": {
-            "asynckit": "^0.4.0",
-            "combined-stream": "^1.0.8",
-            "mime-types": "^2.1.12"
-          }
-        }
       }
     },
     "@nestjs/cli": {
@@ -3497,75 +3455,6 @@
         "webpack-node-externals": "3.0.0"
       },
       "dependencies": {
-        "@nestjs/schematics": {
-          "version": "9.0.3",
-          "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.0.3.tgz",
-          "integrity": "sha512-kZrU/lrpVd2cnK8I3ibDb3Wi1ppl3wX3U3lVWoL+DzRRoezWKkh8upEL4q0koKmuXnsmLiu3UPxFeMOrJV7TSA==",
-          "dev": true,
-          "requires": {
-            "@angular-devkit/core": "14.2.1",
-            "@angular-devkit/schematics": "14.2.1",
-            "fs-extra": "10.1.0",
-            "jsonc-parser": "3.2.0",
-            "pluralize": "8.0.0"
-          },
-          "dependencies": {
-            "@angular-devkit/core": {
-              "version": "14.2.1",
-              "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.1.tgz",
-              "integrity": "sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==",
-              "dev": true,
-              "requires": {
-                "ajv": "8.11.0",
-                "ajv-formats": "2.1.1",
-                "jsonc-parser": "3.1.0",
-                "rxjs": "6.6.7",
-                "source-map": "0.7.4"
-              },
-              "dependencies": {
-                "jsonc-parser": {
-                  "version": "3.1.0",
-                  "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
-                  "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
-                  "dev": true
-                }
-              }
-            },
-            "@angular-devkit/schematics": {
-              "version": "14.2.1",
-              "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.1.tgz",
-              "integrity": "sha512-0U18FwDYt4zROBPrvewH6iBTkf2ozVHN4/gxUb9jWrqVw8mPU5AWc/iYxQLHBSinkr2Egjo1H/i9aBqgJSeh3g==",
-              "dev": true,
-              "requires": {
-                "@angular-devkit/core": "14.2.1",
-                "jsonc-parser": "3.1.0",
-                "magic-string": "0.26.2",
-                "ora": "5.4.1",
-                "rxjs": "6.6.7"
-              },
-              "dependencies": {
-                "jsonc-parser": {
-                  "version": "3.1.0",
-                  "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
-                  "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
-                  "dev": true
-                }
-              }
-            }
-          }
-        },
-        "ajv": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
-          "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
         "ansi-styles": {
           "version": "4.3.0",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -3616,50 +3505,18 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "fs-extra": {
-          "version": "10.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-          "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^6.0.1",
-            "universalify": "^2.0.0"
-          }
-        },
         "has-flag": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
-        "json-schema-traverse": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-          "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-          "dev": true
-        },
         "json5": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
           "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
           "dev": true
         },
-        "jsonc-parser": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
-          "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
-          "dev": true
-        },
-        "magic-string": {
-          "version": "0.26.2",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz",
-          "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        },
         "readdirp": {
           "version": "3.6.0",
           "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -3669,19 +3526,10 @@
             "picomatch": "^2.2.1"
           }
         },
-        "rxjs": {
-          "version": "6.6.7",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          }
-        },
         "source-map": {
-          "version": "0.7.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-          "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
         "source-map-support": {
@@ -3692,14 +3540,6 @@
           "requires": {
             "buffer-from": "^1.0.0",
             "source-map": "^0.6.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.6.1",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-              "dev": true
-            }
           }
         },
         "supports-color": {
@@ -3721,18 +3561,6 @@
             "minimist": "^1.2.6",
             "strip-bom": "^3.0.0"
           }
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
-        },
-        "universalify": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-          "dev": true
         }
       }
     },
@@ -3940,6 +3768,12 @@
           "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
           "dev": true
         },
+        "jsonc-parser": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+          "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+          "dev": true
+        },
         "rxjs": {
           "version": "6.6.7",
           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -6174,9 +6008,9 @@
       }
     },
     "cli-spinners": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz",
-      "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==",
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
+      "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==",
       "dev": true
     },
     "cli-table3": {
@@ -7175,7 +7009,7 @@
     "defaults": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+      "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==",
       "dev": true,
       "requires": {
         "clone": "^1.0.2"
@@ -7706,12 +7540,12 @@
       }
     },
     "eslint": {
-      "version": "8.23.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz",
-      "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==",
+      "version": "8.23.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz",
+      "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==",
       "dev": true,
       "requires": {
-        "@eslint/eslintrc": "^1.3.1",
+        "@eslint/eslintrc": "^1.3.2",
         "@humanwhocodes/config-array": "^0.10.4",
         "@humanwhocodes/gitignore-to-minimatch": "^1.0.2",
         "@humanwhocodes/module-importer": "^1.0.1",
@@ -7730,7 +7564,6 @@
         "fast-deep-equal": "^3.1.3",
         "file-entry-cache": "^6.0.1",
         "find-up": "^5.0.0",
-        "functional-red-black-tree": "^1.0.1",
         "glob-parent": "^6.0.1",
         "globals": "^13.15.0",
         "globby": "^11.1.0",
@@ -7739,6 +7572,7 @@
         "import-fresh": "^3.0.0",
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
+        "js-sdsl": "^4.1.4",
         "js-yaml": "^4.1.0",
         "json-stable-stringify-without-jsonify": "^1.0.1",
         "levn": "^0.4.1",
@@ -8652,9 +8486,9 @@
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.15.0",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz",
-      "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ=="
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
     },
     "for-in": {
       "version": "1.0.2",
@@ -8875,7 +8709,7 @@
     "functional-red-black-tree": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-      "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+      "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
       "dev": true
     },
     "gauge": {
@@ -11532,6 +11366,12 @@
         }
       }
     },
+    "js-sdsl": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz",
+      "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==",
+      "dev": true
+    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -11735,7 +11575,7 @@
     "json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
       "dev": true
     },
     "json-stringify-safe": {
@@ -11753,9 +11593,9 @@
       }
     },
     "jsonc-parser": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
-      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz",
+      "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==",
       "dev": true
     },
     "jsonfile": {
@@ -15465,7 +15305,7 @@
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
       "dev": true
     },
     "throat": {
@@ -16323,7 +16163,7 @@
     "wcwidth": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
       "dev": true,
       "requires": {
         "defaults": "^1.0.3"
diff --git a/scripts/data/structures.js b/scripts/data/structures.js
index c26a09ddce97a3cd4b0485599ac5b0e0eaf6fdad..e650a2af343c008d5a238e67c83e64d0e8a76aab 100644
--- a/scripts/data/structures.js
+++ b/scripts/data/structures.js
@@ -45,7 +45,7 @@ module.exports = {
           time: [
             {
               closing: '12:00',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:30',
@@ -71,7 +71,7 @@ module.exports = {
           time: [
             {
               closing: '12:00',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:30',
@@ -84,7 +84,7 @@ module.exports = {
           time: [
             {
               closing: '12:00',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:30',
@@ -97,7 +97,7 @@ module.exports = {
           time: [
             {
               closing: '12:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -367,7 +367,7 @@ module.exports = {
           time: [
             {
               closing: '12:30',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:00',
@@ -380,7 +380,7 @@ module.exports = {
           time: [
             {
               closing: '12:30',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:00',
@@ -393,7 +393,7 @@ module.exports = {
           time: [
             {
               closing: '12:30',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:00',
@@ -406,7 +406,7 @@ module.exports = {
           time: [
             {
               closing: '12:30',
-              opening: '9:00',
+              opening: '09:00',
             },
             {
               closing: '17:00',
@@ -419,7 +419,7 @@ module.exports = {
           time: [
             {
               closing: '12:30',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -698,7 +698,7 @@ module.exports = {
           time: [
             {
               closing: '17:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -707,7 +707,7 @@ module.exports = {
           time: [
             {
               closing: '17:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -716,7 +716,7 @@ module.exports = {
           time: [
             {
               closing: '17:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -725,7 +725,7 @@ module.exports = {
           time: [
             {
               closing: '17:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
@@ -734,7 +734,7 @@ module.exports = {
           time: [
             {
               closing: '17:00',
-              opening: '9:00',
+              opening: '09:00',
             },
           ],
         },
diff --git a/src/structures/dto/structure.dto.ts b/src/structures/dto/structure.dto.ts
index 5eab783133a4f07dc0a19f1d0587cedd87e80a52..cf647c26a260ae17768b2c2949479f954940f06f 100644
--- a/src/structures/dto/structure.dto.ts
+++ b/src/structures/dto/structure.dto.ts
@@ -3,6 +3,7 @@ import { ArrayNotEmpty, IsArray, IsNotEmpty, ValidateNested } from 'class-valida
 import { Address } from '../schemas/address.schema';
 import { Week } from '../../shared/schemas/week.schema';
 import { PersonalOfferDocument } from '../../personal-offers/schemas/personal-offer.schema';
+import { ApiProperty } from '@nestjs/swagger';
 
 export class StructureDto {
   numero: string;
@@ -13,6 +14,7 @@ export class StructureDto {
   @IsNotEmpty()
   structureName: string;
 
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   structureType: string;
 
@@ -24,6 +26,7 @@ export class StructureDto {
 
   contactPhone: string;
 
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   contactMail: string;
 
@@ -35,8 +38,11 @@ export class StructureDto {
 
   lockdownActivity: string;
   otherDescription: string;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   pmrAccess: boolean;
+
   publicsAccompaniment: string[];
   proceduresAccompaniment: string[];
   remoteAccompaniment: boolean;
@@ -47,18 +53,31 @@ export class StructureDto {
 
   @ArrayNotEmpty()
   publics: string[];
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   freeWorkShop: boolean | string;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   nbComputers: number;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   nbPrinters: number;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   nbTablets: number;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   nbNumericTerminal: number;
+
+  @ApiProperty({ required: true })
   @IsNotEmpty()
   nbScanners: number;
+
   exceptionalClosures: string;
   equipmentsAndServices: string[];
   hours: Week;
diff --git a/src/structures/dto/update-structure.dto.ts b/src/structures/dto/update-structure.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2ab2e9f86e156725418a394863645b8ff64299ea
--- /dev/null
+++ b/src/structures/dto/update-structure.dto.ts
@@ -0,0 +1,4 @@
+import { PartialType } from '@nestjs/mapped-types';
+import { StructureDto } from './structure.dto';
+
+export class UpdateStructureDto extends PartialType(StructureDto) {}
diff --git a/src/structures/services/structure.service.spec.ts b/src/structures/services/structure.service.spec.ts
index 4ce08450dbf66434c2d17285a61dab2ee140ff41..d71dfb428f4963104e3868fe39b597833baa6390 100644
--- a/src/structures/services/structure.service.spec.ts
+++ b/src/structures/services/structure.service.spec.ts
@@ -85,7 +85,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -98,7 +98,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -111,7 +111,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -124,7 +124,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -137,7 +137,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
             ],
           },
@@ -326,7 +326,7 @@ describe('StructuresService', () => {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
diff --git a/src/structures/services/structures-search.service.ts b/src/structures/services/structures-search.service.ts
index 2bac91fe10710cceda2d97811cc602fe5bac4e7f..6356387af587430804cef421e383eb51af1679cf 100644
--- a/src/structures/services/structures-search.service.ts
+++ b/src/structures/services/structures-search.service.ts
@@ -1,7 +1,6 @@
 import { Injectable, Logger } from '@nestjs/common';
 import { ElasticsearchService } from '@nestjs/elasticsearch';
-import { StructureDto } from '../dto/structure.dto';
-import { StructureDocument } from '../schemas/structure.schema';
+import { Structure, StructureDocument } from '../schemas/structure.schema';
 import { StructureSearchBody } from '../interfaces/structure-search-body.interface';
 import { StructureSearchResult } from '../interfaces/structure-search-response.interface';
 
@@ -144,7 +143,7 @@ export class StructuresSearchService {
     return sortedHits.map((item) => item._source);
   }
 
-  public async update(structure: StructureDto, id: string): Promise<any> {
+  public async update(structure: Structure, id: string): Promise<any> {
     this.logger.debug('update');
     return this.elasticsearchService.update({
       index: this.index,
diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts
index 65408fe276248b91e3345093ccb04d3b7fdf1a37..3407a3d5fd1b3cc12a8806832189ef31d3b8d325 100644
--- a/src/structures/services/structures.service.ts
+++ b/src/structures/services/structures.service.ts
@@ -23,6 +23,7 @@ import { UsersService } from '../../users/services/users.service';
 import { PhotonResponse } from '../common/photonResponse.type';
 import { depRegex } from '../common/regex';
 import { StructureDto } from '../dto/structure.dto';
+import { UpdateStructureDto } from '../dto/update-structure.dto';
 import { Structure, StructureDocument } from '../schemas/structure.schema';
 import { StructuresSearchService } from './structures-search.service';
 
@@ -169,6 +170,11 @@ export class StructuresService {
     }
   }
 
+  /**
+   * Parse equipments. Ex : if structure doesn't have computers but nbComputer changes, then the key is added to equipmentsAndServices
+   * @param structure
+   * @returns Structure
+   */
   public addEquipmentsCategories(structure: Structure): Structure {
     Logger.debug(`addEquipmentsCategories of ${structure.structureName}`, StructuresService.name);
     if (structure.nbComputers > 0) {
@@ -363,26 +369,29 @@ export class StructuresService {
     });
   }
 
-  public async update(idStructure: string, structure: StructureDto): Promise<Structure> {
+  public async update(idStructure: string, updatedFields: UpdateStructureDto): Promise<Structure> {
     const oldStructure = await this.findOne(idStructure);
-    if (!_.isEqual(oldStructure.address, structure.address)) {
-      await this.getStructurePosition(structure).then();
+    const deepClone = Object.assign(oldStructure, updatedFields);
+
+    if (!_.isEqual(oldStructure.address, updatedFields.address)) {
+      await this.getStructurePosition(deepClone).then();
     }
-    // Parse equipments
-    structure = this.addEquipmentsCategories(structure);
-    const result = await this.structureModel.findByIdAndUpdate(Types.ObjectId(idStructure), structure).exec();
+    const parsedStructure = this.addEquipmentsCategories(deepClone);
+
+    const result = await this.structureModel.findByIdAndUpdate(Types.ObjectId(idStructure), parsedStructure).exec();
     if (!result) {
       throw new HttpException('Invalid structure id', HttpStatus.BAD_REQUEST);
-    } else {
-      await this.structuresSearchService.update(structure, idStructure);
-      this.sendAdminStructureNotification(
-        result,
-        this.mailerService.config.templates.structureModificationNotification.ejs,
-        this.mailerService.config.templates.structureModificationNotification.json
-      );
-      this.userService.removeOutdatedStructureFromArray(idStructure);
     }
-    return this.findOne(idStructure);
+    const responseStructure = await this.findOne(idStructure);
+    await this.structuresSearchService.update(responseStructure, idStructure);
+    this.sendAdminStructureNotification(
+      result,
+      this.mailerService.config.templates.structureModificationNotification.ejs,
+      this.mailerService.config.templates.structureModificationNotification.json
+    );
+    this.userService.removeOutdatedStructureFromArray(idStructure);
+
+    return responseStructure;
   }
 
   public async findOne(idParam: string): Promise<StructureDocument> {
diff --git a/src/structures/structures.controller.ts b/src/structures/structures.controller.ts
index 446cad22e95298afd5e8631c3d70b1f193c5a38b..5cf6f71cef4074a2e7bc5dd4a57d2b052fb2d579 100644
--- a/src/structures/structures.controller.ts
+++ b/src/structures/structures.controller.ts
@@ -8,12 +8,13 @@ import {
   HttpStatus,
   Logger,
   Param,
+  Patch,
   Post,
   Put,
   Query,
   UseGuards,
 } from '@nestjs/common';
-import { ApiParam, ApiTags } from '@nestjs/swagger';
+import { ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger';
 import { Types } from 'mongoose';
 import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
 import { CategoriesAccompagnementService } from '../categories/services/categories-accompagnement.service';
@@ -29,7 +30,7 @@ import { UsersService } from '../users/services/users.service';
 import { depRegex } from './common/regex';
 import { CreateStructureDto } from './dto/create-structure.dto';
 import { QueryStructure } from './dto/query-structure.dto';
-import { StructureDto } from './dto/structure.dto';
+import { UpdateStructureDto } from './dto/update-structure.dto';
 import { Structure, StructureDocument } from './schemas/structure.schema';
 import { StructuresService } from './services/structures.service';
 
@@ -98,10 +99,11 @@ export class StructuresController {
     return this.structureService.updateAccountVerified(id);
   }
 
-  @Put(':id')
+  @ApiOperation({ summary: 'Patch one value or more of a structure' })
+  @Patch(':id')
   @UseGuards(JwtAuthGuard, IsStructureOwnerGuard)
   @Roles('admin')
-  public async update(@Param('id') id: string, @Body() body: StructureDto): Promise<Structure> {
+  public async update(@Param('id') id: string, @Body() body: UpdateStructureDto): Promise<Structure> {
     return this.structureService.update(id, body);
   }
 
diff --git a/test/mock/services/structures.mock.service.ts b/test/mock/services/structures.mock.service.ts
index e63ca4aea439421592318e3ce45a9849433e1602..c0ee416e3a95c1e84f4c0089234e386d78096a59 100644
--- a/test/mock/services/structures.mock.service.ts
+++ b/test/mock/services/structures.mock.service.ts
@@ -124,7 +124,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -137,7 +137,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -150,7 +150,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -163,7 +163,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -176,7 +176,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
             ],
           },
@@ -251,7 +251,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -264,7 +264,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -277,7 +277,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -290,7 +290,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
               {
                 closing: '17:00',
@@ -303,7 +303,7 @@ export class StructuresServiceMock {
             time: [
               {
                 closing: '12:30',
-                opening: '9:00',
+                opening: '09:00',
               },
             ],
           },