public void addSubscription(
      Long classNameId, Long classPK, Integer type, String extraData, Long userId)
      throws PortalException, SystemException {

    if (activitySubscriptionPersistence
            .findByClassNameIdClassPKTypeExtraDataReceiverId(
                classNameId, classPK, type, extraData, userId)
            .size()
        > 0) {
      // subscription exists, do nothing
      return;
    }

    Long pk = CounterLocalServiceUtil.increment(ActivitySubscription.class.getName());
    ActivitySubscription subscription =
        ActivitySubscriptionLocalServiceUtil.createActivitySubscription(pk);

    subscription.setClassNameId(classNameId);
    subscription.setClassPK(classPK);
    subscription.setType(type);
    subscription.setExtraData(extraData);
    subscription.setReceiverId(userId);

    subscription.setModifiedDate(new Date());
    subscription.setCreateDate(new Date());

    subscription.store();
  }