diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php
index 0b5f943dfb65e81fe3d4294393f5a3352ce089ec..de515e80627b21a305423cc2f0eab179e5b675f3 100644
--- a/www/saml2/idp/metadata.php
+++ b/www/saml2/idp/metadata.php
@@ -158,20 +158,29 @@ try {
 		$metaArray['redirect.sign'] = $idpmeta->getBoolean('redirect.validate');
 	}
 
-	$metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';';
+	if ($idpmeta->hasValue('contacts')) {
+		$contacts = $idpmeta->getArray('contacts');
+		foreach ($contacts as $contact) {
+			$metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($contact);
+		}
+	}
+
+	$technicalContactEmail = $config->getString('technicalcontact_email', FALSE);
+	if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') {
+		$techcontact['emailAddress'] = $technicalContactEmail;
+		$techcontact['name'] = $config->getString('technicalcontact_name', NULL);
+		$techcontact['contactType'] = 'technical';
+		$metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($techcontact);
+	}
 
 	$metaBuilder = new SimpleSAML_Metadata_SAMLBuilder($idpentityid);
 	$metaBuilder->addMetadataIdP20($metaArray);
 	$metaBuilder->addOrganizationInfo($metaArray);
-	$technicalContactEmail = $config->getString('technicalcontact_email', NULL);
-	if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') {
-		$metaBuilder->addContact('technical', array(
-			'emailAddress' => $technicalContactEmail,
-			'name' => $config->getString('technicalcontact_name', NULL),
-		));
-	}
+
 	$metaxml = $metaBuilder->getEntityDescriptorText();
 
+	$metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';';
+
 	/* Sign the metadata if enabled. */
 	$metaxml = SimpleSAML_Metadata_Signer::sign($metaxml, $idpmeta->toArray(), 'SAML 2 IdP');