diff --git a/src/condor_gridmanager/nordugridresource.cpp b/src/condor_gridmanager/nordugridresource.cpp
index 266d210..f8b17a9 100644
--- a/src/condor_gridmanager/nordugridresource.cpp
+++ b/src/condor_gridmanager/nordugridresource.cpp
@@ -198,8 +198,15 @@ void NordugridResource::DoJobStatus()
 			ldap_server.erase( pos );
 		}
 
+		// In newer releases of NorduGrid ARC, nordugrid-job-globalowner
+		// is the SHA512 hash of the proxy subject, instead of the proxy
+		// subject itself.
+		char proxy_hash[SHA512_DIGEST_LENGTH];
+		char proxy_hash_str[2*SHA512_DIGEST_LENGTH+1];
+		SHA512((unsigned char*)proxySubject, strlen(proxySubject), (unsigned char*)proxy_hash);
+		debug_hex_dump(proxy_hash_str, proxy_hash, sizeof(proxy_hash), true);
 		std::string filter;
-		formatstr( filter, "(&(objectclass=nordugrid-job)(nordugrid-job-globalowner=%s))", proxySubject );
+		formatstr( filter, "(&(objectclass=nordugrid-job)(|(nordugrid-job-globalowner=%s)(nordugrid-job-globalowner=%s)))", proxySubject, proxy_hash_str );
 		int rc = m_statusGahp->nordugrid_ldap_query( ldap_server.c_str(), "mds-vo-name=local,o=grid", filter.c_str(), "nordugrid-job-globalid,nordugrid-job-status",
 													 results );
 		if ( rc != GAHPCLIENT_COMMAND_PENDING ) {
diff --git a/src/condor_includes/condor_debug.h b/src/condor_includes/condor_debug.h
index bfced7d..bcc5351 100644
--- a/src/condor_includes/condor_debug.h
+++ b/src/condor_includes/condor_debug.h
@@ -365,8 +365,9 @@ public:
 
 // print hex bytes from data into buf, up to a maximum of datalen bytes
 // caller must supply the buffer and must insure that it is at least datalen*3+1
+// if compact=true, then the buffer must be at least datalen*2+1
 // this is intended to provide a way to add small hex dumps to dprintf logging
-extern const char * debug_hex_dump(char * buf, const char * data, int datalen);
+extern const char * debug_hex_dump(char * buf, const char * data, int datalen, bool compact = false);
 
 #endif // defined(__cplusplus)
 
diff --git a/src/condor_utils/dprintf.cpp b/src/condor_utils/dprintf.cpp
index 3ed2634..5c0b529 100644
--- a/src/condor_utils/dprintf.cpp
+++ b/src/condor_utils/dprintf.cpp
@@ -290,7 +290,7 @@ double _condor_debug_get_time_double()
 // caller must supply the buffer and must insure that it is at least datalen*3+1
 // this is intended to provide a way to add small hex dumps to dprintf logging
 static char hex_digit(unsigned char n) { return n + ((n < 10) ? '0' : ('a' - 10)); }
-const char * debug_hex_dump(char * buf, const char * data, int datalen)
+const char * debug_hex_dump(char * buf, const char * data, int datalen, bool compact)
 {
 	if (!buf) return "";
 	const unsigned char * d = (const unsigned char *)data;
@@ -301,7 +301,9 @@ const char * debug_hex_dump(char * buf, const char * data, int datalen)
 		*p++ = hex_digit((ch >> 4) & 0xF);
 		*p++ = hex_digit(ch & 0xF);
 		endp = p;
-		*p++ = ' ';
+		if (!compact) {
+			*p++ = ' ';
+		}
 	}
 	*endp = 0;
 	return buf;
