Yes, it’s possible. This is called - nesting. Well, this doesnt need any support form server. This is a client side feature, so it depends on what client are you going to use. All you have to do in server is to name groups correctly.
groupA1 display name would be groupA(divider_character)groupA1
Divider character depends on the client. Exodus has “/”, though you can change it to anything else. In Spark case it’s hardcoded (not wise) to " :: " (without quotes and with spaces). Spark nesting support has bugs and needs fixing.
Sub groups are not possible from the server side. Openfire does not provide a way to do this. Wroot phrased it better, I see. This is a client control function.
All I meant is there is no apparent admin control function in the admin server to set this up. At least not one that is obvious. I have been wrong before.