Adding to that, the nonfunctional requirements play a significant role in maintaining the solution. After all, your IAM product is at the heart of all incoming secure requests by your customers (b2c and b2b) and maybe even your employees. So, your IAM solution better always be up and running, handle all the traffic and is ready to handle frequent release changes.
It becomes clear that an IAM product is more of an integration platform than a software product that can be tailored by customization. Meet Keycloak in practice! It has been designed to be extensible from ground up by customizing through configuration, extensions and custom code.