I have a big project for a customer here in China and after studying its requirements and the different technologies available out there, I am left with two choices: Drupal and DotNetNuke. This project indeed involve a very detailed list of user groups and permissions for its different features and these two Open-Source CMS seem to be the ones that provide the best ACL. I am personally more experienced with DotNetNuke and I'm confident that I could find all the DNN modules that I need for this project, but my team has mostly been working with Joomla! so if I can find all these modules for Drupal, that would probably be best.
I don't see why experience with Joomla will help with Drupal. I know Drupal but when I occasionally look at a Joomla admin interface, I am fairly lost.
1 - User Registration The main reason for choosing Drupal for this website is that it offers a powerful ACL. After registering to the website, users will be put in the Members group, but they should also have the ability to submit further documents and details to become a Verified Members. So it would be great to find an existing module that can handle two-steps registrations.
I am not aware of such, but this would be a trivial module to create. It's not a new registration, it's just adding another role to the existing user.
2 - User Profile Registered users will be given the ability to manage their own user profile. Like most websites of this kind, users will be able to keep some of these details private. However, even though the email address might not be displayed, users should be able to email the users they visit the user profile. This is similar to sending a message to the user except that the message is send by email. No need for an internal inbox for each user.
This exists in core Drupal as "user contact form."
3 - User Directory The purpose of this module is to provide the ability to access the profiles of the users in a specific group (i.e. the list of Verified Members). Details of the different users will be displayed according to a set of internal rules (i.e. do not show the email address) and according to each user preferences (i.e. user can choose to show his address or not). To browse this directory, visitors will be able to use an advanced search interface (i.e. search by name, city, region, country...) or by clicking on a simple map with predefined regions.
The Organic Groups module has the first part of your requirement. As far as searching, I am not sure if this exists or not, but this would be fairly easy to code.
4 - Marketing Tools The purpose of this module is to take advantage of the list of users to send them newsletters and invitations according to different criteria (i.e. group, region, date of birth...).
I am not sure about this--I haven't dealt with this type of functionality so I don't know.
5 - Calendar of Events A standard calendar module that can be configured to display role based events.
Events module and submodules.
6 - Forums A standard forum module that can be configured to display role based threads.
Forum module is a core Drupal module. Setting up permissions to forums based on roles is doable--may require one of the advanced permissions modules.
7 - Online Discussion The purpose of this module is to setup an online discussion on a specific topic between an expert and the different users of the website. Questions will be posted by the users for the expert to answer. Moderators will need to review the questions before they are sent to the expert.
This can be handled by a combination of various modules--there are different options how to implement this.
8 - RSS Feeds A standard RSS reader module that can be configured to display role based feeds.
RSS is core Drupal functionality. To permission them by role may require one of the advanced permissions modules.
9 - News Feeds A standard news module that can be configured to display role based news. Ideally the administrator of the website should be able to publish news in different categories and each category will be displayed in a different page, but if that's not possible, administrating several instance of the module should be fine. Control over the number of news per page and over the layout of the different pages should be easy to setup or hack.
Views module and submodules.
The main advantage of Drupal IMO is that it is easily extensible. If a feature doesn't exist, it's not difficult to add it.
HTH, Fred