@Override
  public Module addModule(
      long userId, long appId, String bundleSymbolicName, String bundleVersion, String contextName)
      throws PortalException {

    Module module = fetchModule(appId, bundleSymbolicName, bundleVersion, contextName);

    if (module != null) {
      return module;
    }

    validate(bundleSymbolicName, contextName);

    long moduleId = counterLocalService.increment();

    module = modulePersistence.create(moduleId);

    module.setModuleId(moduleId);
    module.setAppId(appId);
    module.setBundleSymbolicName(bundleSymbolicName);
    module.setBundleVersion(bundleVersion);
    module.setContextName(contextName);

    modulePersistence.update(module);

    return module;
  }