[protege-user] WebProtégé 6.0.0: System Admin Role Present but Administrator Options Not Displayed

"Dsouza, Nithin via protege-user" <[email protected]> Tue, 21 Jul 2026 18:49:55 +0000
Newsgroups gmane.comp.misc.ontology.protege.owl
Message-ID <AM0PR02MB5924794BD8CE02236A3D5ACDDCC22@AM0PR02MB5924.eurprd02.prod.outlook.com>
--===============6565957658834252072==
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_AM0PR02MB5924794BD8CE02236A3D5ACDDCC22AM0PR02MB5924eurp_"

--_000_AM0PR02MB5924794BD8CE02236A3D5ACDDCC22AM0PR02MB5924eurp_
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hello WebProt=E9g=E9 Support Team,

I am testing a fresh, self-hosted WebProt=E9g=E9 6.0.0 deployment using the=
 protegeproject/webprotege-deploy Docker Compose repository.

The user can register and sign in successfully. However, after signing in, =
the home page displays only an empty project list. The Create Project, Uplo=
ad Project, and Application Settings options are not available.

Environment


  *   Operating system: RHEL 9
  *   Deployment method: Docker Compose
  *   Architecture: WebProt=E9g=E9 microservices
  *   Deployment branch: main
  *   Deployment commit: e3ad731
  *   WebProt=E9g=E9 UI: 6.0.0
  *   GWT UI server: 9.0.20
  *   Backend service: 5.0.10
  *   Authorization service: 3.0.9
  *   Keycloak integration: 2.0.1
  *   MongoDB: 8.0.10

User and Login Details

The test account was registered using [email protected], as the =
registration form requires an email-format identifier. The email address sh=
own here has been anonymized for this public support request.

[email protected]

The SystemAdmin client role has been assigned to this account under the web=
protege client in Keycloak.

Validation completed

I have confirmed the following:

  *   All required WebProt=E9g=E9 containers are running.
  *   The WebProt=E9g=E9 login and home pages are accessible.
  *   Keycloak authentication and user login are working.
  *   The SystemAdmin client role is assigned to the test account.
  *   The generated Keycloak access token contains:


"resource_access": {
  "webprotege": {
    "roles": [
      "SystemAdmin"
    ]
  }
}

The generated token contains:

"preferred_username": "[email protected]"


  *   The backend and authorization services recognize the account and succ=
essfully process requests.
  *   MongoDB and RabbitMQ connectivity are working.
  *   Nginx is serving the UI, and no failed requests or error status codes=
 were observed in the browser Network tab.
  *   No relevant recent errors or exceptions are present in the backend or=
 authorization-service logs.
  *   The behavior was reproduced using a fresh private browser session, ru=
ling out browser caching.
  *   This is a fresh installation, so no application upgrade or database m=
igration was involved.

The authorization logs show successful requests such as:

Received command webprotege.authorization.GetAuthorizedCapabilities
Request executed webprotege.authorization.GetAuthorizedCapabilities

Received command webprotege.authorization.GetAuthorizedResources
Request executed webprotege.authorization.GetAuthorizedResources

The backend logs also show successful requests such as:

Received command webprotege.users.GetAuthenticatedUserDetails
Request executed webprotege.users.GetAuthenticatedUserDetails

Received command webprotege.projects.GetAvailableProjects
Request executed webprotege.projects.GetAvailableProjects


Authorization observations
The MongoDB RoleAssignments collection remains empty:

db.RoleAssignments.countDocuments()

Result:
0

I also reviewed:


  *   webprotege-authorization-service Issue #36
  *   webprotege-deploy Issue #62

The proposed INITIAL_ADMIN_USERNAME bootstrap does not appear to be impleme=
nted in authorization-service 3.0.9 or wired into the current deployment.

For testing, the following temporary minimal RoleAssignments document was i=
nserted using the same anonymized email-format username recognized by the b=
ackend and authorization-service logs:

db.RoleAssignments.insertOne({
  userName: "[email protected]",
  projectId: null,
  assignedRoles: ["SystemAdmin"]
})

However, this resulted in a RoleAssignment deserialization error because th=
e required roleClosure and capabilityClosure fields were missing:

Cannot construct instance of
edu.stanford.protege.webprotege.authorization.RoleAssignment

java.lang.NullPointerException

The temporary document was subsequently removed, and the RoleAssignments co=
llection is empty again.

Questions

Could you please advise on the following?


  1.  Is assigning the SystemAdmin client role under the webprotege client =
in Keycloak sufficient for this deployment version?
  2.  Is a MongoDB RoleAssignments document required in addition to assigni=
ng the SystemAdmin role in Keycloak? If so, could you please provide the co=
mplete and supported MongoDB query for creating the initial administrator a=
ssignment, including the required roleClosure and capabilityClosure fields?



  1.  What is the supported procedure for granting full administrative acce=
ss to the first registered user?
  2.  Is there a compatible authorization-service version that implements t=
he proposed initial-administrator bootstrap?
  3.  Are any additional client scopes, token mappers, or WebProt=E9g=E9 ap=
plication settings required?
  4.  Is an email-format value such as [email protected] support=
ed as the preferred_username and WebProt=E9g=E9 authorization username?
  5.  If a separate, non-email webprotege_username value is required, how s=
hould it be created and mapped for users registered through the email-only =
registration form?

Thank you for your assistance.

_________________________________________________________________
Thanks & Regards,
Nithin Dsouza
This message contains information that may be privileged or confidential an=
d is the property of the Capgemini Group. It is intended only for the perso=
n to whom it is addressed. If you are not the intended recipient, you are n=
ot authorized to read, print, retain, copy, disseminate, distribute, or use=
 this message or any part thereof. If you receive this message in error, pl=
ease notify the sender immediately and delete all copies of this message.

--_000_AM0PR02MB5924794BD8CE02236A3D5ACDDCC22AM0PR02MB5924eurp_
Content-Type: text/html; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Aptos;}
@font-face
	{font-family:"Segoe UI";
	panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Aptos",sans-serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:0cm;
	margin-left:36.0pt;
	font-size:11.0pt;
	font-family:"Aptos",sans-serif;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Aptos",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:11.0pt;
	mso-ligatures:none;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:101658188;
	mso-list-template-ids:-777330008;}
@list l0:level1
	{mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level2
	{mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level3
	{mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level4
	{mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level5
	{mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level6
	{mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level7
	{mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level8
	{mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l0:level9
	{mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l1
	{mso-list-id:587037612;
	mso-list-type:hybrid;
	mso-list-template-ids:-1234371790 67698689 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l2
	{mso-list-id:843284290;
	mso-list-type:hybrid;
	mso-list-template-ids:-1619507222 67698703 67698713 67698715 67698703 6769=
8713 67698715 67698703 67698713 67698715;}
@list l2:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l2:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l2:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l2:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l3
	{mso-list-id:934632993;
	mso-list-type:hybrid;
	mso-list-template-ids:-503806268 67698703 67698713 67698715 67698703 67698=
713 67698715 67698703 67698713 67698715;}
@list l3:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:72.0pt;
	text-indent:-18.0pt;}
@list l3:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:108.0pt;
	text-indent:-18.0pt;}
@list l3:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	margin-left:144.0pt;
	text-indent:-9.0pt;}
@list l3:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:180.0pt;
	text-indent:-18.0pt;}
@list l3:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:216.0pt;
	text-indent:-18.0pt;}
@list l3:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	margin-left:252.0pt;
	text-indent:-9.0pt;}
@list l3:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:288.0pt;
	text-indent:-18.0pt;}
@list l3:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	margin-left:324.0pt;
	text-indent:-18.0pt;}
@list l3:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	margin-left:360.0pt;
	text-indent:-9.0pt;}
@list l4
	{mso-list-id:1014724940;
	mso-list-type:hybrid;
	mso-list-template-ids:1391773890 67698703 67698713 67698715 67698703 67698=
713 67698715 67698703 67698713 67698715;}
@list l4:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level2
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level3
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l4:level4
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level5
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level6
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l4:level7
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level8
	{mso-level-number-format:alpha-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
@list l4:level9
	{mso-level-number-format:roman-lower;
	mso-level-tab-stop:none;
	mso-level-number-position:right;
	text-indent:-9.0pt;}
@list l5
	{mso-list-id:1352491848;
	mso-list-type:hybrid;
	mso-list-template-ids:4250542 67698689 67698691 67698693 67698689 67698691=
 67698693 67698689 67698691 67698693;}
@list l5:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l5:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l5:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l5:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l5:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l5:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l5:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Symbol;}
@list l5:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:"Courier New";}
@list l5:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	font-family:Wingdings;}
@list l6
	{mso-list-id:1452479366;
	mso-list-template-ids:1265958794;}
@list l6:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l6:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:"Courier New";
	mso-bidi-font-family:"Times New Roman";}
@list l6:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level5
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level8
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l6:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7
	{mso-list-id:1537813414;
	mso-list-template-ids:1422926956;}
@list l7:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l7:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:"Courier New";
	mso-bidi-font-family:"Times New Roman";}
@list l7:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level5
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level8
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l7:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8
	{mso-list-id:1721859079;
	mso-list-template-ids:-387252550;}
@list l8:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l8:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:"Courier New";
	mso-bidi-font-family:"Times New Roman";}
@list l8:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level5
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level8
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l8:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9
	{mso-list-id:1922176965;
	mso-list-template-ids:127304070;}
@list l9:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:36.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
@list l9:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:72.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:"Courier New";
	mso-bidi-font-family:"Times New Roman";}
@list l9:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:108.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:144.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level5
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:180.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:216.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:252.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level8
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:288.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
@list l9:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:324.0pt;
	mso-level-number-position:left;
	text-indent:-18.0pt;
	mso-ansi-font-size:10.0pt;
	font-family:Wingdings;}
ol
	{margin-bottom:0cm;}
ul
	{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#467886" vlink=3D"#96607D" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hello WebProt=E9g=E9 Support Team,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I am testing a fresh, self-hosted WebProt=E9g=E9 6.0=
.0 deployment using the protegeproject/webprotege-deploy Docker Compose rep=
ository.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The user can register and sign in successfully. Howe=
ver, after signing in, the home page displays only an empty project list. T=
he
<b>Create Project</b>, <b>Upload Project</b>, and <b>Application Settings</=
b> options are not available.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><b>Environment<o:p></o:p></b></p>
<p class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p>
<ul style=3D"margin-top:0cm" type=3D"disc">
<li class=3D"MsoNormal" style=3D"mso-list:l8 level1 lfo1">Operating system:=
 RHEL 9<o:p></o:p></li><li class=3D"MsoNormal" style=3D"mso-list:l8 level1 =
lfo1">Deployment method: Docker Compose<o:p></o:p></li><li class=3D"MsoNorm=
al" style=3D"mso-list:l8 level1 lfo1">Architecture: WebProt=E9g=E9 microser=
vices<o:p></o:p></li><li class=3D"MsoNormal" style=3D"mso-list:l8 level1 lf=
o1">Deployment branch: main<o:p></o:p></li><li class=3D"MsoNormal" style=3D=
"mso-list:l8 level1 lfo1">Deployment commit: e3ad731<o:p></o:p></li><li cla=
ss=3D"MsoNormal" style=3D"mso-list:l8 level1 lfo1">WebProt=E9g=E9 UI: 6.0.0=
<o:p></o:p></li><li class=3D"MsoNormal" style=3D"mso-list:l8 level1 lfo1">G=
WT UI server: 9.0.20<o:p></o:p></li><li class=3D"MsoNormal" style=3D"mso-li=
st:l8 level1 lfo1">Backend service: 5.0.10<o:p></o:p></li><li class=3D"MsoN=
ormal" style=3D"mso-list:l8 level1 lfo1">Authorization service: 3.0.9<o:p><=
/o:p></li><li class=3D"MsoNormal" style=3D"mso-list:l8 level1 lfo1">Keycloa=
k integration: 2.0.1<o:p></o:p></li><li class=3D"MsoNormal" style=3D"mso-li=
st:l8 level1 lfo1">MongoDB: 8.0.10<o:p></o:p></li></ul>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><b>User and Login Details<o:p></o:p></b></p>
<p class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p>
<p class=3D"MsoNormal">The test account was registered using webprotege-adm=
[email protected], as the registration form requires an email-format identifie=
r. The email address shown here has been anonymized for this public support=
 request.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"text-indent:36.0pt"><i>webprotege-admin@exa=
mple.com<o:p></o:p></i></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The SystemAdmin client role has been assigned to thi=
s account under the webprotege client in Keycloak.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><b>Validation completed<o:p></o:p></b></p>
<p class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p>
<p class=3D"MsoNormal">I have confirmed the following:<o:p></o:p></p>
<ul style=3D"margin-top:0cm" type=3D"disc">
<li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso-list:l5 level1 =
lfo9">All required WebProt=E9g=E9 containers are running.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l5 level1 lfo9">The WebProt=E9g=E9 login and home pages are accessibl=
e.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l5 level1 lfo9">Keycloak authentication and user login are working.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l5 level1 lfo9">The SystemAdmin client role is assigned to the test a=
ccount.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l5 level1 lfo9">The generated Keycloak access token contains:<o:p></o=
:p></li></ul>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">&quot;resource_access&quot;: {<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp; &quot;webprotege&quot;: {<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; &quot;roles&quot;: [<o:p></o:p></=
p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;SystemAdmin&quo=
t;<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; ]<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp; }<o:p></o:p></p>
<p class=3D"MsoNormal">}<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The generated token contains:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><i>&quot;preferred_username&quot;: &quot;webprotege-=
[email protected]&quot;<o:p></o:p></i></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<ul style=3D"margin-top:0cm" type=3D"disc">
<li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso-list:l1 level1 =
lfo10">The backend and authorization services recognize the account and suc=
cessfully process requests.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l1 level1 lfo10">MongoDB and RabbitMQ connectivity are working.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l1 level1 lfo10">Nginx is serving the UI, and no failed requests or e=
rror status codes were observed in the browser Network tab.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l1 level1 lfo10">No relevant recent errors or exceptions are present =
in the backend or authorization-service logs.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l1 level1 lfo10">The behavior was reproduced using a fresh private br=
owser session, ruling out browser caching.
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l1 level1 lfo10">This is a fresh installation, so no application upgr=
ade or database migration was involved.<o:p></o:p></li></ul>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">The authorization logs show successful requests such=
 as:<o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Received command web=
protege.authorization.GetAuthorizedCapabilities<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Request executed web=
protege.authorization.GetAuthorizedCapabilities<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i><o:p>&nbsp;</o:p></i=
></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Received command web=
protege.authorization.GetAuthorizedResources<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Request executed web=
protege.authorization.GetAuthorizedResources<o:p></o:p></i></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The backend logs also show successful requests such =
as:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Received command web=
protege.users.GetAuthenticatedUserDetails<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Request executed web=
protege.users.GetAuthenticatedUserDetails<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i><o:p>&nbsp;</o:p></i=
></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Received command web=
protege.projects.GetAvailableProjects<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Request executed web=
protege.projects.GetAvailableProjects</i><o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><b>Authorization observations<o:p></o:p></b></p>
<p class=3D"MsoNormal">The MongoDB RoleAssignments collection remains empty=
:<o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">db.RoleAssignments.countDocuments()<o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">Result:<o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN">0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal">I also reviewed:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<ul style=3D"margin-top:0cm" type=3D"disc">
<li class=3D"MsoNormal" style=3D"mso-list:l9 level1 lfo4">webprotege-author=
ization-service Issue #36<o:p></o:p></li><li class=3D"MsoNormal" style=3D"m=
so-list:l9 level1 lfo4">webprotege-deploy Issue #62<o:p></o:p></li></ul>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The proposed INITIAL_ADMIN_USERNAME bootstrap does n=
ot appear to be implemented in authorization-service 3.0.9 or wired into th=
e current deployment.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">For testing, the following temporary minimal RoleAss=
ignments document was inserted using the same anonymized email-format usern=
ame recognized by the backend and authorization-service logs:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">db.RoleAssignments.insertOne({<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp; userName: &quot;[email protected]&=
quot;,<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp; projectId: null,<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp; assignedRoles: [&quot;SystemAdmin&quot;]<o:p>=
</o:p></p>
<p class=3D"MsoNormal">})<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">However, this resulted in a RoleAssignment deseriali=
zation error because the required roleClosure and capabilityClosure fields =
were missing:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>Cannot construct ins=
tance of<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>edu.stanford.protege=
.webprotege.authorization.RoleAssignment<o:p></o:p></i></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i><o:p>&nbsp;</o:p></i=
></p>
<p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><i>java.lang.NullPointe=
rException<o:p></o:p></i></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The temporary document was subsequently removed, and=
 the RoleAssignments collection is empty again.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><b>Questions<o:p></o:p></b></p>
<p class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p>
<p class=3D"MsoNormal">Could you please advise on the following?<o:p></o:p>=
</p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<ol style=3D"margin-top:0cm" start=3D"1" type=3D"1">
<li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso-list:l2 level1 =
lfo8">Is assigning the SystemAdmin client role under the webprotege client =
in Keycloak sufficient for this deployment version?
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;lin=
e-height:15.0pt;mso-list:l2 level1 lfo8">
<span style=3D"font-size:10.5pt;font-family:&quot;Segoe UI&quot;,sans-serif=
">Is a MongoDB </span>
<span style=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;">RoleAs=
signments</span><span style=3D"font-size:10.5pt;font-family:&quot;Segoe UI&=
quot;,sans-serif"> document required in addition to assigning the
</span><span style=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;"=
>SystemAdmin</span><span style=3D"font-size:10.5pt;font-family:&quot;Segoe =
UI&quot;,sans-serif"> role in Keycloak? If so, could you please provide the=
 complete and supported MongoDB query for creating the initial
 administrator assignment, including the required </span><span style=3D"fon=
t-size:10.0pt;font-family:&quot;Courier New&quot;">roleClosure</span><span =
style=3D"font-size:10.5pt;font-family:&quot;Segoe UI&quot;,sans-serif"> and
</span><span style=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;"=
>capabilityClosure</span><span style=3D"font-size:10.5pt;font-family:&quot;=
Segoe UI&quot;,sans-serif"> fields?<o:p></o:p></span></li></ol>
<p class=3D"MsoListParagraph" style=3D"line-height:15.0pt"><span style=3D"f=
ont-size:10.5pt;font-family:&quot;Segoe UI&quot;,sans-serif"><o:p>&nbsp;</o=
:p></span></p>
<ol style=3D"margin-top:0cm" start=3D"3" type=3D"1">
<li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso-list:l2 level1 =
lfo8">What is the supported procedure for granting full administrative acce=
ss to the first registered user?
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l2 level1 lfo8">Is there a compatible authorization-service version t=
hat implements the proposed initial-administrator bootstrap?
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l2 level1 lfo8">Are any additional client scopes, token mappers, or W=
ebProt=E9g=E9 application settings required?
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l2 level1 lfo8">Is an email-format value such as webprotege-admin@exa=
mple.com supported as the preferred_username and WebProt=E9g=E9 authorizati=
on username?
<o:p></o:p></li><li class=3D"MsoListParagraph" style=3D"margin-left:0cm;mso=
-list:l2 level1 lfo8">If a separate, non-email webprotege_username value is=
 required, how should it be created and mapped for users registered through=
 the email-only registration form?<o:p></o:p></li></ol>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Thank you for your assistance.<o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-IN"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Ve=
rdana&quot;,sans-serif;color:black;mso-ligatures:standardcontextual">______=
___________________________________________________________</span><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Verdana&quot;,sans-serif;color:#FF=
C000"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Ve=
rdana&quot;,sans-serif;color:black;mso-ligatures:standardcontextual">Thanks=
 &amp; Regards,<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:&quot;Ve=
rdana&quot;,sans-serif;color:black;mso-ligatures:standardcontextual">Nithin=
 Dsouza</span><span style=3D"font-family:&quot;Verdana&quot;,sans-serif;col=
or:black;mso-ligatures:standardcontextual"><o:p></o:p></span></p>
</div>
<span style=3D"font-size: 9px;">This message contains information that may =
be privileged or confidential and is the property of the Capgemini Group. I=
t is intended only for the person to whom it is addressed. If you are not t=
he intended recipient, you are not authorized to read, print, retain, copy,=
 disseminate, distribute, or use this message or any part thereof. If you r=
eceive this message in error, please notify the sender immediately and dele=
te all copies of this message.</span></body>
</html>

--_000_AM0PR02MB5924794BD8CE02236A3D5ACDDCC22AM0PR02MB5924eurp_--


--===============6565957658834252072==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
protege-user mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/protege-user

--===============6565957658834252072==--