diff --git a/attributemap/name2urn.php b/attributemap/name2urn.php
index 477f6c665cc71ff35acd21ca42ded680dac0cd73..9286f6fe3b9a25b246512d5ccfaeaf56bcf5dfea 100644
--- a/attributemap/name2urn.php
+++ b/attributemap/name2urn.php
@@ -112,6 +112,7 @@ $attributemap = array(
     'owner'                         => 'urn:mace:dir:attribute-def:owner',
     'pager'                         => 'urn:mace:dir:attribute-def:pager',
     'pagerTelephoneNumber'          => 'urn:mace:dir:attribute-def:pagerTelephoneNumber',
+    'pairwise-id'                   => 'urn:oasis:names:tc:SAML:attribute:pairwise-id',
     'personalSignature'             => 'urn:mace:dir:attribute-def:personalSignature',
     'personalTitle'                 => 'urn:mace:dir:attribute-def:personalTitle',
     'photo'                         => 'urn:mace:dir:attribute-def:photo',
@@ -163,6 +164,7 @@ $attributemap = array(
     'stateOrProvinceName'           => 'urn:mace:dir:attribute-def:stateOrProvinceName',
     'street'                        => 'urn:mace:dir:attribute-def:street',
     'streetAddress'                 => 'urn:mace:dir:attribute-def:streetAddress',
+    'subject-id'                    => 'urn:oasis:names:tc:SAML:attribute:subject-id',
     'subtreeMaximumQuality'         => 'urn:mace:dir:attribute-def:subtreeMaximumQuality',
     'subtreeMinimumQuality'         => 'urn:mace:dir:attribute-def:subtreeMinimumQuality',
     'supportedAlgorithms'           => 'urn:mace:dir:attribute-def:supportedAlgorithms',
diff --git a/attributemap/urn2name.php b/attributemap/urn2name.php
index 66cd8589abe2a59ea7937acafef86f7dc8e3bd4f..fc8d4d97db5a0de8cfaeb2c21ac6b1907b71174d 100644
--- a/attributemap/urn2name.php
+++ b/attributemap/urn2name.php
@@ -184,4 +184,6 @@ $attributemap = array(
     'urn:mace:terena.org:attribute-def:schacUserPresenceID'       => 'schacUserPresenceID',
     'urn:mace:terena.org:attribute-def:schacUserPrivateAttribute' => 'schacUserPrivateAttribute',
     'urn:mace:terena.org:attribute-def:schacUserStatus'           => 'schacUserStatus',
+    'urn:oasis:names:tc:SAML:attribute:pairwise-id'               => 'pairwise-id',
+    'urn:oasis:names:tc:SAML:attribute:subject-id'                => 'subject-id',
 );
diff --git a/dictionaries/attributes.definition.json b/dictionaries/attributes.definition.json
index c04dcfc27d2ef427ea6351e32b451bc48a2f9c79..ee886676522c86d4f75a924c9bc590838ac7c648 100644
--- a/dictionaries/attributes.definition.json
+++ b/dictionaries/attributes.definition.json
@@ -47,12 +47,18 @@
 	"attribute_edupersontargetedid": {
 		"en": "Persistent pseudonymous ID"
 	},
+	"attribute_pairwise_id": {
+		"en": "Service-specific pseudonymous ID at home organization"
+	},
 	"attribute_edupersonprincipalname": {
 		"en": "Person's principal name at home organization"
 	},
 	"attribute_edupersonuniqueid": {
 		"en": "Person's non-reassignable, persistent pseudonymous ID at home organization"
 	},
+	"attribute_subject_id": {
+		"en": "Pseudonymous ID at home organization"
+	},
 	"attribute_edupersonorcid": {
 		"en": "ORCID researcher identifiers"
 	},
diff --git a/dictionaries/attributes.translation.json b/dictionaries/attributes.translation.json
index 3e6b7cbec5c9bb26c9a407ea3e6bb604b783b6e5..4b859cf4f704553397cf06e7340b85817b8b6a5b 100644
--- a/dictionaries/attributes.translation.json
+++ b/dictionaries/attributes.translation.json
@@ -566,6 +566,9 @@
 		"af": "Aanhoudende anonieme ID",
 		"el": "\u0391\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bc\u03b1\u03ba\u03c1\u03ac\u03c2 \u03b4\u03b9\u03ac\u03c1\u03ba\u03b5\u03b9\u03b1\u03c2"
 	},
+	"attribute_pairwise_id": {
+		"de": "Service-spezifische pseudonyme ID bei der Heimorganisation"
+	},
 	"attribute_edupersonprincipalname": {
 		"no": "Personlig ID hos organisasjonen",
 		"nn": "Brukarnamn hos din organisasjon",
@@ -608,6 +611,9 @@
 		"zh-tw": "\u500b\u4eba\u7121\u6cd5\u91cd\u65b0\u8a2d\u7f6e\uff0c\u65bc\u6240\u5c6c\u7d44\u7e54\u7684\u6c38\u4e45\u533f\u540d ID",
 		"el": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf, \u03b1\u03b4\u03b9\u03b1\u03c6\u03b1\u03bd\u03ad\u03c2 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03cc \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03c3\u03c4\u03bf\u03bd \u03bf\u03b9\u03ba\u03b5\u03af\u03bf \u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc"
 	},
+	"attribute_subject_id": {
+		"de": "Pseudonyme ID bei der Heimorganisation"
+	},
 	"attribute_edupersonorcid": {
 		"zh-tw": "ORCID \u7814\u7a76\u8005\u8b58\u5225\u78bc",
 		"el": "\u0391\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03b9\u03c3\u03c4\u03b9\u03ba\u03ac \u03b5\u03c1\u03b5\u03c5\u03bd\u03b7\u03c4\u03ae ORCID"
diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php
index 9f20168fa39e44f75fbd0eb76263e839454a8fab..0e52228a1deb6221acb4ad1c29f3aa3de40a6b6c 100644
--- a/lib/SimpleSAML/Locale/Translate.php
+++ b/lib/SimpleSAML/Locale/Translate.php
@@ -198,7 +198,7 @@ class Translate
     {
         // normalize attribute name
         $normName = strtolower($name);
-        $normName = str_replace(":", "_", $normName);
+        $normName = str_replace(array(":", "-"), "_", $normName);
 
         // check for an extra dictionary
         $extraDict = $this->configuration->getString('attributes.extradictionary', null);
diff --git a/modules/smartattributes/docs/smartattributes.md b/modules/smartattributes/docs/smartattributes.md
index f6015259ad84b24383befef73c1420956ae0ea4b..06fd24141088bb8db5c8c86246989c42c5b8728e 100644
--- a/modules/smartattributes/docs/smartattributes.md
+++ b/modules/smartattributes/docs/smartattributes.md
@@ -17,6 +17,8 @@ The filter has the following configuration options:
 * `candidates`. An array of attributes names to consider as the identifier attribute. Defaults to:
 	* eduPersonTargetedID
 	* eduPersonPrincipalName
+	* pairwise-id
+	* subject-id
 	* openid
 	* facebook_targetedID
 	* twitter_targetedID
diff --git a/modules/smartattributes/lib/Auth/Process/SmartID.php b/modules/smartattributes/lib/Auth/Process/SmartID.php
index 2dbde82f9a3da941421b7e3b87b7837cf97126fe..4a23cf7c6159edb7dc2bbbd8e2a05246c5bbfffc 100644
--- a/modules/smartattributes/lib/Auth/Process/SmartID.php
+++ b/modules/smartattributes/lib/Auth/Process/SmartID.php
@@ -14,6 +14,8 @@ class SmartID extends \SimpleSAML\Auth\ProcessingFilter
     private $_candidates = array(
         'eduPersonTargetedID',
         'eduPersonPrincipalName',
+        'pairwise-id',
+        'subject-id',
         'openid',
         'facebook_targetedID',
         'twitter_targetedID',