diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js
index 9b9d1c38bdf1b8a7d17d682668ddfff65be22c9f..19f1578c3c23bb67ccc2d230cf7c1d0171cfdcf3 100644
--- a/openbis_ng_ui/src/js/components/common/grid/GridController.js
+++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js
@@ -30,7 +30,16 @@ export default class GridController {
 
     let sortings = []
 
-    if (props.sort) {
+    if (props.sortings) {
+      props.sortings.forEach(sorting => {
+        sortings.push({
+          columnName: sorting.columnName,
+          sortDirection: sorting.sortDirection
+            ? sorting.sortDirection
+            : GridSortingOptions.ASC
+        })
+      })
+    } else if (props.sort) {
       sortings.push({
         columnName: props.sort,
         sortDirection: props.sortDirection
diff --git a/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx b/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx
index e257174d9a41b57e08233ff61820da204543f502..5c360c7fe4b3e3cb6775601ff4d20a13172ea60a 100644
--- a/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx
+++ b/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx
@@ -118,7 +118,11 @@ class PersonalAccessTokenForm extends React.PureComponent {
           header={messages.get(messages.PERSONAL_ACCESS_TOKENS)}
           columns={columns}
           rows={pats}
-          sort='sessionName'
+          sortings={[
+            { columnName: 'owner' },
+            { columnName: 'sessionName' },
+            { columnName: 'validFromDate' }
+          ]}
           selectable={true}
           selectedRowId={selection ? selection.params.id : null}
           onSelectedRowChange={this.handleSelectedRowChange}