code: public synchronized void addModule(CmsObject cms, CmsModule module)
      throws CmsSecurityException, CmsConfigurationException {
  
          // check the role permissions
          OpenCms.getRoleManager().checkRole(cms, CmsRole.DATABASE_MANAGER);
  
          if (m_modules.containsKey(module.getName())) {
              // module is currently configured, no create possible
              throw new CmsConfigurationException(
                  Messages.get().container(Messages.ERR_MODULE_ALREADY_CONFIGURED_1, module.getName()));
  
          }
  
          if (LOG.isInfoEnabled()) {
              LOG.info(Messages.get().getBundle().key(Messages.LOG_CREATE_NEW_MOD_1, module.getName()));
          }
  
          // initialize the module
          module.initialize(cms);
  
          m_modules.put(module.getName(), module);
  
          try {
              I_CmsModuleAction moduleAction = module.getActionInstance();
              // handle module action instance if initialized
              if (moduleAction != null) {
                  moduleAction.moduleUpdate(module);
              }
          } catch (Throwable t) {
              LOG.error(Messages.get().getBundle().key(Messages.LOG_MOD_UPDATE_ERR_1, module.getName()), t);
          }
  
          // initialize the export points
          initModuleExportPoints();
  
          // update the configuration
          updateModuleConfiguration();
  
          // reinit the workplace CSS URIs
          if (!module.getParameters().isEmpty()) {
              OpenCms.getWorkplaceAppManager().initWorkplaceCssUris(this);
          }
      }
docs: Adds a new module to the module manager.<p>
  
  @param cms must be initialized with "Admin" permissions
  @param module the module to add
  
  @throws CmsSecurityException if the required permissions are not available (i.e. no "Admin" CmsObject has been provided)
  @throws CmsConfigurationException if a module with this name is already configured