I recently had the pleasure of upgrading a ISR4321 router to Denali (16.3.5). If you have a NIM-ES2-8 for example you might want to be careful and check the CPLD version before doing the upgrade! Here is why. Here the CPLD version is 14101324 The Firmware Version is the ROMMON version. As of writing there is no way of correlating the CPLD version show in the output of show platform and the one you can download on CCO.
If you try to upgarde to Everest (16.6.2) you will probably hit a ROMMON bug due to the image footprint (being larger than 512MB). Specifically you will see this: Turns out the bug is reported as� CSCvg89038 If your router has a switch module installed, you might want to check out this post.