diff --git a/device-types/ADVA/FSP-150-XG480-100G-CFP2.yaml b/device-types/ADVA/FSP-150-XG480-100G-CFP2.yaml
index e70200ad63c4d64ea6e3a3e46eec344bb9672401..92a32b6dda8ef8981b7f724c70255cc3b407b94d 100644
--- a/device-types/ADVA/FSP-150-XG480-100G-CFP2.yaml
+++ b/device-types/ADVA/FSP-150-XG480-100G-CFP2.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: ADVA
-model: XG480-100G-CFP2
-slug: adva-xg480-100g-cfp2
+model: FSP 150-XG480-100G-CFP2
+slug: adva-fsp-150-xg480-100g-cfp2
 part_number: 1078901003-01
 u_height: 2
 is_full_depth: false
diff --git a/device-types/ADVA/FSP-150-XG480-100G.yaml b/device-types/ADVA/FSP-150-XG480-100G.yaml
index a9d2c79a5461343a02caed8010441991cce813de..6fec7240966fcdff4fcd0514476e1deef1eaad84 100644
--- a/device-types/ADVA/FSP-150-XG480-100G.yaml
+++ b/device-types/ADVA/FSP-150-XG480-100G.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: ADVA
-model: XG480-100G
-slug: adva-xg480-100g
+model: FSP 150-XG480-100G
+slug: adva-fsp-150-xg480-100g
 part_number: 1078901001-01
 u_height: 2
 is_full_depth: false
diff --git a/device-types/APC/SMX3000HVNC.yaml b/device-types/APC/SMX3000HVNC.yaml
index f44651f7807fe41d75ada3d1c146bc3dc3d3a648..14704e0087d89b1f8a082eea9eddd8561479cd18 100644
--- a/device-types/APC/SMX3000HVNC.yaml
+++ b/device-types/APC/SMX3000HVNC.yaml
@@ -1,8 +1,8 @@
 ---
 manufacturer: APC
-model: SMX3000HV
-slug: apc-smx3000hv
-part_number: SMX3000HV
+model: SMX3000HVNC
+slug: apc-smx3000hvnc
+part_number: SMX3000HVNC
 comments: APC Smart-UPS X, Line Interactive, 3000VA, Rack/tower convertible 4U, 208V-230V, 8x C13+1x C19 IEC, SmartSlot, Extended runtime
 u_height: 4
 is_full_depth: true
diff --git a/device-types/Apple/AppleTV-A1427.yaml b/device-types/Apple/A1427.yaml
similarity index 100%
rename from device-types/Apple/AppleTV-A1427.yaml
rename to device-types/Apple/A1427.yaml
diff --git a/device-types/Apple/AppleTV-A1469.yaml b/device-types/Apple/A1469.yaml
similarity index 100%
rename from device-types/Apple/AppleTV-A1469.yaml
rename to device-types/Apple/A1469.yaml
diff --git a/device-types/Apple/AppleTV-A1625.yaml b/device-types/Apple/A1625.yaml
similarity index 100%
rename from device-types/Apple/AppleTV-A1625.yaml
rename to device-types/Apple/A1625.yaml
diff --git a/device-types/Apple/AppleTV-A1842.yaml b/device-types/Apple/A1842.yaml
similarity index 100%
rename from device-types/Apple/AppleTV-A1842.yaml
rename to device-types/Apple/A1842.yaml
diff --git a/device-types/Apple/AppleTV-A2169.yaml b/device-types/Apple/A2169.yaml
similarity index 100%
rename from device-types/Apple/AppleTV-A2169.yaml
rename to device-types/Apple/A2169.yaml
diff --git a/device-types/Arista/DCS-7048T-A.yaml b/device-types/Arista/DCS-7048T-A.yaml
index 0416107db2f028dd11e58fdae73c07f8cba3ef0e..19ac9a60dd46ce765b94df8030155b63b97edabd 100644
--- a/device-types/Arista/DCS-7048T-A.yaml
+++ b/device-types/Arista/DCS-7048T-A.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Arista
-model: DCS-7048-T
-slug: arista-dcs-7048-t
+model: DCS-7048T-A
+slug: arista-dcs-7048t-a
 is_full_depth: true
 u_height: 1
 interfaces:
diff --git a/device-types/Avocent/Cyclades-TS1000.yaml b/device-types/Avocent/Cyclades-TS-1000.yaml
similarity index 97%
rename from device-types/Avocent/Cyclades-TS1000.yaml
rename to device-types/Avocent/Cyclades-TS-1000.yaml
index de34a96c1b452cfba9e7712dc8ded97c61ca1a32..56d461688d6a72e175973f8e83005a4b8b11a076 100644
--- a/device-types/Avocent/Cyclades-TS1000.yaml
+++ b/device-types/Avocent/Cyclades-TS-1000.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Avocent
-model: Cyclades TS-1000
+model: Cyclades TS 1000
 slug: avocent-cyclades-ts-1000
 u_height: 1
 is_full_depth: false
diff --git a/device-types/Canon/IR-ADV-C3520.yaml b/device-types/Canon/IR-ADV-C3520.yaml
index 240eb61f16aea3d34a8c2a1359b3b70a4317090f..db4e8d5f92454585c678e7aebf8d9ed37eb46637 100644
--- a/device-types/Canon/IR-ADV-C3520.yaml
+++ b/device-types/Canon/IR-ADV-C3520.yaml
@@ -2,6 +2,7 @@
 manufacturer: Canon
 model: imageRUNNER ADVANCE C3520
 slug: canon-imagerunner-advance-c3520
+part_number: IR-ADV-C3520
 u_height: 0
 comments: '[Color Laser Multifunctional](https://oip.manual.canon/USRMA-3350-zz-CS-3500-enUV/)'
 power-ports:
diff --git a/device-types/Canon/IR-ADV-C3530-III.yaml b/device-types/Canon/IR-ADV-C3530-III.yaml
index 141f5b64ac97a69c52f362fd009e9e808a367373..0d3c74c220935135e95b3c84686c4a2e7f79f12a 100644
--- a/device-types/Canon/IR-ADV-C3530-III.yaml
+++ b/device-types/Canon/IR-ADV-C3530-III.yaml
@@ -2,6 +2,7 @@
 manufacturer: Canon
 model: imageRUNNER ADVANCE C3530 III
 slug: canon-imagerunner-advance-c3530-iii
+part_number: IR-ADV-C3530-III
 u_height: 0
 comments: '[Color Laser Multifunctional](https://oip.manual.canon/USRMA-3763-zz-CS-3500-enUS/)'
 power-ports:
diff --git a/device-types/Canon/IR-ADV-C3530.yaml b/device-types/Canon/IR-ADV-C3530.yaml
index 0048542877f2d0a1d4404706b078fc9872ac4c76..abb863afaed46f3ed07975d1dd1f0ae6d48f7701 100644
--- a/device-types/Canon/IR-ADV-C3530.yaml
+++ b/device-types/Canon/IR-ADV-C3530.yaml
@@ -2,6 +2,7 @@
 manufacturer: Canon
 model: imageRUNNER ADVANCE C3530
 slug: canon-imagerunner-advance-c3530
+part_number: IR-ADV-C3530
 u_height: 0
 comments: '[Color Laser Multifunctional](https://oip.manual.canon/USRMA-1814-zz-CS-3500-enUS/)'
 power-ports:
diff --git a/device-types/Canon/IR-ADV-C3720.yaml b/device-types/Canon/IR-ADV-C3720.yaml
index 9e44f10708c66b7b87472cbac9432b24602c733b..c1973632e55fd24d56a95b7f7b30290be1a179f7 100644
--- a/device-types/Canon/IR-ADV-C3720.yaml
+++ b/device-types/Canon/IR-ADV-C3720.yaml
@@ -2,6 +2,7 @@
 manufacturer: Canon
 model: imageRunner ADVANCE DX C3720
 slug: canon-imagerunner-advance-dx-c3720
+part_number: IR-ADV-C3720
 u_height: 0
 comments: '[Color Laser Multifunctional](https://oip.manual.canon/USRMA-4706-zz-CS-3700-enUV)'
 power-ports:
diff --git a/device-types/Cisco/C7206VXR.yaml b/device-types/Cisco/CISCO7206VXR.yaml
similarity index 100%
rename from device-types/Cisco/C7206VXR.yaml
rename to device-types/Cisco/CISCO7206VXR.yaml
diff --git a/device-types/Cisco/ISR-1111-8PWZy.yaml b/device-types/Cisco/ISR-1111-8PWZ.yaml
similarity index 100%
rename from device-types/Cisco/ISR-1111-8PWZy.yaml
rename to device-types/Cisco/ISR-1111-8PWZ.yaml
diff --git a/device-types/Cisco/UBR-10012.yaml b/device-types/Cisco/UBR-10012.yaml
index 53ec4d5255386c832d620974c7fb032cec9d7a1a..d99ece4d766092565bb95b71da67a216dd2414d7 100644
--- a/device-types/Cisco/UBR-10012.yaml
+++ b/device-types/Cisco/UBR-10012.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Cisco
-model: uBR10012
-slug: cisco-ubr10012
+model: uBR 10012
+slug: cisco-ubr-10012
 u_height: 18
 is_full_depth: true
 comments: '[Cisco uBR10012 Data Sheet](https://www.cisco.com/c/en/us/products/collateral/video/ubr10000-series-universal-broadband-routers/product_data_sheet09186a00801ed384.html)'
diff --git a/device-types/Colable/COL5141A.yaml b/device-types/Colable/COL5141S.yaml
similarity index 85%
rename from device-types/Colable/COL5141A.yaml
rename to device-types/Colable/COL5141S.yaml
index 6a848ac7d86322dd4beb6fef0ee18e5dcab448ce..1bebf75bd150e342d871a9e3d4ad6d4e901e980a 100644
--- a/device-types/Colable/COL5141A.yaml
+++ b/device-types/Colable/COL5141S.yaml
@@ -4,8 +4,6 @@ model: COL5141S
 slug: colable-col5141s
 u_height: 1
 is_full_depth: true
-comments: |
-  [Colable COL5141S product data](https://www.colable.com/Product/5817903943.html)
 power-ports:
   - name: Power 1
     type: iec-60320-c14
diff --git a/device-types/D-Link/D-Link-DES-1210-28.yaml b/device-types/D-Link/DES-1210-28.yaml
similarity index 100%
rename from device-types/D-Link/D-Link-DES-1210-28.yaml
rename to device-types/D-Link/DES-1210-28.yaml
diff --git a/device-types/D-Link/D-Link-DES-3200-52.yaml b/device-types/D-Link/DES-3200-52.yaml
similarity index 100%
rename from device-types/D-Link/D-Link-DES-3200-52.yaml
rename to device-types/D-Link/DES-3200-52.yaml
diff --git a/device-types/D-Link/D-Link-DGS-1210-52.yaml b/device-types/D-Link/DGS-1210-52.yaml
similarity index 100%
rename from device-types/D-Link/D-Link-DGS-1210-52.yaml
rename to device-types/D-Link/DGS-1210-52.yaml
diff --git a/device-types/Datacom/DM4610-OLT-4GPON+4GX+2XS.yaml b/device-types/Datacom/DM4610-OLT-4GPON-PLUS-4GX-PLUS-2XS.yaml
similarity index 100%
rename from device-types/Datacom/DM4610-OLT-4GPON+4GX+2XS.yaml
rename to device-types/Datacom/DM4610-OLT-4GPON-PLUS-4GX-PLUS-2XS.yaml
diff --git a/device-types/Dell/PowerEdge-R620xl.yml b/device-types/Dell/PowerEdge-R620xl.yml
index ca6ff8daa64d19de474317e243287189eacff79e..507c6587b3d48711971a950fd84025bb2ceab037 100644
--- a/device-types/Dell/PowerEdge-R620xl.yml
+++ b/device-types/Dell/PowerEdge-R620xl.yml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Dell
-model: PowerEdge R620 XL
-slug: dell-poweredge-r620-xl
+model: PowerEdge R620XL
+slug: dell-poweredge-r620xl
 u_height: 1
 is_full_depth: true
 console-ports:
diff --git a/device-types/Eaton/Tripp-Lite-ULTRABLOK428.yaml b/device-types/Eaton/Tripp-Lite-ULTRABLOK.yaml
similarity index 100%
rename from device-types/Eaton/Tripp-Lite-ULTRABLOK428.yaml
rename to device-types/Eaton/Tripp-Lite-ULTRABLOK.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9140-48V-AC.yaml b/device-types/Extreme Networks/BR-SLX-9140-48V.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9140-48V-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9140-48V.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9150-48XT-AC.yaml b/device-types/Extreme Networks/BR-SLX-9150-48XT.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9150-48XT-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9150-48XT.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9150-48Y-AC.yaml b/device-types/Extreme Networks/BR-SLX-9150-48Y.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9150-48Y-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9150-48Y.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9240-32C-AC.yaml b/device-types/Extreme Networks/BR-SLX-9240-32C.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9240-32C-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9240-32C.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9250-32C-AC.yaml b/device-types/Extreme Networks/BR-SLX-9250-32C.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9250-32C-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9250-32C.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9540-48S-AC.yaml b/device-types/Extreme Networks/BR-SLX-9540-48S.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9540-48S-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9540-48S.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9640-24S-12C-AC.yaml b/device-types/Extreme Networks/BR-SLX-9640-24S-12C.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9640-24S-12C-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9640-24S-12C.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9740-40C-AC.yaml b/device-types/Extreme Networks/BR-SLX-9740-40C.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9740-40C-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9740-40C.yaml
diff --git a/device-types/Extreme Networks/BR-SLX-9740-80C-AC.yaml b/device-types/Extreme Networks/BR-SLX-9740-80C.yaml
similarity index 100%
rename from device-types/Extreme Networks/BR-SLX-9740-80C-AC.yaml
rename to device-types/Extreme Networks/BR-SLX-9740-80C.yaml
diff --git a/device-types/Factor-TS/DIONIS-DPS-2004-RM-4E.yaml b/device-types/Factor-TS/DIONIS-DPS-2004.yaml
similarity index 100%
rename from device-types/Factor-TS/DIONIS-DPS-2004-RM-4E.yaml
rename to device-types/Factor-TS/DIONIS-DPS-2004.yaml
diff --git a/device-types/Factor-TS/DIONIS-DPS-3010-RM-6E-4S.yaml b/device-types/Factor-TS/DIONIS-DPS-3010-RM-6E-4S.yaml
index 9e7d2b5af1d323e1190fe8886f1e68851557914f..72ce2d43b0ddbb43186cfe63cbac6563111806d6 100644
--- a/device-types/Factor-TS/DIONIS-DPS-3010-RM-6E-4S.yaml
+++ b/device-types/Factor-TS/DIONIS-DPS-3010-RM-6E-4S.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Factor-TS
-model: Dionis DPS-3010
+model: Dionis DPS-3010-RM-6E-4S
 slug: factor-ts-dionis-dps-3010-rm-6e-4s
 part_number: RM-6E-4S
 u_height: 1
diff --git a/device-types/Fortinet/FS-224D.yaml b/device-types/Fortinet/FS-224D-FPOE.yaml
similarity index 100%
rename from device-types/Fortinet/FS-224D.yaml
rename to device-types/Fortinet/FS-224D-FPOE.yaml
diff --git a/device-types/Generic/24-port-copper-patch-panel-half.yaml b/device-types/Generic/24-port-copper-patch-panel-half-depth.yaml
similarity index 95%
rename from device-types/Generic/24-port-copper-patch-panel-half.yaml
rename to device-types/Generic/24-port-copper-patch-panel-half-depth.yaml
index 601a976c43935d0550f3c04c5a35f8a5e3848ebb..b3d110ab2a803350c0ec7aa1019c2a88e11e8284 100644
--- a/device-types/Generic/24-port-copper-patch-panel-half.yaml
+++ b/device-types/Generic/24-port-copper-patch-panel-half-depth.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Generic
-model: 24-port UTP Patch Panel Half Depth
-slug: generic-24-port-utp-patch-panel-half-depth
+model: 24-port Copper Patch Panel Half Depth
+slug: generic-24-port-copper-patch-panel-half-depth
 u_height: 1
 is_full_depth: false
 airflow: passive
diff --git a/device-types/Generic/24-port-copper-patch-panel.yaml b/device-types/Generic/24-port-copper-patch-panel.yaml
index 201c4e8185e20e4bf69365273c24d9a3c0f71743..d2532df94c8577c40d0609a050e5abc4a0309d65 100644
--- a/device-types/Generic/24-port-copper-patch-panel.yaml
+++ b/device-types/Generic/24-port-copper-patch-panel.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Generic
-model: 24-port UTP Patch Panel
-slug: generic-24-port-utp-patch-panel
+model: 24-port Copper Patch Panel
+slug: generic-24-port-copper-patch-panel
 u_height: 1
 airflow: passive
 front-ports:
diff --git a/device-types/Generic/48-port-copper-patch-panel-half.yaml b/device-types/Generic/48-port-copper-patch-panel-half-depth.yaml
similarity index 97%
rename from device-types/Generic/48-port-copper-patch-panel-half.yaml
rename to device-types/Generic/48-port-copper-patch-panel-half-depth.yaml
index 301b0e5ce2a4a7346eefdf6b930f25688bdf2423..d671c8856689a477803fd02b31373fb724c3acc2 100644
--- a/device-types/Generic/48-port-copper-patch-panel-half.yaml
+++ b/device-types/Generic/48-port-copper-patch-panel-half-depth.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Generic
-model: 48-port UTP Patch Panel Half Depth
-slug: generic-48-port-utp-patch-panel-half-depth
+model: 48-port Copper Patch Panel Half Depth
+slug: generic-48-port-copper-patch-panel-half-depth
 u_height: 2
 is_full_depth: false
 airflow: passive
diff --git a/device-types/Generic/48-port-copper-patch-panel.yaml b/device-types/Generic/48-port-copper-patch-panel.yaml
index 08b40357a64b25687a828815cc26b6c5dc9cee24..95cac294700b2fb0e7e2aa583f8c09912d76142f 100644
--- a/device-types/Generic/48-port-copper-patch-panel.yaml
+++ b/device-types/Generic/48-port-copper-patch-panel.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Generic
-model: 48-port UTP Patch Panel
-slug: generic-48-port-utp-patch-panel
+model: 48-port Copper Patch Panel
+slug: generic-48-port-copper-patch-panel
 u_height: 2
 airflow: passive
 front-ports:
diff --git a/device-types/Generic/LC-12-port-fiber-patch-panel-half.yaml b/device-types/Generic/LC-12-port-fiber-patch-panel-half-depth.yaml
similarity index 100%
rename from device-types/Generic/LC-12-port-fiber-patch-panel-half.yaml
rename to device-types/Generic/LC-12-port-fiber-patch-panel-half-depth.yaml
diff --git a/device-types/Generic/LC-24-port-fiber-patch-panel-half.yaml b/device-types/Generic/LC-24-port-fiber-patch-panel-half-depth.yaml
similarity index 100%
rename from device-types/Generic/LC-24-port-fiber-patch-panel-half.yaml
rename to device-types/Generic/LC-24-port-fiber-patch-panel-half-depth.yaml
diff --git a/device-types/Generic/LC-48-port-fiber-patch-panel-half.yaml b/device-types/Generic/LC-48-port-fiber-patch-panel-half-depth.yaml
similarity index 100%
rename from device-types/Generic/LC-48-port-fiber-patch-panel-half.yaml
rename to device-types/Generic/LC-48-port-fiber-patch-panel-half-depth.yaml
diff --git a/device-types/Generic/SC-24-double-port-fiber-patch-panel-half.yaml b/device-types/Generic/SC-24-double-port-fiber-patch-panel-half-depth.yaml
similarity index 100%
rename from device-types/Generic/SC-24-double-port-fiber-patch-panel-half.yaml
rename to device-types/Generic/SC-24-double-port-fiber-patch-panel-half-depth.yaml
diff --git a/device-types/Generic/SC-24-port-fiber-patch-panel-half.yaml b/device-types/Generic/SC-24-port-fiber-patch-panel-half-depth.yaml
similarity index 100%
rename from device-types/Generic/SC-24-port-fiber-patch-panel-half.yaml
rename to device-types/Generic/SC-24-port-fiber-patch-panel-half-depth.yaml
diff --git a/device-types/Generic/wall-box-2-utp.yaml b/device-types/Generic/wall-box-2-utp-plugs.yaml
similarity index 100%
rename from device-types/Generic/wall-box-2-utp.yaml
rename to device-types/Generic/wall-box-2-utp-plugs.yaml
diff --git a/device-types/Generic/wall-box-3-utp.yaml b/device-types/Generic/wall-box-3-utp-plugs.yaml
similarity index 100%
rename from device-types/Generic/wall-box-3-utp.yaml
rename to device-types/Generic/wall-box-3-utp-plugs.yaml
diff --git a/device-types/Generic/wall-box-4-utp.yaml b/device-types/Generic/wall-box-4-utp-plugs.yaml
similarity index 100%
rename from device-types/Generic/wall-box-4-utp.yaml
rename to device-types/Generic/wall-box-4-utp-plugs.yaml
diff --git a/device-types/Generic/wall-box-6-utp.yaml b/device-types/Generic/wall-box-6-utp-plugs.yaml
similarity index 100%
rename from device-types/Generic/wall-box-6-utp.yaml
rename to device-types/Generic/wall-box-6-utp-plugs.yaml
diff --git a/device-types/HPE/Aruba-10000-48Y6C-R8P14A.yaml b/device-types/HPE/Aruba-10000-48Y6C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-10000-48Y6C-R8P14A.yaml
rename to device-types/HPE/Aruba-10000-48Y6C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-10000-48Y6C-R8P13A.yaml b/device-types/HPE/Aruba-10000-48Y6C-Front-To-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-10000-48Y6C-R8P13A.yaml
rename to device-types/HPE/Aruba-10000-48Y6C-Front-To-Back.yaml
diff --git a/device-types/HPE/Aruba-2540M-48G-JL355A.yaml b/device-types/HPE/Aruba-2540-48G-4SFPP.yaml
similarity index 100%
rename from device-types/HPE/Aruba-2540M-48G-JL355A.yaml
rename to device-types/HPE/Aruba-2540-48G-4SFPP.yaml
diff --git a/device-types/HPE/Aruba-6000-12G-R8N89A.yaml b/device-types/HPE/Aruba-6000-12G-POE4-2SFP.yaml
similarity index 91%
rename from device-types/HPE/Aruba-6000-12G-R8N89A.yaml
rename to device-types/HPE/Aruba-6000-12G-POE4-2SFP.yaml
index ea9e320dfac7d6a7544c5bed886e3481ee1ec827..f59743e509e12812db2fc4aeefca1c884cb1731d 100644
--- a/device-types/HPE/Aruba-6000-12G-R8N89A.yaml
+++ b/device-types/HPE/Aruba-6000-12G-POE4-2SFP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6000-12G-POE4-2SFP 139W
-slug: hpe-aruba-6000-12g-poe4-2sfp-139w
+model: Aruba 6000-12G-POE4-2SFP
+slug: hpe-aruba-6000-12g-poe4-2sfp
 part_number: R8N89A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6000-24G-R8N88A.yaml b/device-types/HPE/Aruba-6000-24G-4SFP.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6000-24G-R8N88A.yaml
rename to device-types/HPE/Aruba-6000-24G-4SFP.yaml
diff --git a/device-types/HPE/Aruba-6000-24G-PoE-370W-R8N87A.yaml b/device-types/HPE/Aruba-6000-24G-POE4-4SFP.yaml
similarity index 94%
rename from device-types/HPE/Aruba-6000-24G-PoE-370W-R8N87A.yaml
rename to device-types/HPE/Aruba-6000-24G-POE4-4SFP.yaml
index 6621ce666a403fc51a9e305f0ed08700b45a2629..f9bd633243bf5c780a22b46f421d3650a6e67c73 100644
--- a/device-types/HPE/Aruba-6000-24G-PoE-370W-R8N87A.yaml
+++ b/device-types/HPE/Aruba-6000-24G-POE4-4SFP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6000-24G-POE4-4SFP 370W
-slug: hpe-aruba-6000-24g-poe4-4sfp-370w
+model: Aruba 6000-24G-POE4-4SFP
+slug: hpe-aruba-6000-24g-poe4-4sfp
 part_number: R8N87A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6000-48G-R8N86A.yaml b/device-types/HPE/Aruba-6000-48G-4SFP.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6000-48G-R8N86A.yaml
rename to device-types/HPE/Aruba-6000-48G-4SFP.yaml
diff --git a/device-types/HPE/Aruba-6000-48G-PoE-370W-R8N85A.yaml b/device-types/HPE/Aruba-6000-48G-POE4-4SFP.yaml
similarity index 96%
rename from device-types/HPE/Aruba-6000-48G-PoE-370W-R8N85A.yaml
rename to device-types/HPE/Aruba-6000-48G-POE4-4SFP.yaml
index a565aa662ae248834f9fcd850d2271bd84e700f9..6e1b9fa3473c3e0d5398386bc737cb3f38007ef3 100644
--- a/device-types/HPE/Aruba-6000-48G-PoE-370W-R8N85A.yaml
+++ b/device-types/HPE/Aruba-6000-48G-POE4-4SFP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6000-48G-POE4-4SFP 370W
-slug: hpe-aruba-6000-48g-poe4-4sfp-370w
+model: Aruba 6000-48G-POE4-4SFP
+slug: hpe-aruba-6000-48g-poe4-4sfp
 part_number: R8N85A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6100-12G-JL679A.yaml b/device-types/HPE/Aruba-6100-12G-POE4-2SFPP.yaml
similarity index 91%
rename from device-types/HPE/Aruba-6100-12G-JL679A.yaml
rename to device-types/HPE/Aruba-6100-12G-POE4-2SFPP.yaml
index 6b08cd025fcfb74a7d13137d021fac5f7fc65d80..82fd58034edb4f3f592340680cbb0fa713b81f75 100644
--- a/device-types/HPE/Aruba-6100-12G-JL679A.yaml
+++ b/device-types/HPE/Aruba-6100-12G-POE4-2SFPP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6100-12G-POE4-2SFP+ 139W
-slug: hpe-aruba-6100-12g-poe4-2sfpp-139w
+model: Aruba 6100-12G-POE4-2SFP+
+slug: hpe-aruba-6100-12g-poe4-2sfpp
 part_number: JL679A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6100-24G-JL678A.yaml b/device-types/HPE/Aruba-6100-24G-4SFPP.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6100-24G-JL678A.yaml
rename to device-types/HPE/Aruba-6100-24G-4SFPP.yaml
diff --git a/device-types/HPE/Aruba-6100-24G-PoE-370W-JL677A.yaml b/device-types/HPE/Aruba-6100-24G-POE4-4SFPP.yaml
similarity index 94%
rename from device-types/HPE/Aruba-6100-24G-PoE-370W-JL677A.yaml
rename to device-types/HPE/Aruba-6100-24G-POE4-4SFPP.yaml
index a131971be1f66072eb249ae3e6a460c8697dcdf5..aa73e444f8366ce6570cfdfd0d140afbbda4e46e 100644
--- a/device-types/HPE/Aruba-6100-24G-PoE-370W-JL677A.yaml
+++ b/device-types/HPE/Aruba-6100-24G-POE4-4SFPP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6100-24G-POE4-4SFP+ 370W
-slug: hpe-aruba-6100-24g-poe4-4sfpp-370w
+model: Aruba 6100-24G-POE4-4SFP+
+slug: hpe-aruba-6100-24g-poe4-4sfpp
 part_number: JL677A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6100-48G-PoE-370W-JL675A.yaml b/device-types/HPE/Aruba-6100-48G-POE4-4SFPP.yaml
similarity index 96%
rename from device-types/HPE/Aruba-6100-48G-PoE-370W-JL675A.yaml
rename to device-types/HPE/Aruba-6100-48G-POE4-4SFPP.yaml
index 1d98a2d11bb0bd59518fe4f162d9619723a25ed9..4e5fda25d9f6d42af0d803c4488f37b371131fc4 100644
--- a/device-types/HPE/Aruba-6100-48G-PoE-370W-JL675A.yaml
+++ b/device-types/HPE/Aruba-6100-48G-POE4-4SFPP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6100-48G-POE4-4SFP+ 370W
-slug: hpe-aruba-6100-48g-poe4-4sfpp-370w
+model: Aruba 6100-48G-POE4-4SFP+
+slug: hpe-aruba-6100-48g-poe4-4sfpp
 part_number: JL675A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6200F-24G-POE4-4SFPP-370W.yaml b/device-types/HPE/Aruba-6200F-24G-POE4-4SFPP.yaml
similarity index 94%
rename from device-types/HPE/Aruba-6200F-24G-POE4-4SFPP-370W.yaml
rename to device-types/HPE/Aruba-6200F-24G-POE4-4SFPP.yaml
index 4a9c31e5607d84260d2791db44f3dc2ed47913d2..45a1f62150a3d2ace5fab7c9b9b067ad93dae041 100644
--- a/device-types/HPE/Aruba-6200F-24G-POE4-4SFPP-370W.yaml
+++ b/device-types/HPE/Aruba-6200F-24G-POE4-4SFPP.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 6200F-24G-POE4-4SFP+ 370W
-slug: hpe-aruba-6200f-24g-poe4-4sfpp-370w
+model: Aruba 6200F-24G-POE4-4SFP+
+slug: hpe-aruba-6200f-24g-poe4-4sfpp
 part_number: JL725A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-6200F-48G-JL726A.yaml b/device-types/HPE/Aruba-6200F-48G-4SFPP.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6200F-48G-JL726A.yaml
rename to device-types/HPE/Aruba-6200F-48G-4SFPP.yaml
diff --git a/device-types/HPE/Aruba-6200F-48G-PoE-370W-JL727A.yaml b/device-types/HPE/Aruba-6200F-48G-POE4-4SFPP-370W.yaml
similarity index 98%
rename from device-types/HPE/Aruba-6200F-48G-PoE-370W-JL727A.yaml
rename to device-types/HPE/Aruba-6200F-48G-POE4-4SFPP-370W.yaml
index 4444cf5c499fce6ed68c77fdb12637be531db1c1..a8cf23cd2792d108b8006ed7776f8c8db118c2a7 100644
--- a/device-types/HPE/Aruba-6200F-48G-PoE-370W-JL727A.yaml
+++ b/device-types/HPE/Aruba-6200F-48G-POE4-4SFPP-370W.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: Aruba 6200F-48G-POE4-4SFP+ 370W
+model: Aruba 6200F-48G-POE4-4SFP+ 370w
 slug: hpe-aruba-6200f-48g-poe4-4sfpp-370w
 part_number: JL727A
 u_height: 1
diff --git a/device-types/HPE/Aruba-6200F-48G-PoE-740W-JL728A.yaml b/device-types/HPE/Aruba-6200F-48G-POE4-4SFPP-740W.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6200F-48G-PoE-740W-JL728A.yaml
rename to device-types/HPE/Aruba-6200F-48G-POE4-4SFPP-740W.yaml
diff --git a/device-types/HPE/Aruba-6300F-24G-JL668A.yaml b/device-types/HPE/Aruba-6300F-24G-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300F-24G-JL668A.yaml
rename to device-types/HPE/Aruba-6300F-24G-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300F-24G-JL666A.yaml b/device-types/HPE/Aruba-6300F-24G-POE4-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300F-24G-JL666A.yaml
rename to device-types/HPE/Aruba-6300F-24G-POE4-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300F-48G-JL667A.yaml b/device-types/HPE/Aruba-6300F-48G-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300F-48G-JL667A.yaml
rename to device-types/HPE/Aruba-6300F-48G-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300F-48G-JL665A.yaml b/device-types/HPE/Aruba-6300F-48G-POE4-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300F-48G-JL665A.yaml
rename to device-types/HPE/Aruba-6300F-48G-POE4-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-24G-JL664A.yaml b/device-types/HPE/Aruba-6300M-24G-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-24G-JL664A.yaml
rename to device-types/HPE/Aruba-6300M-24G-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-24G-JL662A.yaml b/device-types/HPE/Aruba-6300M-24G-POE4-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-24G-JL662A.yaml
rename to device-types/HPE/Aruba-6300M-24G-POE4-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-24G-JL660A.yaml b/device-types/HPE/Aruba-6300M-24GSR-POE6-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-24G-JL660A.yaml
rename to device-types/HPE/Aruba-6300M-24GSR-POE6-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-24G-JL658A.yaml b/device-types/HPE/Aruba-6300M-24SFPP-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-24G-JL658A.yaml
rename to device-types/HPE/Aruba-6300M-24SFPP-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-48G-JL663A.yaml b/device-types/HPE/Aruba-6300M-48G-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-48G-JL663A.yaml
rename to device-types/HPE/Aruba-6300M-48G-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-48G-JL661A.yaml b/device-types/HPE/Aruba-6300M-48G-POE4-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-48G-JL661A.yaml
rename to device-types/HPE/Aruba-6300M-48G-POE4-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-6300M-48G-JL659A.yaml b/device-types/HPE/Aruba-6300M-48GSR-POE6-4SFP56.yaml
similarity index 100%
rename from device-types/HPE/Aruba-6300M-48G-JL659A.yaml
rename to device-types/HPE/Aruba-6300M-48GSR-POE6-4SFP56.yaml
diff --git a/device-types/HPE/Aruba-8325-32C-JL627A.yaml b/device-types/HPE/Aruba-8325-32C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8325-32C-JL627A.yaml
rename to device-types/HPE/Aruba-8325-32C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8325-32C-JL626A.yaml b/device-types/HPE/Aruba-8325-32C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8325-32C-JL626A.yaml
rename to device-types/HPE/Aruba-8325-32C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8325-48Y8C-JL625A.yaml b/device-types/HPE/Aruba-8325-48Y8C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8325-48Y8C-JL625A.yaml
rename to device-types/HPE/Aruba-8325-48Y8C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8325-48Y8C-JL624A.yaml b/device-types/HPE/Aruba-8325-48Y8C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8325-48Y8C-JL624A.yaml
rename to device-types/HPE/Aruba-8325-48Y8C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8360-12C-JL709C.yaml b/device-types/HPE/Aruba-8360-12C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-12C-JL709C.yaml
rename to device-types/HPE/Aruba-8360-12C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8360-12C-JL708C.yaml b/device-types/HPE/Aruba-8360-12C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-12C-JL708C.yaml
rename to device-types/HPE/Aruba-8360-12C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8360-16Y2C-JL703C.yaml b/device-types/HPE/Aruba-8360-16Y2C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-16Y2C-JL703C.yaml
rename to device-types/HPE/Aruba-8360-16Y2C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8360-16Y2C-JL702C.yaml b/device-types/HPE/Aruba-8360-16Y2C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-16Y2C-JL702C.yaml
rename to device-types/HPE/Aruba-8360-16Y2C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8360-24XF2C-JL711C.yaml b/device-types/HPE/Aruba-8360-24XF2C-Back-to-Front.yaml
similarity index 95%
rename from device-types/HPE/Aruba-8360-24XF2C-JL711C.yaml
rename to device-types/HPE/Aruba-8360-24XF2C-Back-to-Front.yaml
index 46fa4c3b8eae125e6c9f9b09a6a50b2988201a9f..15812ed9e671d67b1661eeace9ca87d5e00c63c4 100644
--- a/device-types/HPE/Aruba-8360-24XF2C-JL711C.yaml
+++ b/device-types/HPE/Aruba-8360-24XF2C-Back-to-Front.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 8320-24XF2C Back-to-Front
-slug: hpe-aruba-8320-24xf2c-back-to-front
+model: Aruba 8360-24XF2C Back-to-Front
+slug: hpe-aruba-8360-24xf2c-back-to-front
 part_number: JL711C
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-8360-24XF2C-JL710C.yaml b/device-types/HPE/Aruba-8360-24XF2C-Front-to-Back.yaml
similarity index 95%
rename from device-types/HPE/Aruba-8360-24XF2C-JL710C.yaml
rename to device-types/HPE/Aruba-8360-24XF2C-Front-to-Back.yaml
index 93beea97525e76b3ec6de110d321322874fb6abb..da557eaaca0d1b2757f2e2af00c83543682ade60 100644
--- a/device-types/HPE/Aruba-8360-24XF2C-JL710C.yaml
+++ b/device-types/HPE/Aruba-8360-24XF2C-Front-to-Back.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 8360-24XF2C
-slug: hpe-aruba-8360-24xf2c
+model: Aruba 8360-24XF2C Front-to-Back
+slug: hpe-aruba-8360-24xf2c-front-to-back
 part_number: JL710C
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/Aruba-8360-32Y4C-JL701C.yaml b/device-types/HPE/Aruba-8360-32Y4C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-32Y4C-JL701C.yaml
rename to device-types/HPE/Aruba-8360-32Y4C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8360-32Y4C-JL700C.yaml b/device-types/HPE/Aruba-8360-32Y4C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-32Y4C-JL700C.yaml
rename to device-types/HPE/Aruba-8360-32Y4C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8360-48XT4C-JL707C.yaml b/device-types/HPE/Aruba-8360-48XT4C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-48XT4C-JL707C.yaml
rename to device-types/HPE/Aruba-8360-48XT4C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8360-48XT4C-JL706C.yaml b/device-types/HPE/Aruba-8360-48XT4C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-48XT4C-JL706C.yaml
rename to device-types/HPE/Aruba-8360-48XT4C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-8360-48Y6C-JL705C.yaml b/device-types/HPE/Aruba-8360-48Y6C-Back-to-Front.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-48Y6C-JL705C.yaml
rename to device-types/HPE/Aruba-8360-48Y6C-Back-to-Front.yaml
diff --git a/device-types/HPE/Aruba-8360-48Y6C-JL704C.yaml b/device-types/HPE/Aruba-8360-48Y6C-Front-to-Back.yaml
similarity index 100%
rename from device-types/HPE/Aruba-8360-48Y6C-JL704C.yaml
rename to device-types/HPE/Aruba-8360-48Y6C-Front-to-Back.yaml
diff --git a/device-types/HPE/Aruba-IAP-505.yaml b/device-types/HPE/Aruba-IAP-505.yaml
index 6d7682aa671398df5918d329d440fa3cce678c72..bad89908ca3bb063d2ff24e54cb82d1cb2ec70f0 100644
--- a/device-types/HPE/Aruba-IAP-505.yaml
+++ b/device-types/HPE/Aruba-IAP-505.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: Aruba AP-505
+model: Aruba IAP-505
 slug: hpe-aruba-ap-505
 part_number: AP-505
 u_height: 0
diff --git a/device-types/HPE/Aruba-MC-3200.yaml b/device-types/HPE/Aruba-MC-3200.yaml
index 98181daced697acdb08dafacee933ff3d163607e..3ad94de558225b5ffb7787cf2a105e1169727fca 100644
--- a/device-types/HPE/Aruba-MC-3200.yaml
+++ b/device-types/HPE/Aruba-MC-3200.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 3200
-slug: hpe-aruba-3200
+model: Aruba MC 3200
+slug: hpe-aruba-mc-3200
 is_full_depth: false
 u_height: 1
 interfaces:
diff --git a/device-types/HPE/Aruba-MC-3400.yaml b/device-types/HPE/Aruba-MC-3400.yaml
index 20f9e07aeacc8d9f5b53387ec8a137ff56feaf6c..ddb96767a584d5f6318b5cb96c85e8e09bb93783 100644
--- a/device-types/HPE/Aruba-MC-3400.yaml
+++ b/device-types/HPE/Aruba-MC-3400.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: Aruba 3400
-slug: hpe-aruba-3400
+model: Aruba MC 3400
+slug: hpe-aruba-mc-3400
 is_full_depth: false
 u_height: 1
 interfaces:
diff --git a/device-types/HPE/HP-3100-16-v2-EI.yaml b/device-types/HPE/HP-3100-16-v2-EI.yaml
index 7d87553783e161104f28963e5e3e83891fe12a44..71ec88cc70ae4a8ba624636b26c6026959b1121f 100644
--- a/device-types/HPE/HP-3100-16-v2-EI.yaml
+++ b/device-types/HPE/HP-3100-16-v2-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 3100-16 v2 EI
-slug: hpe-3100-16-v2-ei
+model: HP 3100-16 v2 EI
+slug: hpe-hp-3100-16-v2-ei
 part_number: JD319B
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-3100-24-EI.yaml b/device-types/HPE/HP-3100-24-EI.yaml
index 440c05cb7a5e27615d339aa6d596287e1fb562db..e4c6cba86f9c61d32ec799f049bbf4718a9a5afe 100644
--- a/device-types/HPE/HP-3100-24-EI.yaml
+++ b/device-types/HPE/HP-3100-24-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 3100-24 EI
-slug: hpe-3100-24-ei
+model: HP 3100-24 EI
+slug: hpe-hp-3100-24-ei
 part_number: JD320A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-3100-24-PoE-v2-EI.yaml b/device-types/HPE/HP-3100-24-PoE-v2-EI.yaml
index c238984beee88b4d595173ba839a3709f3b91db7..9f1d7cef73008bbffa8512bb78d12fe61a4bc7da 100644
--- a/device-types/HPE/HP-3100-24-PoE-v2-EI.yaml
+++ b/device-types/HPE/HP-3100-24-PoE-v2-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 3100-24-PoE v2 EI
-slug: hpe-3100-24-poe-v2-ei
+model: HP 3100-24-PoE v2 EI
+slug: hpe-hp-3100-24-poe-v2-ei
 part_number: JD313B
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-3100-24-v2-EI.yaml b/device-types/HPE/HP-3100-24-v2-EI.yaml
index f9a99277e9d44fdca15d0ae23caeddd1c0a5fddc..2bffe7504a0b9064319c8310c6eaf121cedf7cd3 100644
--- a/device-types/HPE/HP-3100-24-v2-EI.yaml
+++ b/device-types/HPE/HP-3100-24-v2-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 3100-24 v2 EI
-slug: hpe-3100-24-v2-ei
+model: HP 3100-24 v2 EI
+slug: hpe-hp-3100-24-v2-ei
 part_number: JD320B
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-3100-8-v2-EI.yaml b/device-types/HPE/HP-3100-8-v2-EI.yaml
index 0e003eff69cd0a92a3d23646d937d7c7015c5858..ea7cd882426175ec250cd96f75093bde3a69da17 100644
--- a/device-types/HPE/HP-3100-8-v2-EI.yaml
+++ b/device-types/HPE/HP-3100-8-v2-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 3100-8 v2 EI
-slug: hpe-3100-8-v2-ei
+model: HP 3100-8 v2 EI
+slug: hpe-hp-3100-8-v2-ei
 part_number: JD318B
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-5120-24G-PoEP-EI.yaml b/device-types/HPE/HP-5120-24G-PoEP-EI.yaml
index d5ddf43b62fe7c8d70258cd13962f6beefe71561..19e60dba7817e6a110558d79301d85873a1dd4e4 100644
--- a/device-types/HPE/HP-5120-24G-PoEP-EI.yaml
+++ b/device-types/HPE/HP-5120-24G-PoEP-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 5120-24G-PoE+ EI
-slug: hpe-5120-24g-poep-ei
+model: HP 5120-24G-PoE+ EI
+slug: hpe-hp-5120-24g-poep-ei
 part_number: JG236A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-5120-48G-EI-with-2-Interface-Slots.yaml b/device-types/HPE/HP-5120-48G-EI.yaml
similarity index 98%
rename from device-types/HPE/HP-5120-48G-EI-with-2-Interface-Slots.yaml
rename to device-types/HPE/HP-5120-48G-EI.yaml
index c8a776626e59773d4157689749355f53514225c2..5823a0c5502f80c711fcdf34cbfb3274f68ce718 100644
--- a/device-types/HPE/HP-5120-48G-EI-with-2-Interface-Slots.yaml
+++ b/device-types/HPE/HP-5120-48G-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 5120-48G EI
-slug: hpe-5120-48g-ei
+model: HP 5120-48G EI
+slug: hpe-hp-5120-48g-ei
 part_number: JE069A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/HP-5120-48G-PoEP-EI.yaml b/device-types/HPE/HP-5120-48G-PoEP-EI.yaml
index 59664c1537f52a80bf0bfed67819d9a924c36892..0c53d62239f1c9a2ca70dc30863a771dce4a735f 100644
--- a/device-types/HPE/HP-5120-48G-PoEP-EI.yaml
+++ b/device-types/HPE/HP-5120-48G-PoEP-EI.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: HPE
-model: 5120-48G-PoE+ EI
-slug: hpe-5120-48g-poep-ei
+model: HP 5120-48G-PoE+ EI
+slug: hpe-hp-5120-48g-poep-ei
 part_number: JG237A
 u_height: 1
 is_full_depth: false
diff --git a/device-types/HPE/ProCurve-2626-J4900A.yaml b/device-types/HPE/ProCurve-2626-J4900A.yaml
index 2a0106b7ac2396320b09a45b30fa6814e292fcf6..53b35b0bbce9c73db90c3fd077bd4f9fadb684d4 100644
--- a/device-types/HPE/ProCurve-2626-J4900A.yaml
+++ b/device-types/HPE/ProCurve-2626-J4900A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2626 - J4900A
+model: ProCurve 2626 J4900A
 slug: hpe-procurve-2626-j4900a
 part_number: J4900A
 u_height: 1
diff --git a/device-types/HPE/ProCurve-2626-J4900B.yaml b/device-types/HPE/ProCurve-2626-J4900B.yaml
index 8b21691fd91719cad645654a77481a76b22bdde8..0c58cd0d2ebc7626fa8a1dca9808697daf578a5e 100644
--- a/device-types/HPE/ProCurve-2626-J4900B.yaml
+++ b/device-types/HPE/ProCurve-2626-J4900B.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2626 - J4900B
+model: ProCurve 2626 J4900B
 slug: hpe-procurve-2626-j4900b
 part_number: J4900B
 u_height: 1
diff --git a/device-types/HPE/ProCurve-2626-J4900C.yaml b/device-types/HPE/ProCurve-2626-J4900C.yaml
index 47b4dec104b8518c19919b0fe06c3992f2a94bc9..6fbe02a8d62078ce2d0fdf02f62f4c59ef606280 100644
--- a/device-types/HPE/ProCurve-2626-J4900C.yaml
+++ b/device-types/HPE/ProCurve-2626-J4900C.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2626 - J4900C
+model: ProCurve 2626 J4900C
 slug: hpe-procurve-2626-j4900c
 part_number: J4900C
 u_height: 1
diff --git a/device-types/HPE/ProCurve-2650-J4899A.yaml b/device-types/HPE/ProCurve-2650-J4899A.yaml
index 51ddbbb1c46247093a1c527845d4d3a6cdc20405..13181a8e1ac68711a74dc1e31bb7edaeda23dbec 100644
--- a/device-types/HPE/ProCurve-2650-J4899A.yaml
+++ b/device-types/HPE/ProCurve-2650-J4899A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2650 - J4899A
+model: ProCurve 2650 J4899A
 slug: hpe-procurve-2650-j4899a
 part_number: J4899A
 u_height: 1
diff --git a/device-types/HPE/ProCurve-2650-J4899B.yaml b/device-types/HPE/ProCurve-2650-J4899B.yaml
index 11ea0ada2c3647d988aa35b21570aae28ad2c174..ad3ae4fa374fc003a11b6a7660417f00df755a38 100644
--- a/device-types/HPE/ProCurve-2650-J4899B.yaml
+++ b/device-types/HPE/ProCurve-2650-J4899B.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2650 - J4899B
+model: ProCurve 2650 J4899B
 slug: hpe-procurve-2650-j4899b
 part_number: J4899B
 u_height: 1
diff --git a/device-types/HPE/ProCurve-2650-J4899C.yaml b/device-types/HPE/ProCurve-2650-J4899C.yaml
index fa8bd96afe9912fa7740f62cabaec1175c15bdd4..557d7190319531e122e2eb4da4d70d5bead9af18 100644
--- a/device-types/HPE/ProCurve-2650-J4899C.yaml
+++ b/device-types/HPE/ProCurve-2650-J4899C.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 2650 - J4899C
+model: ProCurve 2650 J4899C
 slug: hpe-procurve-2650-j4899c
 part_number: J4899C
 u_height: 1
diff --git a/device-types/HPE/ProCurve-4202vl-72-J8772A.yaml b/device-types/HPE/ProCurve-4202vl-72-J8772A.yaml
index 0efeea0af3189dad05e708387d25c81ee0649d10..e379450c06386503d5ec752ee5a796f394d4aa89 100644
--- a/device-types/HPE/ProCurve-4202vl-72-J8772A.yaml
+++ b/device-types/HPE/ProCurve-4202vl-72-J8772A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 4202vl-72 - J8772A
+model: ProCurve 4202vl-72 J8772A
 slug: hpe-procurve-4202vl-72-j8772a
 part_number: J8772A
 u_height: 3
diff --git a/device-types/HPE/ProCurve-4202vl-72-J8772B.yaml b/device-types/HPE/ProCurve-4202vl-72-J8772B.yaml
index 1e47b8332a0f164f53341171fd96b05eb96284fe..a1c6e0fb23f0dd9fa3449704b1038d627fcce0f4 100644
--- a/device-types/HPE/ProCurve-4202vl-72-J8772B.yaml
+++ b/device-types/HPE/ProCurve-4202vl-72-J8772B.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: ProCurve 4202vl-72 - J8772B
+model: ProCurve 4202vl-72 J8772B
 slug: hpe-procurve-4202vl-72-j8772b
 part_number: J8772B
 u_height: 3
diff --git a/device-types/Huawei/Huawei-2288H-V5.yaml b/device-types/Huawei/2288H-V5.yaml
similarity index 95%
rename from device-types/Huawei/Huawei-2288H-V5.yaml
rename to device-types/Huawei/2288H-V5.yaml
index f3112045f325347b50f86b248d0f44065bca9665..0474e5004df34b595a7dadbf519dfceff45b8069 100644
--- a/device-types/Huawei/Huawei-2288H-V5.yaml
+++ b/device-types/Huawei/2288H-V5.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Huawei
-model: Huawei 2288H V5
+model: 2288H V5
 slug: huawei-2288h-v5
 part_number: H22-05-S8AFF
 u_height: 2
diff --git a/device-types/Huawei/Huawei-CE6820H-48S6CQ.yaml b/device-types/Huawei/CE6820H-48S6CQ.yaml
similarity index 99%
rename from device-types/Huawei/Huawei-CE6820H-48S6CQ.yaml
rename to device-types/Huawei/CE6820H-48S6CQ.yaml
index 7031d9976ef860b1e4a2c7afc21f43dd726a903c..8a3f190f94b64cedd622580143daec6e0396ab65 100644
--- a/device-types/Huawei/Huawei-CE6820H-48S6CQ.yaml
+++ b/device-types/Huawei/CE6820H-48S6CQ.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Huawei
-model: Huawei_CE6820H-48S6CQ
+model: CE6820H-48S6CQ
 slug: huawei-ce6820h-48s6cq
 part_number: CE6820H-48S6CQ
 u_height: 1
diff --git a/device-types/Huawei/Huawei-Dorado-3000-v6.yaml b/device-types/Huawei/Dorado-3000-v6.yaml
similarity index 97%
rename from device-types/Huawei/Huawei-Dorado-3000-v6.yaml
rename to device-types/Huawei/Dorado-3000-v6.yaml
index ce7cc95eefdb53fc2f3d22485fd09ae0f5c82490..325bf70d3364664b73da6f99a1d5a4c3e96e3d49 100644
--- a/device-types/Huawei/Huawei-Dorado-3000-v6.yaml
+++ b/device-types/Huawei/Dorado-3000-v6.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Huawei
-model: Huawei Dorado 3000 V6
+model: Dorado 3000 V6
 slug: huawei-dorado-3000-v6
 part_number: D3V6-192G-SAS
 u_height: 2
diff --git a/device-types/Huawei/DC908.yaml b/device-types/Huawei/OptiXtrans-DC908.yaml
similarity index 100%
rename from device-types/Huawei/DC908.yaml
rename to device-types/Huawei/OptiXtrans-DC908.yaml
diff --git a/device-types/Huawei/Huawei-S5732-H24UM2CC.yaml b/device-types/Huawei/S5732-H24UM2CC.yaml
similarity index 98%
rename from device-types/Huawei/Huawei-S5732-H24UM2CC.yaml
rename to device-types/Huawei/S5732-H24UM2CC.yaml
index 3ae98f28587e546d837cc966f520eebe412f62ab..bc0e740ede0acc1c2c36205790e68c6eedc99055 100644
--- a/device-types/Huawei/Huawei-S5732-H24UM2CC.yaml
+++ b/device-types/Huawei/S5732-H24UM2CC.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Huawei
-model: Huawei_S5732-H24UM2CC
+model: S5732-H24UM2CC
 slug: huawei-s5732-h24um2cc
 part_number: S5732-H24UM2CC
 u_height: 1
diff --git a/device-types/Huawei/huawei-s5720-56c-ei-48s-ac.yaml b/device-types/Huawei/s5720-56c-ei-48s-ac.yaml
similarity index 100%
rename from device-types/Huawei/huawei-s5720-56c-ei-48s-ac.yaml
rename to device-types/Huawei/s5720-56c-ei-48s-ac.yaml
diff --git a/device-types/IBM/BladeCenter-GS22.yaml b/device-types/IBM/BladeCenter-HS22.yaml
similarity index 100%
rename from device-types/IBM/BladeCenter-GS22.yaml
rename to device-types/IBM/BladeCenter-HS22.yaml
diff --git a/device-types/Infinera/CloudXpress2.yml b/device-types/Infinera/Cloud-Xpress-2.yml
similarity index 100%
rename from device-types/Infinera/CloudXpress2.yml
rename to device-types/Infinera/Cloud-Xpress-2.yml
diff --git a/device-types/Intel/NUC11TNHi5.yaml b/device-types/Intel/NUC11TNBi5.yaml
similarity index 100%
rename from device-types/Intel/NUC11TNHi5.yaml
rename to device-types/Intel/NUC11TNBi5.yaml
diff --git a/device-types/Juniper/SRX210HE2.yaml b/device-types/Juniper/SRX210HE2.yaml
index d361173cb66adae83fbcc0861d711ad517e8f2b3..5388045fa0c7251b4a935b5c02034e6c4d8dd1fc 100644
--- a/device-types/Juniper/SRX210HE2.yaml
+++ b/device-types/Juniper/SRX210HE2.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Juniper
-model: SRX21HE2
-slug: juniper-srx21he2
+model: SRX210HE2
+slug: juniper-srx210he2
 is_full_depth: false
 interfaces:
   - name: ge-0/0/0
diff --git a/device-types/MikroTik/C53UiG-5HPaxD2HPaxD.yaml b/device-types/MikroTik/C53UiG-Plus-5HPaxD2HPaxD.yaml
similarity index 100%
rename from device-types/MikroTik/C53UiG-5HPaxD2HPaxD.yaml
rename to device-types/MikroTik/C53UiG-Plus-5HPaxD2HPaxD.yaml
diff --git a/device-types/MikroTik/CCR1009-7G-1C-1S+PC.yaml b/device-types/MikroTik/CCR1009-7G-1C-1S-Plus-PC.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1009-7G-1C-1S+PC.yaml
rename to device-types/MikroTik/CCR1009-7G-1C-1S-Plus-PC.yaml
diff --git a/device-types/MikroTik/CCR1009-7G-1C-1S+.yaml b/device-types/MikroTik/CCR1009-7G-1C-1S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1009-7G-1C-1S+.yaml
rename to device-types/MikroTik/CCR1009-7G-1C-1S-Plus.yaml
diff --git a/device-types/MikroTik/CCR1009-8G-1S-1S+.yaml b/device-types/MikroTik/CCR1009-8G-1S-1S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1009-8G-1S-1S+.yaml
rename to device-types/MikroTik/CCR1009-8G-1S-1S-Plus.yaml
diff --git a/device-types/MikroTik/CCR1016-12S-1S+.yaml b/device-types/MikroTik/CCR1016-12S-1S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1016-12S-1S+.yaml
rename to device-types/MikroTik/CCR1016-12S-1S-Plus.yaml
diff --git a/device-types/MikroTik/CCR1036-8G-2S+EM.yaml b/device-types/MikroTik/CCR1036-8G-2S-Plus-EM.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1036-8G-2S+EM.yaml
rename to device-types/MikroTik/CCR1036-8G-2S-Plus-EM.yaml
diff --git a/device-types/MikroTik/CCR1036-8G-2S+.yaml b/device-types/MikroTik/CCR1036-8G-2S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1036-8G-2S+.yaml
rename to device-types/MikroTik/CCR1036-8G-2S-Plus.yaml
diff --git a/device-types/MikroTik/CCR1072-1G-8S+.yaml b/device-types/MikroTik/CCR1072-1G-8S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR1072-1G-8S+.yaml
rename to device-types/MikroTik/CCR1072-1G-8S-Plus.yaml
diff --git a/device-types/MikroTik/CCR2004-16G-2S+.yaml b/device-types/MikroTik/CCR2004-16G-2S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR2004-16G-2S+.yaml
rename to device-types/MikroTik/CCR2004-16G-2S-Plus.yaml
diff --git a/device-types/MikroTik/CCR2004-1G-12S+2XS.yaml b/device-types/MikroTik/CCR2004-1G-12S-Plus-2XS.yaml
similarity index 100%
rename from device-types/MikroTik/CCR2004-1G-12S+2XS.yaml
rename to device-types/MikroTik/CCR2004-1G-12S-Plus-2XS.yaml
diff --git a/device-types/MikroTik/CCR2116-12G-4S+.yaml b/device-types/MikroTik/CCR2116-12G-4S-Plus.yaml
similarity index 100%
rename from device-types/MikroTik/CCR2116-12G-4S+.yaml
rename to device-types/MikroTik/CCR2116-12G-4S-Plus.yaml
diff --git a/device-types/MikroTik/CRS212-1G-10S-1S+IN.yaml b/device-types/MikroTik/CRS212-1G-10S-1S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/CRS212-1G-10S-1S+IN.yaml
rename to device-types/MikroTik/CRS212-1G-10S-1S-Plus-IN.yaml
diff --git a/device-types/MikroTik/CRS226-24G-2S+RM.yaml b/device-types/MikroTik/CRS226-24G-2S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS226-24G-2S+RM.yaml
rename to device-types/MikroTik/CRS226-24G-2S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS305-1G-4S+IN.yaml b/device-types/MikroTik/CRS305-1G-4S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/CRS305-1G-4S+IN.yaml
rename to device-types/MikroTik/CRS305-1G-4S-Plus-IN.yaml
diff --git a/device-types/MikroTik/CRS309-1G-8S+IN.yaml b/device-types/MikroTik/CRS309-1G-8S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/CRS309-1G-8S+IN.yaml
rename to device-types/MikroTik/CRS309-1G-8S-Plus-IN.yaml
diff --git a/device-types/MikroTik/CRS310-1G-5S-4S+IN.yaml b/device-types/MikroTik/CRS310-1G-5S-4S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/CRS310-1G-5S-4S+IN.yaml
rename to device-types/MikroTik/CRS310-1G-5S-4S-Plus-IN.yaml
diff --git a/device-types/MikroTik/CRS312-4C+8XG-RM.yaml b/device-types/MikroTik/CRS312-4C-Plus-8XG-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS312-4C+8XG-RM.yaml
rename to device-types/MikroTik/CRS312-4C-Plus-8XG-RM.yaml
diff --git a/device-types/MikroTik/CRS317-1G-16S+RM.yaml b/device-types/MikroTik/CRS317-1G-16S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS317-1G-16S+RM.yaml
rename to device-types/MikroTik/CRS317-1G-16S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS326-24G-2S+RM.yaml b/device-types/MikroTik/CRS326-24G-2S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS326-24G-2S+RM.yaml
rename to device-types/MikroTik/CRS326-24G-2S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS326-24S+2Q+RM.yaml b/device-types/MikroTik/CRS326-24S-Plus-2Q-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS326-24S+2Q+RM.yaml
rename to device-types/MikroTik/CRS326-24S-Plus-2Q-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS328-24P-4S+RM.yaml b/device-types/MikroTik/CRS328-24P-4S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS328-24P-4S+RM.yaml
rename to device-types/MikroTik/CRS328-24P-4S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS328-4C-20S-4S+RM.yaml b/device-types/MikroTik/CRS328-4C-20S-4S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS328-4C-20S-4S+RM.yaml
rename to device-types/MikroTik/CRS328-4C-20S-4S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS354-48G-4S+2Q+RM.yaml b/device-types/MikroTik/CRS354-48G-4S-Plus-2Q-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS354-48G-4S+2Q+RM.yaml
rename to device-types/MikroTik/CRS354-48G-4S-Plus-2Q-Plus-RM.yaml
diff --git a/device-types/MikroTik/CRS354-48P-4S+2Q+RM.yaml b/device-types/MikroTik/CRS354-48P-4S-Plus-2Q-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CRS354-48P-4S+2Q+RM.yaml
rename to device-types/MikroTik/CRS354-48P-4S-Plus-2Q-Plus-RM.yaml
diff --git a/device-types/MikroTik/CSS326-24G-2S+RM.yaml b/device-types/MikroTik/CSS326-24G-2S-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/CSS326-24G-2S+RM.yaml
rename to device-types/MikroTik/CSS326-24G-2S-Plus-RM.yaml
diff --git a/device-types/MikroTik/CSS610-8G-2S+IN.yaml b/device-types/MikroTik/CSS610-8G-2S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/CSS610-8G-2S+IN.yaml
rename to device-types/MikroTik/CSS610-8G-2S-Plus-IN.yaml
diff --git a/device-types/MikroTik/RB4011iGS+RM.yaml b/device-types/MikroTik/RB4011iGS-Plus-RM.yaml
similarity index 100%
rename from device-types/MikroTik/RB4011iGS+RM.yaml
rename to device-types/MikroTik/RB4011iGS-Plus-RM.yaml
diff --git a/device-types/MikroTik/RB5009UG+S+IN.yaml b/device-types/MikroTik/RB5009UG-Plus-S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/RB5009UG+S+IN.yaml
rename to device-types/MikroTik/RB5009UG-Plus-S-Plus-IN.yaml
diff --git a/device-types/MikroTik/RB5009UPr+S+IN.yaml b/device-types/MikroTik/RB5009UPr-Plus-S-Plus-IN.yaml
similarity index 100%
rename from device-types/MikroTik/RB5009UPr+S+IN.yaml
rename to device-types/MikroTik/RB5009UPr-Plus-S-Plus-IN.yaml
diff --git a/device-types/Neousys/Nuvo-824DGC.yaml b/device-types/Neousys/Nuvo-8240GC.yaml
similarity index 100%
rename from device-types/Neousys/Nuvo-824DGC.yaml
rename to device-types/Neousys/Nuvo-8240GC.yaml
diff --git a/device-types/Netgate/7100.yaml b/device-types/Netgate/7100-Security-Gateway.yaml
similarity index 100%
rename from device-types/Netgate/7100.yaml
rename to device-types/Netgate/7100-Security-Gateway.yaml
diff --git a/device-types/Netgear/GS116E.yaml b/device-types/Netgear/GS116Ev2.yaml
similarity index 100%
rename from device-types/Netgear/GS116E.yaml
rename to device-types/Netgear/GS116Ev2.yaml
diff --git a/device-types/Netonix/WS-12-120-AC.yaml b/device-types/Netonix/WS-12-250-AC.yaml
similarity index 100%
rename from device-types/Netonix/WS-12-120-AC.yaml
rename to device-types/Netonix/WS-12-250-AC.yaml
diff --git a/device-types/Pluribus/Freedom-E28Q-L.yaml b/device-types/Pluribus/Freedom-E28Q-L.yaml
index 19898d949b4dae9c49a41b0bbf9121bf28bf52bb..a6d481b5b316c8ed622320081930ca2c1d1c1118 100644
--- a/device-types/Pluribus/Freedom-E28Q-L.yaml
+++ b/device-types/Pluribus/Freedom-E28Q-L.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Pluribus
 model: Freedom E28Q-L
-slug: freedom-e28q-l
+slug: pluribus-freedom-e28q-l
 part_number: E28Q-L
 u_height: 2
 is_full_depth: true
diff --git a/device-types/QCT/D51B-2U-DUAL-1G-LOM.yml b/device-types/QCT/QuantaGrid-D51B-2U.yml
similarity index 100%
rename from device-types/QCT/D51B-2U-DUAL-1G-LOM.yml
rename to device-types/QCT/QuantaGrid-D51B-2U.yml
diff --git a/device-types/Solid Optics/SO-DWDM-MUX-8CH-UPG.yaml b/device-types/Solid Optics/SO-DWDM-MUX-8CH-Plus-UPG.yaml
similarity index 100%
rename from device-types/Solid Optics/SO-DWDM-MUX-8CH-UPG.yaml
rename to device-types/Solid Optics/SO-DWDM-MUX-8CH-Plus-UPG.yaml
diff --git a/device-types/Solid Optics/SO-DWDM-MUX-CH20-35-UPG-MON.yaml b/device-types/Solid Optics/SO-DWDM-MUX-CH20-35-Plus-UPG-Plus-MON.yaml
similarity index 100%
rename from device-types/Solid Optics/SO-DWDM-MUX-CH20-35-UPG-MON.yaml
rename to device-types/Solid Optics/SO-DWDM-MUX-CH20-35-Plus-UPG-Plus-MON.yaml
diff --git a/device-types/Supermicro/SYS-2028U-E1CNR4T.yml b/device-types/Supermicro/SYS-2028U-E1CNR4T-Plus.yml
similarity index 100%
rename from device-types/Supermicro/SYS-2028U-E1CNR4T.yml
rename to device-types/Supermicro/SYS-2028U-E1CNR4T-Plus.yml
diff --git a/device-types/Testing/Test.yaml b/device-types/Testing/Test-1000.yaml
similarity index 100%
rename from device-types/Testing/Test.yaml
rename to device-types/Testing/Test-1000.yaml
diff --git a/device-types/Thales/Luna-G5Backup.yaml b/device-types/Thales/G5Backup.yaml
similarity index 100%
rename from device-types/Thales/Luna-G5Backup.yaml
rename to device-types/Thales/G5Backup.yaml
diff --git a/device-types/Ubiquiti/LAP-120.yaml b/device-types/Ubiquiti/LiteAP-120.yaml
similarity index 100%
rename from device-types/Ubiquiti/LAP-120.yaml
rename to device-types/Ubiquiti/LiteAP-120.yaml
diff --git a/device-types/Ubiquiti/NanoStation-LOCO5AC.yaml b/device-types/Ubiquiti/NanoStation-LOCO-5AC.yaml
similarity index 71%
rename from device-types/Ubiquiti/NanoStation-LOCO5AC.yaml
rename to device-types/Ubiquiti/NanoStation-LOCO-5AC.yaml
index 7c72d12358b188e176e2e59ab1d8485b003538ce..6f2b79cbfd3f1fd6d38344f0f05809a15615fece 100644
--- a/device-types/Ubiquiti/NanoStation-LOCO5AC.yaml
+++ b/device-types/Ubiquiti/NanoStation-LOCO-5AC.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Ubiquiti
-model: Nano Station LOCO 5AC
-slug: ubiquiti-nano-station-loco-5ac
+model: NanoStation LOCO 5AC
+slug: ubiquiti-nanostation-loco-5ac
 part_number: LOCO5AC
 u_height: 0
 is_full_depth: false
diff --git a/device-types/V-Solution/V-Solution-V1600D2.yaml b/device-types/V-Solution/V1600D2.yaml
similarity index 100%
rename from device-types/V-Solution/V-Solution-V1600D2.yaml
rename to device-types/V-Solution/V1600D2.yaml
diff --git a/device-types/ZTE/C300.yaml b/device-types/ZTE/ZXA10-C300.yaml
similarity index 100%
rename from device-types/ZTE/C300.yaml
rename to device-types/ZTE/ZXA10-C300.yaml
diff --git a/module-types/Adtran/SM40-1187040G1.yml b/module-types/Adtran/SM40.yml
similarity index 100%
rename from module-types/Adtran/SM40-1187040G1.yml
rename to module-types/Adtran/SM40.yml
diff --git a/module-types/Allied Telesis/PWR4.yaml b/module-types/Allied Telesis/CentreCOM-PWR4.yaml
similarity index 100%
rename from module-types/Allied Telesis/PWR4.yaml
rename to module-types/Allied Telesis/CentreCOM-PWR4.yaml
diff --git a/module-types/Arista/DCS-7368-4DC.yaml b/module-types/Arista/DCS-7368-4D.yaml
similarity index 100%
rename from module-types/Arista/DCS-7368-4DC.yaml
rename to module-types/Arista/DCS-7368-4D.yaml
diff --git a/module-types/Check Point/2-10FSR-BP-B.yaml b/module-types/Check Point/CPAC-2-10FSR-BP-B.yaml
similarity index 100%
rename from module-types/Check Point/2-10FSR-BP-B.yaml
rename to module-types/Check Point/CPAC-2-10FSR-BP-B.yaml
diff --git a/module-types/Check Point/4-10F-C.yaml b/module-types/Check Point/CPAC-4-10F-C.yaml
similarity index 100%
rename from module-types/Check Point/4-10F-C.yaml
rename to module-types/Check Point/CPAC-4-10F-C.yaml
diff --git a/module-types/Check Point/4-1C-BP-B.yaml b/module-types/Check Point/CPAC-4-1C-BP-B.yaml
similarity index 100%
rename from module-types/Check Point/4-1C-BP-B.yaml
rename to module-types/Check Point/CPAC-4-1C-BP-B.yaml
diff --git a/module-types/Check Point/4-1F-C.yaml b/module-types/Check Point/CPAC-4-1F-C.yaml
similarity index 100%
rename from module-types/Check Point/4-1F-C.yaml
rename to module-types/Check Point/CPAC-4-1F-C.yaml
diff --git a/module-types/Check Point/8-1C-C.yaml b/module-types/Check Point/CPAC-8-1C-C.yaml
similarity index 100%
rename from module-types/Check Point/8-1C-C.yaml
rename to module-types/Check Point/CPAC-8-1C-C.yaml
diff --git a/module-types/Cisco/AIM-VPN_EPII-PLUS.yaml b/module-types/Cisco/AIM-VPN-EPII-PLUS.yaml
similarity index 100%
rename from module-types/Cisco/AIM-VPN_EPII-PLUS.yaml
rename to module-types/Cisco/AIM-VPN-EPII-PLUS.yaml
diff --git a/module-types/Cisco/C4KX-NM-8SFP+.yaml b/module-types/Cisco/C4KX-NM-8SFPP.yaml
similarity index 100%
rename from module-types/Cisco/C4KX-NM-8SFP+.yaml
rename to module-types/Cisco/C4KX-NM-8SFPP.yaml
diff --git a/module-types/Cisco/Meraki-MA-PWR-1025WAC.yaml b/module-types/Cisco/Meraki-MA-PWR-1025WAC.yaml
index e4438c1d83c8e8c5c2016a31e79065d9e26379ee..aaf9476a7b48193d71e3cb4a338a86a82b98eeae 100644
--- a/module-types/Cisco/Meraki-MA-PWR-1025WAC.yaml
+++ b/module-types/Cisco/Meraki-MA-PWR-1025WAC.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Cisco
-model: MA-PWR-1025WAC
+model: Meraki MA-PWR-1025WAC
 part_number: MA-PWR-1025WAC
 comments: '[1025W power supply unit product information](https://meraki.cisco.com/product/switches/switches-accessories/switches-accessories-power/1025-watt-power-supply/)'
 power-ports:
diff --git a/module-types/Cisco/Meraki-MA-PWR-250WAC.yaml b/module-types/Cisco/Meraki-MA-PWR-250WAC.yaml
index 692eed35d671def2b09a4696e5fb7247ca6b0098..e9da4421110347f9c7ea730e1a4821be3ef0f0e6 100644
--- a/module-types/Cisco/Meraki-MA-PWR-250WAC.yaml
+++ b/module-types/Cisco/Meraki-MA-PWR-250WAC.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Cisco
-model: MA-PWR-250WAC
+model: Meraki MA-PWR-250WAC
 part_number: MA-PWR-250WAC
 comments: '[250W power supply unit product information](https://meraki.cisco.com/product/security-sd-wan/appliances-accessories/ma-pwr-250wac/)'
 power-ports:
diff --git a/module-types/Cisco/Meraki-MA-PWR-640WAC.yaml b/module-types/Cisco/Meraki-MA-PWR-640WAC.yaml
index aa6ea63ee5471c365e9bbff7089bbcf67a613450..baac1b800819c721134a3810f2147cb88490e993 100644
--- a/module-types/Cisco/Meraki-MA-PWR-640WAC.yaml
+++ b/module-types/Cisco/Meraki-MA-PWR-640WAC.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Cisco
-model: MA-PWR-640WAC
+model: Meraki MA-PWR-640WAC
 part_number: MA-PWR-640WAC
 comments: '[640W power supply unit product information](https://meraki.cisco.com/product/switches/switches-accessories/switches-accessories-power/640-watt-power-supply/)'
 power-ports:
diff --git a/module-types/Cisco/WS-X4013+10GE.yaml b/module-types/Cisco/WS-X4013-Plus-10GE-II-Plus.yaml
similarity index 100%
rename from module-types/Cisco/WS-X4013+10GE.yaml
rename to module-types/Cisco/WS-X4013-Plus-10GE-II-Plus.yaml
diff --git a/module-types/Cisco/WS-X4013+.yaml b/module-types/Cisco/WS-X4013-Plus-II-Plus.yaml
similarity index 100%
rename from module-types/Cisco/WS-X4013+.yaml
rename to module-types/Cisco/WS-X4013-Plus-II-Plus.yaml
diff --git a/module-types/Cisco/WS-X4648-RJ45V+E.yaml b/module-types/Cisco/WS-X4648-RJ45V-Plus-E.yaml
similarity index 100%
rename from module-types/Cisco/WS-X4648-RJ45V+E.yaml
rename to module-types/Cisco/WS-X4648-RJ45V-Plus-E.yaml
diff --git a/module-types/Cisco/WS-X4748-RJ45V+E.yaml b/module-types/Cisco/WS-X4748-RJ45V-Plus-E.yaml
similarity index 100%
rename from module-types/Cisco/WS-X4748-RJ45V+E.yaml
rename to module-types/Cisco/WS-X4748-RJ45V-Plus-E.yaml
diff --git a/module-types/Cisco/WS-X4748-UPOE+E.yaml b/module-types/Cisco/WS-X4748-UPOEPE.yaml
similarity index 97%
rename from module-types/Cisco/WS-X4748-UPOE+E.yaml
rename to module-types/Cisco/WS-X4748-UPOEPE.yaml
index e67e855dd0e4082bba4eb5aaea2b26e4a16f805d..662699a4a8f991dcc3bc7f6bf57ffb2235f5f2bd 100644
--- a/module-types/Cisco/WS-X4748-UPOE+E.yaml
+++ b/module-types/Cisco/WS-X4748-UPOEPE.yaml
@@ -1,7 +1,7 @@
 ---
 manufacturer: Cisco
 part_number: WS-X4748-UPOE+E
-model: 10/100/1000BaseT (RJ45)+V E Series with 48 10/100/1000 baseT UPOE ports
+model: WS-X4748-UPOE+E
 interfaces:
   - name: GigabitEthernet{module}/1
     type: 1000base-t
diff --git a/module-types/Datacom/FAN_OLT-DM4610.yaml b/module-types/Datacom/DM4610-FAN.yaml
similarity index 100%
rename from module-types/Datacom/FAN_OLT-DM4610.yaml
rename to module-types/Datacom/DM4610-FAN.yaml
diff --git a/module-types/Datacom/PSU-120-AC_OLT-DM4610.yaml b/module-types/Datacom/PSU-120-AC.yaml
similarity index 100%
rename from module-types/Datacom/PSU-120-AC_OLT-DM4610.yaml
rename to module-types/Datacom/PSU-120-AC.yaml
diff --git a/module-types/Datacom/PSU-120-DC_OLT-DM4610.yaml b/module-types/Datacom/PSU-120-DC.yaml
similarity index 100%
rename from module-types/Datacom/PSU-120-DC_OLT-DM4610.yaml
rename to module-types/Datacom/PSU-120-DC.yaml
diff --git a/module-types/Datto/ANT24805045-DP460.yml b/module-types/Datto/Patch-Antenna-AP840E.yml
similarity index 64%
rename from module-types/Datto/ANT24805045-DP460.yml
rename to module-types/Datto/Patch-Antenna-AP840E.yml
index 728f45892faafbad44e0443e2d1b3d7942485e8e..338d8fe787e8ad3ac0761bcba2e51d561256722e 100644
--- a/module-types/Datto/ANT24805045-DP460.yml
+++ b/module-types/Datto/Patch-Antenna-AP840E.yml
@@ -1,4 +1,4 @@
 ---
 manufacturer: Datto
-model: Patch Antenna (AP840E)
+model: Patch Antenna AP840E
 part_number: ANT24805045-DP460
diff --git a/module-types/Eaton/TrippLite-SNMPWEBCARD.yaml b/module-types/Eaton/TrippLite-SNMPWEBCARD.yaml
index e0f27e8cadf91fc56e17a1213234700f35d02c53..d04e198b6f984a2bf0a1e2368972862f423ad588 100644
--- a/module-types/Eaton/TrippLite-SNMPWEBCARD.yaml
+++ b/module-types/Eaton/TrippLite-SNMPWEBCARD.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Eaton
-model: SNMPWEBCARD
+model: TrippLite SNMPWEBCARD
 part_number: SNMPWEBCARD
 comments: SNMPWEBCARD is an optional network card that you can install in the accessory slot of a compatible UPS systems or PDU. [Manual](https://www.tripplite.com/support/owners-manual/843356)
 interfaces:
diff --git a/module-types/Edgecore/YM-2651Y_B01R.yaml b/module-types/Edgecore/YM-2651Y-B01R.yaml
similarity index 89%
rename from module-types/Edgecore/YM-2651Y_B01R.yaml
rename to module-types/Edgecore/YM-2651Y-B01R.yaml
index f34aff267189f77e79e1d35b3fe3faddcc8da127..24874e0cfcf78c85e933679c29501c46f164c613 100755
--- a/module-types/Edgecore/YM-2651Y_B01R.yaml
+++ b/module-types/Edgecore/YM-2651Y-B01R.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Edgecore
-model: YM-2651Y, B01R
+model: YM-2651Y B01R
 part_number: F0TZZ5654019A
 comments: 650W AC Power Supply FRU Port-to-Power airflow
 power-ports:
diff --git a/module-types/Edgecore/YM-2651Y_C01R.yaml b/module-types/Edgecore/YM-2651Y-C01R.yaml
similarity index 89%
rename from module-types/Edgecore/YM-2651Y_C01R.yaml
rename to module-types/Edgecore/YM-2651Y-C01R.yaml
index 9732631eae147360c977095735bbf20098e9d064..c8a5814f2cb4c9d4d5d64f760c8c8e60e8d52d31 100755
--- a/module-types/Edgecore/YM-2651Y_C01R.yaml
+++ b/module-types/Edgecore/YM-2651Y-C01R.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: Edgecore
-model: YM-2651Y, C01R
+model: YM-2651Y C01R
 part_number: F0TZZ5654020A
 comments: 650W AC Power Supply FRU Power-to-Port airflow
 power-ports:
diff --git a/module-types/Generic/LC-Keystone.yaml b/module-types/Generic/Keystone-LC-Fiber.yaml
similarity index 100%
rename from module-types/Generic/LC-Keystone.yaml
rename to module-types/Generic/Keystone-LC-Fiber.yaml
diff --git a/module-types/Generic/RJ45-Keystone.yaml b/module-types/Generic/Keystone-RJ45.yaml
similarity index 100%
rename from module-types/Generic/RJ45-Keystone.yaml
rename to module-types/Generic/Keystone-RJ45.yaml
diff --git a/module-types/HPE/HPE-830272-B21.yaml b/module-types/HPE/830272-B21.yaml
similarity index 100%
rename from module-types/HPE/HPE-830272-B21.yaml
rename to module-types/HPE/830272-B21.yaml
diff --git a/module-types/HPE/HPE-865408-B21.yaml b/module-types/HPE/865408-B21.yaml
similarity index 100%
rename from module-types/HPE/HPE-865408-B21.yaml
rename to module-types/HPE/865408-B21.yaml
diff --git a/module-types/HPE/HPE-865414-B21.yaml b/module-types/HPE/865414-B21.yaml
similarity index 100%
rename from module-types/HPE/HPE-865414-B21.yaml
rename to module-types/HPE/865414-B21.yaml
diff --git a/module-types/HPE/Aruba-J8712A.yaml b/module-types/HPE/Aruba-J8712A.yaml
index a789c34a4850d2a46f3429a9cccb7011f2c65bf5..dfec66c3acfdb5f4e22a62c8cd368ffe138904dc 100644
--- a/module-types/HPE/Aruba-J8712A.yaml
+++ b/module-types/HPE/Aruba-J8712A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J8712A
+model: Aruba J8712A
 part_number: J8712A
 comments: "## Electrical characteristics\r\n* Voltage: 100-127 VAC1200-240 VAC \n* Maximum current: 12 A15.7 A\r\n* Frequency range: 50160 Hz\r\n* Power:\
   \ 875 W\r\n## Notes:\r\n* J8712A supplies 600 W chassis power and 273 W PoE power.\r\n* Two J8712A supplies are required to power the J8715A chassis."
diff --git a/module-types/HPE/Aruba-J8713A.yaml b/module-types/HPE/Aruba-J8713A.yaml
index 34e244b49d40ce658519a66b3c76ce53f274a067..86031c9dd6bf25ef32fcfc807770b3e2878f5299 100644
--- a/module-types/HPE/Aruba-J8713A.yaml
+++ b/module-types/HPE/Aruba-J8713A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J8713A
+model: Aruba J8713A
 part_number: J8713A
 comments: "## Physical characteristics\r\n* Dimensions: 6.05 x 7.45 x 5.1 in. (15.37 x 18.92 x 12.95 cm)\r\n* Weight: 7.5 lb (3.4 kg)\r\n\r\n## Electrical\
   \ characteristics\r\n* Maximum current: 10A\r\n* Frequency range: 50/60 Hz\r\n* Power 1500 W \r\n* 220V Only\r\n\r\n## Notes\r\nInstallation of the J8713A\
diff --git a/module-types/HPE/Aruba-J9306A.yaml b/module-types/HPE/Aruba-J9306A.yaml
index 99f94f75499ca949d610b3e63e2733bb9dcabeac..82de566de306de673c2c2d1ce37642314ff5c629 100644
--- a/module-types/HPE/Aruba-J9306A.yaml
+++ b/module-types/HPE/Aruba-J9306A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9306A
+model: Aruba J9306A
 part_number: J9306A
 comments: "## Physical characteristics\r\n* Dimensions: 6.05(d) x 7.45(w) x 5.1(h) in. (15.37 x 18.92 x 12.95 cm)\r\n* Weight 7.5 Ib (3.2 kg)\r\n* Electrical\
   \ characteristics\r\n* Voltage: 100-127 VAC/200-240 VAC\r\n* N3xIimum Current. 13 10A\r\n* Maximum power rating: 1500 W\r\n* Frequency range, 50/60 HZ\r\
diff --git a/module-types/HPE/Aruba-J9534A.yaml b/module-types/HPE/Aruba-J9534A.yaml
index 2688add2468237e71559e9a541dd8258c79fb154..5851b025e8f108acc03f631894d867dd29845777 100644
--- a/module-types/HPE/Aruba-J9534A.yaml
+++ b/module-types/HPE/Aruba-J9534A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9534A
+model: Aruba J9534A
 part_number: J9534A
 comments: HP J9534A 24-port Gig-T PoE+ v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9535A.yaml b/module-types/HPE/Aruba-J9535A.yaml
index 8e17393bdf026776991f27a3abcaeced1595af7d..968be197895ce8237b43fed98ec4fde04a77a91d 100644
--- a/module-types/HPE/Aruba-J9535A.yaml
+++ b/module-types/HPE/Aruba-J9535A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9535A
+model: Aruba J9535A
 part_number: J9535A
 comments: HP J9535A 20-port Gig-T PoE+/4-port SFP v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9536A.yaml b/module-types/HPE/Aruba-J9536A.yaml
index 6ff494d0789fc8513bac08cad618bb03c3145de3..182ecc3be083ce01faeef5bb216db6b214a0ce32 100644
--- a/module-types/HPE/Aruba-J9536A.yaml
+++ b/module-types/HPE/Aruba-J9536A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9536A
+model: Aruba J9536A
 part_number: J9536A
 comments: HP J9536A 20-port Gig-T PoE+/2-port 10GbE SFP+ v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9537A.yaml b/module-types/HPE/Aruba-J9537A.yaml
index 6808fbf93a1ea9a42a8752605fe54d42fc681c75..663016f046651778e96fc020b9ef4704ea13c2f7 100644
--- a/module-types/HPE/Aruba-J9537A.yaml
+++ b/module-types/HPE/Aruba-J9537A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9537A
+model: Aruba J9537A
 part_number: J9537A
 comments: HP J9537A 24-port SFP v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9538A.yaml b/module-types/HPE/Aruba-J9538A.yaml
index 09c9f3cf5cb501f6575d55fc3573e6e56c665e24..b10c92dce995bfe7216ef00dcfa7bd9eadae6e2f 100644
--- a/module-types/HPE/Aruba-J9538A.yaml
+++ b/module-types/HPE/Aruba-J9538A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9538A
+model: Aruba J9538A
 part_number: J9538A
 comments: HP J9538A 8p 10G-GbE SFP+ v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9546A.yaml b/module-types/HPE/Aruba-J9546A.yaml
index 2495a7010bb32cc8ebf4c343687d2de9992496fb..6f5b964c9409d010d43ca4b0b690b386e83832db 100644
--- a/module-types/HPE/Aruba-J9546A.yaml
+++ b/module-types/HPE/Aruba-J9546A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9546A
+model: Aruba J9546A
 part_number: J9546A
 comments: HP J9546A 8-port 10GBASE-T v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9547A.yaml b/module-types/HPE/Aruba-J9547A.yaml
index a75b381a8f40ce5860e9847406c561b45c39ebfa..eb77d1522301dd1fe53d18493c7dfb3122703381 100644
--- a/module-types/HPE/Aruba-J9547A.yaml
+++ b/module-types/HPE/Aruba-J9547A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9547A
+model: Aruba J9547A
 part_number: J9547A
 comments: HP J9547A 24-port 10/100 PoE+ v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9548A.yaml b/module-types/HPE/Aruba-J9548A.yaml
index ee12e76509cddd0935840699b28b9e6b20118a78..200a69006c22b9dc5c8744509529905a5ffe35cc 100644
--- a/module-types/HPE/Aruba-J9548A.yaml
+++ b/module-types/HPE/Aruba-J9548A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9548A
+model: Aruba J9548A
 part_number: J9548A
 comments: HP J9548A 20-port Gig-T/2-port 10GbE SFP+ v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9549A.yaml b/module-types/HPE/Aruba-J9549A.yaml
index 2c819079644bd503d788bb50696baa7b61da1972..5f57f6e05c043a3358fff461a5de4516d224013b 100644
--- a/module-types/HPE/Aruba-J9549A.yaml
+++ b/module-types/HPE/Aruba-J9549A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9549A
+model: Aruba J9549A
 part_number: J9549A
 comments: HP J9549A 20-port Gig-T/4-port SFP v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9550A.yaml b/module-types/HPE/Aruba-J9550A.yaml
index a1644c35b849cacbeaa0d0c4316281ed3dc7f3cb..837d3f729c2dc5144dc152d23b9b5696ad33a040 100644
--- a/module-types/HPE/Aruba-J9550A.yaml
+++ b/module-types/HPE/Aruba-J9550A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9550A
+model: Aruba J9550A
 part_number: J9550A
 comments: HP J9550A 24-port Gig-T v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9637A.yaml b/module-types/HPE/Aruba-J9637A.yaml
index 76871414f35e8dc0b6135e6dfdf9feb93d1974c4..aa670bb4a672c0b9a37be0b9a156293526ce67e2 100644
--- a/module-types/HPE/Aruba-J9637A.yaml
+++ b/module-types/HPE/Aruba-J9637A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9637A
+model: Aruba J9637A
 part_number: J9637A
 comments: HP J9637A 12-port Gig-T PoE+/12-port SFP v2 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-J9827A.yaml b/module-types/HPE/Aruba-J9827A.yaml
index c8eaf3b84c0700d939ce5b99a7f4b027135d9518..0ca26526b478b20725b73548933f7b34a2dd190f 100644
--- a/module-types/HPE/Aruba-J9827A.yaml
+++ b/module-types/HPE/Aruba-J9827A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9827A
+model: Aruba J9827A
 part_number: J9827A
 comments: HP J9827A Management Module 5400Rzl2
 console-ports:
diff --git a/module-types/HPE/Aruba-J9828A.yaml b/module-types/HPE/Aruba-J9828A.yaml
index 6eb9852b87544dbc994ad3c3da9d2ef5edd99fc2..5fa52720b07c47cc01d625212abaf192a8bdc2df 100644
--- a/module-types/HPE/Aruba-J9828A.yaml
+++ b/module-types/HPE/Aruba-J9828A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9828A
+model: Aruba J9828A
 part_number: J9828A
 comments: 5400R 700W PoE+ zl2 Power Supply (J9828A)
 power-ports:
diff --git a/module-types/HPE/Aruba-J9829A.yaml b/module-types/HPE/Aruba-J9829A.yaml
index b85eb355a0337ec62faff3e7627c02ee41786e9e..29be1672e539674d0dbd984cc6fc3755e27e9e96 100644
--- a/module-types/HPE/Aruba-J9829A.yaml
+++ b/module-types/HPE/Aruba-J9829A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9829A
+model: Aruba J9829A
 part_number: J9829A
 comments: 5400R 1100W PoE+ zl2 Power Supply (J9829A)
 power-ports:
diff --git a/module-types/HPE/Aruba-J9830B.yaml b/module-types/HPE/Aruba-J9830B.yaml
index c958effdb22ab3d8c48ecd9b0b2fbaacdc06f9ec..95a4d7d2b1dc6cd8237350a16df992fd9538675f 100644
--- a/module-types/HPE/Aruba-J9830B.yaml
+++ b/module-types/HPE/Aruba-J9830B.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9830B
+model: Aruba J9830B
 part_number: J9830B
 comments: 5400R 2750W PoE+ zl2 Power Supply (J9830B)
 power-ports:
diff --git a/module-types/HPE/Aruba-J9986A.yaml b/module-types/HPE/Aruba-J9986A.yaml
index 6d5fff7f59d41973a9bf71ff1a4846c0b5e30a42..30695126e68a8adf09a10c685ba3071f2db346b5 100644
--- a/module-types/HPE/Aruba-J9986A.yaml
+++ b/module-types/HPE/Aruba-J9986A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: J9986A
+model: Aruba J9986A
 part_number: J9986A
 comments: HP J9986A 24p 10/100/1000BASE-T PoE+ V3 zl Module
 interfaces:
diff --git a/module-types/HPE/Aruba-JL085A.yaml b/module-types/HPE/Aruba-JL085A.yaml
index c192558945c4f9b877182d06c38777f3656c4fb6..1bc1c88a7d3263de39371740174803a931a311cc 100644
--- a/module-types/HPE/Aruba-JL085A.yaml
+++ b/module-types/HPE/Aruba-JL085A.yaml
@@ -1,6 +1,6 @@
 ---
 manufacturer: HPE
-model: JL085A
+model: Aruba JL085A
 part_number: JL085A
 comments: Aruba X371 250W AC Power Supply
 power-ports:
diff --git a/module-types/HPE/HPE-X361.yaml b/module-types/HPE/JD362B.yaml
similarity index 100%
rename from module-types/HPE/HPE-X361.yaml
rename to module-types/HPE/JD362B.yaml
diff --git a/module-types/HPE/HPE-X362.yaml b/module-types/HPE/JG544A.yaml
similarity index 100%
rename from module-types/HPE/HPE-X362.yaml
rename to module-types/HPE/JG544A.yaml
diff --git a/module-types/HPE/HPE-JH180A.yaml b/module-types/HPE/JH180A.yaml
similarity index 100%
rename from module-types/HPE/HPE-JH180A.yaml
rename to module-types/HPE/JH180A.yaml
diff --git a/module-types/HPE/HPE-JH181A.yaml b/module-types/HPE/JH181A.yaml
similarity index 100%
rename from module-types/HPE/HPE-JH181A.yaml
rename to module-types/HPE/JH181A.yaml
diff --git a/module-types/Juniper/SRX600-PWR-645AC- POE.yaml b/module-types/Juniper/SRX600-PWR-645AC-POE.yaml
similarity index 100%
rename from module-types/Juniper/SRX600-PWR-645AC- POE.yaml
rename to module-types/Juniper/SRX600-PWR-645AC-POE.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2D3-AC-B2F.yaml b/module-types/Nokia/PS-7220-IXR-D2-D3-AC-B2F.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2D3-AC-B2F.yaml
rename to module-types/Nokia/PS-7220-IXR-D2-D3-AC-B2F.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2D3-AC-F2B.yaml b/module-types/Nokia/PS-7220-IXR-D2-D3-AC-F2B.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2D3-AC-F2B.yaml
rename to module-types/Nokia/PS-7220-IXR-D2-D3-AC-F2B.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2D3-DC-B2F.yaml b/module-types/Nokia/PS-7220-IXR-D2-D3-DC-B2F.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2D3-DC-B2F.yaml
rename to module-types/Nokia/PS-7220-IXR-D2-D3-DC-B2F.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2D3-DC-F2B.yaml b/module-types/Nokia/PS-7220-IXR-D2-D3-DC-F2B.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2D3-DC-F2B.yaml
rename to module-types/Nokia/PS-7220-IXR-D2-D3-DC-F2B.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2LD3L-AC-B2F.yaml b/module-types/Nokia/PS-7220-IXR-D2L-D3L-AC-B2F.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2LD3L-AC-B2F.yaml
rename to module-types/Nokia/PS-7220-IXR-D2L-D3L-AC-B2F.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2LD3L-AC-F2B.yaml b/module-types/Nokia/PS-7220-IXR-D2L-D3L-AC-F2B.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2LD3L-AC-F2B.yaml
rename to module-types/Nokia/PS-7220-IXR-D2L-D3L-AC-F2B.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2LD3L-DC-B2F.yaml b/module-types/Nokia/PS-7220-IXR-D2L-D3L-DC-B2F.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2LD3L-DC-B2F.yaml
rename to module-types/Nokia/PS-7220-IXR-D2L-D3L-DC-B2F.yaml
diff --git a/module-types/Nokia/PS-7220-IXR-D2LD3L-DC-F2B.yaml b/module-types/Nokia/PS-7220-IXR-D2L-D3L-DC-F2B.yaml
similarity index 100%
rename from module-types/Nokia/PS-7220-IXR-D2LD3L-DC-F2B.yaml
rename to module-types/Nokia/PS-7220-IXR-D2L-D3L-DC-F2B.yaml
diff --git a/module-types/Sophos/80mm-hotswap-fan.yaml b/module-types/Sophos/80mm-Hot-Swap-Fan.yaml
similarity index 100%
rename from module-types/Sophos/80mm-hotswap-fan.yaml
rename to module-types/Sophos/80mm-Hot-Swap-Fan.yaml
diff --git a/scripts/fix-slugs.py b/scripts/fix-slugs.py
index cf1909b8982ab86029645e95369bb05ed4e5e09e..f620fdeb264a665c7526c4b2029134250887cd86 100644
--- a/scripts/fix-slugs.py
+++ b/scripts/fix-slugs.py
@@ -15,7 +15,7 @@ for root, dirs, files in walk(root_dir):
         try:
           data = stream.readlines()
           # data = yaml.safe_load(stream)
-          
+
           slugManufacturer = ""
           slugManufacturerIDX = 0
           slug = ""
@@ -24,7 +24,7 @@ for root, dirs, files in walk(root_dir):
           modelIDX = 0
           partNumber = ""
           partNumberIDX = 0
-          
+
           for idx, line in enumerate(data):
             if "manufacturer: " in line:
               # slugManufacturer = data['manufacturer'].casefold().replace(" ", "-")
@@ -43,12 +43,12 @@ for root, dirs, files in walk(root_dir):
           transformedModel = model.casefold().replace(" ", "-").replace("sfp+", "sfpp").replace("poe+", "poep").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
           transformedPartNumber = partNumber.casefold().replace(" ", "-").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
           transformedManufacturer = slugManufacturer.casefold().replace(" ", "-").replace("sfp+", "sfpp").replace("poe+", "poep").replace("-+", "-plus-").replace("+", "-plus").replace("_", "-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
-          
+
           if "&" in transformedManufacturer:
             transformedManufacturer = transformedManufacturer.replace("&", "-and-")
             if "--and--" in transformedManufacturer:
               transformedManufacturer = transformedManufacturer.replace("--and--", "-and-")
-          
+
           newSlug = f"{transformedManufacturer}-{transformedModel}"
           newPartSlug = f"{slugManufacturer}-{transformedPartNumber}"
           newComboSlug = f"{slugManufacturer}-{transformedModel}-{transformedPartNumber}"
@@ -60,7 +60,7 @@ for root, dirs, files in walk(root_dir):
               newPartSlug = newPartSlug.replace(f"{slugManufacturer}-", "", 1)
             if newComboSlug.count(slugManufacturerDash) > 1:
               newComboSlug = newComboSlug.replace(f"{slugManufacturer}-", "", 1)
-            
+
             if newSlug[-1] == "-":
                 newSlug = newSlug[:-1]
             if newSlug != slug and newPartSlug != slug and newComboSlug != slug:
@@ -77,5 +77,5 @@ for root, dirs, files in walk(root_dir):
         with open(path.join(root, file), 'w') as file:
           file.writelines(data)
           file.close()
-      
+
 print(f"Total Left: {total}")
\ No newline at end of file
diff --git a/tests/definitions_test.py b/tests/definitions_test.py
index 4d0b658f3d30d8ad59594d8c8cc9c3824aac4925..e0cc547c19d10688daf15eae219ba7a34b7e5ee7 100644
--- a/tests/definitions_test.py
+++ b/tests/definitions_test.py
@@ -1,3 +1,6 @@
+from test_configuration import COMPONENT_TYPES, IMAGE_FILETYPES, SCHEMAS
+from yaml_loader import DecimalSafeLoader
+from device_types import DeviceType, ModuleType, verify_filename
 import decimal
 import glob
 import json
@@ -8,38 +11,14 @@ import pytest
 import yaml
 from jsonschema import Draft4Validator, RefResolver
 from jsonschema.exceptions import ValidationError
-from yaml_loader import DecimalSafeLoader
-
-SCHEMAS = (
-    ('device-types', 'devicetype.json'),
-    ('module-types', 'moduletype.json'),
-)
-
-IMAGE_FILETYPES = (
-    'bmp', 'gif', 'pjp', 'jpg', 'pjpeg', 'jpeg', 'jfif', 'png', 'tif', 'tiff', 'webp'
-)
-
-COMPONENT_TYPES = (
-    'console-ports',
-    'console-server-ports',
-    'power-ports',
-    'power-outlets',
-    'interfaces',
-    'front-ports',
-    'rear-ports',
-    'device-bays',
-    'module-bays',
-)
-
 
 def _get_definition_files():
     """
     Return a list of all definition files within the specified path.
     """
-    ret = []
+    file_list = []
 
     for path, schema in SCHEMAS:
-
         # Initialize the schema
         with open(f"schema/{schema}") as schema_file:
             schema = json.loads(schema_file.read(), parse_float=decimal.Decimal)
@@ -47,35 +26,33 @@ def _get_definition_files():
         # Validate that the schema exists
         assert schema, f"Schema definition for {path} is empty!"
 
-        # Map each definition file to its schema
-        for f in sorted(glob.glob(f"{path}/*/*", recursive=True)):
-            ret.append((f, schema))
+        # Map each definition file to its schema as a tuple (file, schema)
+        for file in sorted(glob.glob(f"{path}/*/*", recursive=True)):
+            file_list.append((file, schema))
 
-    return ret
+    return file_list
 
 def _get_image_files():
     """
     Return a list of all image files within the specified path and manufacturer.
     """
-    ret = []
+    file_list = []
 
-    for f in sorted(glob.glob(f"elevation-images{os.path.sep}*{os.path.sep}*", recursive=True)):
-        assert f.split(os.path.sep)[2].split('.')[-1] in IMAGE_FILETYPES, f"Invalid file extension: {f}"
-        ret.append((f.split(os.path.sep)[1], f))
-    return ret
+    # Map each image file to its manufacturer
+    for file in sorted(glob.glob(f"elevation-images{os.path.sep}*{os.path.sep}*", recursive=True)):
+        # Validate that the file extension is valid
+        assert file.split(os.path.sep)[2].split('.')[-1] in IMAGE_FILETYPES, f"Invalid file extension: {file}"
 
+        # Map each image file to its manufacturer as a tuple (manufacturer, file)
+        file_list.append((file.split(os.path.sep)[1], file))
 
-definition_files = _get_definition_files()
-image_files = _get_image_files()
-known_slugs = set()
-
+    return file_list
 
 def _decimal_file_handler(uri):
     with urlopen(uri) as url:
         result = json.loads(url.read().decode("utf-8"), parse_float=decimal.Decimal)
     return result
 
-
 def test_environment():
     """
     Run basic sanity checks on the environment to ensure tests are running correctly.
@@ -83,6 +60,8 @@ def test_environment():
     # Validate that definition files exist
     assert definition_files, "No definition files found!"
 
+definition_files = _get_definition_files()
+image_files = _get_image_files()
 
 @pytest.mark.parametrize(('file_path', 'schema'), definition_files)
 def test_definitions(file_path, schema):
@@ -113,13 +92,17 @@ def test_definitions(file_path, schema):
     except ValidationError as e:
         pytest.fail(f"{file_path} failed validation: {e}", False)
 
-    # Check for duplicate slug
-    if file_path.startswith('device-types/'):
-        slug = definition.get('slug')
-        if slug and slug in known_slugs:
-            pytest.fail(f'{file_path} device type has duplicate slug "{slug}"', False)
-        elif slug:
-            known_slugs.add(slug)
+    # Identify if the definition is for a Device or Module
+    if "device-types" in file_path:
+        this_device = DeviceType(definition, file_path)
+    else:
+        this_device = ModuleType(definition, file_path)
+
+    # Verify the slug is valid if the definition is a Device
+    if this_device.isDevice:
+        assert this_device.verify_slug(), pytest.fail(this_device.failureMessage, False)
+
+    assert verify_filename(this_device), pytest.fail(this_device.failureMessage, False)
 
     # Check for duplicate components
     for component_type in COMPONENT_TYPES:
@@ -152,11 +135,11 @@ def test_definitions(file_path, schema):
     # Check for images if front_image or rear_image is True
     if (definition.get('front_image') or definition.get('rear_image')):
         # Find images for given manufacturer, with matching device slug (exact match including case)
-        manufacturer_images = [image[1] for image in image_files if image[0] == file_path.split('/')[1] and os.path.basename(image[1]).split('.')[0] == slug]
+        manufacturer_images = [image[1] for image in image_files if image[0] == file_path.split('/')[1] and os.path.basename(image[1]).split('.')[0] == this_device.get_slug()]
         if not manufacturer_images:
-            pytest.fail(f'{file_path} has Front or Rear Image set to True but no images found for manufacturer/device (slug={slug})', False)
+            pytest.fail(f'{file_path} has Front or Rear Image set to True but no images found for manufacturer/device (slug={this_device.get_slug()})', False)
         elif len(manufacturer_images)>2:
-            pytest.fail(f'More than 2 images found for device with slug {slug}: {manufacturer_images}', False)
+            pytest.fail(f'More than 2 images found for device with slug {this_device.get_slug()}: {manufacturer_images}', False)
 
         if(definition.get('front_image')):
             front_image = [image_path.split('/')[2] for image_path in manufacturer_images if os.path.basename(image_path).split('.')[1] == 'front']
diff --git a/tests/device_types.py b/tests/device_types.py
new file mode 100644
index 0000000000000000000000000000000000000000..1c9fd2a937f1032d2364f09618d157872a6359db
--- /dev/null
+++ b/tests/device_types.py
@@ -0,0 +1,111 @@
+from test_configuration import KNOWN_SLUGS
+import os
+
+class DeviceType:
+    def __new__(cls, *args, **kwargs):
+        return super().__new__(cls)
+
+    def __init__(self, definition, file_path):
+        self.file_path = file_path
+        self.isDevice = True
+        self.manufacturer = definition.get('manufacturer')
+        self._slug_manufacturer = self._slugify_manufacturer()
+        self.slug = definition.get('slug')
+        self.model = definition.get('model')
+        self._slug_model = self._slugify_model()
+        self.part_number = definition.get('part_number', "")
+        self._slug_part_number = self._slugify_part_number()
+        self.failureMessage = None
+
+    def get_manufacturer(self):
+        return self.manufacturer
+
+    def _slugify_manufacturer(self):
+        return self.manufacturer.casefold().replace(" ", "-").replace("sfp+", "sfpp").replace("poe+", "poep").replace("-+", "-plus-").replace("+", "-plus").replace("_", "-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-").replace("&", "and")
+
+    def get_slug(self):
+        if hasattr(self, "slug"):
+            return self.slug
+        return None
+
+    def get_model(self):
+        return self.model
+
+    def _slugify_model(self):
+        slugified = self.model.casefold().replace(" ", "-").replace("sfp+", "sfpp").replace("poe+", "poep").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
+        if slugified.endswith("-"):
+            slugified = slugified[:-1]
+        return slugified
+
+    def get_part_number(self):
+        return self.part_number
+
+    def _slugify_part_number(self):
+        slugified = self.part_number.casefold().replace(" ", "-").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
+        if slugified.endswith("-"):
+            slugified = slugified[:-1]
+        return slugified
+
+    def get_filepath(self):
+        return self.file_path
+
+    def verify_slug(self):
+        # Verify the slug is unique, and not already known
+        if self.slug in KNOWN_SLUGS:
+            self.failureMessage = f'{self.file_path} device type has duplicate slug "{self.slug}"'
+            return False
+
+        # Verify the manufacturer is appended to the slug
+        if not self.slug.startswith(self._slug_manufacturer):
+            self.failureMessage = f'{self.file_path} device type has slug "{self.slug}" which does not start with manufacturer "{self.manufacturer}"'
+            return False
+
+        # Verify the slug ends with either the model or part number
+        if not (self.slug.endswith(self._slug_model) or self.slug.endswith(self._slug_part_number)):
+            self.failureMessage = f'{self.file_path} has slug "{self.slug}". Does not end with the model "{self._slug_model}" or part number "{self._slug_part_number}"'
+            return False
+
+        # Add the slug to the list of known slugs
+        KNOWN_SLUGS.add(self.slug)
+        return True
+
+class ModuleType:
+    def __new__(cls, *args, **kwargs):
+        return super().__new__(cls)
+
+    def __init__(self, definition, file_path):
+        self.file_path = file_path
+        self.isDevice = False
+        self.manufacturer = definition.get('manufacturer')
+        self.model = definition.get('model')
+        self._slug_model = self._slugify_model()
+        self.part_number = definition.get('part_number', "")
+        self._slug_part_number = self._slugify_part_number()
+
+    def get_manufacturer(self):
+        return self.manufacturer
+
+    def get_filepath(self):
+        return self.file_path
+
+    def _slugify_model(self):
+        slugified = self.model.casefold().replace(" ", "-").replace("sfp+", "sfpp").replace("poe+", "poep").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
+        if slugified.endswith("-"):
+            slugified = slugified[:-1]
+        return slugified
+
+    def _slugify_part_number(self):
+        slugified = self.part_number.casefold().replace(" ", "-").replace("-+", "-plus").replace("+", "-plus-").replace("_", "-").replace("&", "-and-").replace("!", "").replace("/", "-").replace(",", "").replace("'", "").replace("*", "-")
+        if slugified.endswith("-"):
+            slugified = slugified[:-1]
+        return slugified
+
+def verify_filename(device: (DeviceType or ModuleType)):
+    head, tail = os.path.split(device.get_filepath())
+    filename = tail.rsplit(".", 1)[0].casefold()
+
+    if not (filename == device._slug_model or filename == device._slug_part_number or filename == device.part_number.casefold()):
+        device.failureMessage = f'{device.file_path} file is not either the model "{device._slug_model}" or part_number "{device.part_number} / {device._slug_part_number}"'
+        return False
+
+    return True
\ No newline at end of file
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
new file mode 100644
index 0000000000000000000000000000000000000000..68edcaf5dd9f14f22417423ecc2403ab0c63ed08
--- /dev/null
+++ b/tests/test_configuration.py
@@ -0,0 +1,22 @@
+SCHEMAS = (
+    ('device-types', 'devicetype.json'),
+    ('module-types', 'moduletype.json'),
+)
+
+IMAGE_FILETYPES = (
+    'bmp', 'gif', 'pjp', 'jpg', 'pjpeg', 'jpeg', 'jfif', 'png', 'tif', 'tiff', 'webp'
+)
+
+COMPONENT_TYPES = (
+    'console-ports',
+    'console-server-ports',
+    'power-ports',
+    'power-outlets',
+    'interfaces',
+    'front-ports',
+    'rear-ports',
+    'device-bays',
+    'module-bays',
+)
+
+KNOWN_SLUGS = set()
\ No newline at end of file