There is a Drupal 7 version of notifications (see #936660: D7 upgrade task (Notifications module)) and while it has been supplanted by message for some use cases, some sites are not able to make the transition. The Drupal 6 to 7 upgrade path is basically incomplete however.

Here is a Drush script I used to migrate subscriptions. It is incomplete in various ways (it only handles thread and OG subscription types, to start with), but I thought I would share it in case anyone is insipred to work it into an update function and finish of the other parts. It would run quicker if the logic just altered the table structure and ran REPLACE(), however the API based approach below has the benefit of being quite a lot simpler.

$result = db_query('SELECT * FROM notifications n INNER JOIN notifications_fields nf ON n.sid = nf.sid');
$total = $count = 0;
foreach ($result as $row) {
  $total++;
  $type = FALSE;
  switch ($row->type) {
    case 'grouptype':
      $type = 'group_content';
      break;
    case 'thread':
      $type = 'content_thread';
      break;
  }
  $set = FALSE;
  switch ($row->field) {
    case 'nid':
      $set = 'set_node';
      break;
    case 'group':
      $set = 'set_group';
      break;
  }
  $node = node_load($row->value);
  if ($type && $set && $row->event_type == 'node' && $node && $account = user_load($row->uid)) {
    $subscription = notifications_subscription($type)
      ->instance()
      ->set_user($account)
      ->$set($node)
      ->set_name($node->title)
      ->set_interval($row->send_interval)
      ->set_method($row->send_method);
    if ($result = notifications_save_subscription($subscription)) {
      $count++;
    }
    else {
      print_r($subscription);
    }
  }
}
print "Total: $total\n";
print "Added: $count\n";