# Security

Cases defines 6 group(s), 56 access right(s) and 15 record rule(s). This page states who can see and edit what, in plain language, with the exact rules underneath. Generated from the installed database on 2026-10-14 for version 19.0.2.5.74.

**Cases defines 6 group(s), 56 access right(s) and 15 record rule(s). This page states who can see and edit what, in plain language, with the exact rules underneath. Generated from the installed database on 2026-10-14 for version 19.0.2.5.74.**

## Groups

### Cases (`j_law_cases.res_groups_privilege_j_cases`) {#group-j-law-cases-res-groups-privilege-j-cases}

A privilege: the heading under which the groups below appear on the user form.

### Hearings (`j_law_cases.res_groups_privilege_j_hearings`) {#group-j-law-cases-res-groups-privilege-j-hearings}

A privilege: the heading under which the groups below appear on the user form.

### Manager: All Documents (`j_law_cases.group_j_case_manager`) {#group-j-law-cases-group-j-case-manager}

Implies: Cases / User: Own Documents (`j_law_cases.group_j_case_user`)

### Read-only (`j_law_cases.group_j_case_readonly`) {#group-j-law-cases-group-j-case-readonly}

Implies: Role / User (`base.group_user`)

### User: Own Documents (`j_law_cases.group_j_case_user`) {#group-j-law-cases-group-j-case-user}

Implies: Cases / Read-only (`j_law_cases.group_j_case_readonly`)

### Manager: All Documents (`j_law_cases.group_j_hearing_manager`) {#group-j-law-cases-group-j-hearing-manager}

Implies: Hearings / User: Own Documents (`j_law_cases.group_j_hearing_user`)

### Read-only (`j_law_cases.group_j_hearing_readonly`) {#group-j-law-cases-group-j-hearing-readonly}

Implies: Role / User (`base.group_user`)

### User: Own Documents (`j_law_cases.group_j_hearing_user`) {#group-j-law-cases-group-j-hearing-user}

Implies: Hearings / Read-only (`j_law_cases.group_j_hearing_readonly`)

## Access rights

### Law Case (`j.case`) {#access-j-case}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Role / Portal (`base.group_portal`) | yes | no | no | no |
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Case Appeals Wizard (`j.case.appeals.wizard`) {#access-j-case-appeals-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Case Cancel Reason (`j.case.cancel.reason`) {#access-j-case-cancel-reason}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Case Canceled Reason Wizard (`j.case.cancel.reason.wizard`) {#access-j-case-cancel-reason-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Change-Client Wizard: Evidence Line (`j.case.client.change.evidence.line`) {#access-j-case-client-change-evidence-line}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Change-Client Wizard: Client Request Line (`j.case.client.change.request.line`) {#access-j-case-client-change-request-line}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Change Client and Sync Related Records (`j.case.client.change.wizard`) {#access-j-case-client-change-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Case Report PDF (`j.case.list.report`) {#access-j-case-list-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |

### Lost Reason (`j.case.lost.reason`) {#access-j-case-lost-reason}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Mark Lost Reason Wizard (`j.case.lost.reason.wizard`) {#access-j-case-lost-reason-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Wizard for Case Progress Actions (`j.case.progress.wizard`) {#access-j-case-progress-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Law Case Report (`j.case.report`) {#access-j-case-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |

### Case State Tag (filter helper) (`j.case.state.tag`) {#access-j-case-state-tag}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |

### Case Template (`j.case.template`) {#access-j-case-template}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |

### Case Type (`j.case.type`) {#access-j-case-type}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Evidence (`j.evidence`) {#access-j-evidence}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Role / Portal (`base.group_portal`) | yes | no | no | no |
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Hearing (`j.hearing`) {#access-j-hearing}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Role / Portal (`base.group_portal`) | yes | no | no | no |
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |
| Hearings / Read-only (`j_law_cases.group_j_hearing_readonly`) | yes | no | no | no |
| Hearings / User: Own Documents (`j_law_cases.group_j_hearing_user`) | yes | yes | yes | no |

### Close Hearing Wizard (`j.hearing.close.wizard`) {#access-j-hearing-close-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |
| Hearings / User: Own Documents (`j_law_cases.group_j_hearing_user`) | yes | yes | yes | yes |

### Law Hearing PDF Report (`j.hearing.list.report`) {#access-j-hearing-list-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |

### Law Hearing Report (`j.hearing.report`) {#access-j-hearing-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |

### Hearing State Tag (filter helper) (`j.hearing.state.tag`) {#access-j-hearing-state-tag}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |
| Hearings / Read-only (`j_law_cases.group_j_hearing_readonly`) | yes | no | no | no |

### Law Hearing Summary Report (`j.hearing.summary.report`) {#access-j-hearing-summary-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`) | yes | yes | yes | yes |

### Case Judgment (`j.judgment`) {#access-j-judgment}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | no |

### Law Judgment Report (`j.judgment.report`) {#access-j-judgment-report}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`) | yes | yes | yes | yes |

### List Report Wizard (`j.list.report.wizard`) {#access-j-list-report-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

### Neglected Report Wizard (`j.neglected.report.wizard`) {#access-j-neglected-report-wizard}

| Group | Read | Write | Create | Delete |
|---|---|---|---|---|
| Cases / Read-only (`j_law_cases.group_j_case_readonly`) | yes | no | no | no |
| Cases / User: Own Documents (`j_law_cases.group_j_case_user`) | yes | yes | yes | yes |

## Record rules

### j.case multi-company (`j_law_cases.rule_j_case_company`) {#rule-j-law-cases-rule-j-case-company}

On Law Case (`j.case`) for everyone: read, write, create, delete.

Records where "__jdocsvar8__" is one of the user's companies.

```python
[('company_id', 'in', company_ids)]
```

### j.case: manager all (`j_law_cases.rule_j_case_manager_all`) {#rule-j-law-cases-rule-j-case-manager-all}

On Law Case (`j.case`) for Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`): read, write, create, delete.

Records where every record.

```python
[(1, '=', 1)]
```

### Case: portal — privacy-controlled (`j_law_cases.rule_j_case_portal`) {#rule-j-law-cases-rule-j-case-portal}

On Law Case (`j.case`) for Role / Portal (`base.group_portal`): read, write, create, delete.

Records where Followers (Partners) is one of the current user's contact and Privacy Visibility is one of invited, portal.

```python
[
                '&',
                ('privacy_visibility', 'in', ['invited', 'portal']),
                ('message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

### j.case: own / followed (`j_law_cases.rule_j_case_user_own`) {#rule-j-law-cases-rule-j-case-user-own}

On Law Case (`j.case`) for Cases / User: Own Documents (`j_law_cases.group_j_case_user`): read, write, create, delete.

Records where Followers (Partners) is one of the current user's contact or Lawyers › User is the current user.

```python
[
                '|',
                ('lawyer_ids.user_id', '=', user.id),
                ('message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

### j.case.type multi-company (`j_law_cases.rule_j_case_type_company`) {#rule-j-law-cases-rule-j-case-type-company}

On Case Type (`j.case.type`) for everyone: read, write, create, delete.

Records where "__jdocsvar8__" is one of the user's companies or "__jdocsvar8__" is empty.

```python
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]
```

### j.evidence multi-company (`j_law_cases.rule_j_evidence_company`) {#rule-j-law-cases-rule-j-evidence-company}

On Evidence (`j.evidence`) for everyone: read, write, create, delete.

Records where "__jdocsvar8__" is one of the user's companies or "__jdocsvar8__" is empty.

```python
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]
```

### j.evidence: manager all (`j_law_cases.rule_j_evidence_manager_all`) {#rule-j-law-cases-rule-j-evidence-manager-all}

On Evidence (`j.evidence`) for Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`): read, write, create, delete.

Records where every record.

```python
[(1, '=', 1)]
```

### j.evidence: case follower (`j_law_cases.rule_j_evidence_user_own`) {#rule-j-law-cases-rule-j-evidence-user-own}

On Evidence (`j.evidence`) for Cases / User: Own Documents (`j_law_cases.group_j_case_user`): read, write, create, delete.

Records where Case › Followers (Partners) is one of the current user's contact or Case › Lawyers › User is the current user.

```python
[
                '|',
                ('case_id.lawyer_ids.user_id', '=', user.id),
                ('case_id.message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

### j.hearing multi-company (`j_law_cases.rule_j_hearing_company`) {#rule-j-law-cases-rule-j-hearing-company}

On Hearing (`j.hearing`) for everyone: read, write, create, delete.

Records where "__jdocsvar8__" is one of the user's companies.

```python
[('company_id', 'in', company_ids)]
```

### j.hearing: manager all (`j_law_cases.rule_j_hearing_manager_all`) {#rule-j-law-cases-rule-j-hearing-manager-all}

On Hearing (`j.hearing`) for Hearings / Manager: All Documents (`j_law_cases.group_j_hearing_manager`): read, write, create, delete.

Records where every record.

```python
[(1, '=', 1)]
```

### Hearing: portal — privacy-controlled (`j_law_cases.rule_j_hearing_portal`) {#rule-j-law-cases-rule-j-hearing-portal}

On Hearing (`j.hearing`) for Role / Portal (`base.group_portal`): read, write, create, delete.

Records where Followers (Partners) is one of the current user's contact and Case › Privacy Visibility is one of invited, portal.

```python
[
                '&',
                ('case_id.privacy_visibility', 'in', ['invited', 'portal']),
                ('message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

### j.hearing: own / followed (`j_law_cases.rule_j_hearing_user_own`) {#rule-j-law-cases-rule-j-hearing-user-own}

On Hearing (`j.hearing`) for Hearings / User: Own Documents (`j_law_cases.group_j_hearing_user`): read, write, create, delete.

Records where Followers (Partners) is one of the current user's contact or Lawyers › User is the current user.

```python
[
                '|',
                ('lawyer_ids.user_id', '=', user.id),
                ('message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

### j.judgment multi-company (`j_law_cases.rule_j_judgment_company`) {#rule-j-law-cases-rule-j-judgment-company}

On Case Judgment (`j.judgment`) for everyone: read, write, create, delete.

Records where "__jdocsvar8__" is one of the user's companies or "__jdocsvar8__" is empty.

```python
['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]
```

### j.judgment: manager all (`j_law_cases.rule_j_judgment_manager_all`) {#rule-j-law-cases-rule-j-judgment-manager-all}

On Case Judgment (`j.judgment`) for Cases / Manager: All Documents (`j_law_cases.group_j_case_manager`): read, write, create, delete.

Records where every record.

```python
[(1, '=', 1)]
```

### j.judgment: case follower (`j_law_cases.rule_j_judgment_user_own`) {#rule-j-law-cases-rule-j-judgment-user-own}

On Case Judgment (`j.judgment`) for Cases / User: Own Documents (`j_law_cases.group_j_case_user`): read, write, create, delete.

Records where Case › Followers (Partners) is one of the current user's contact or Case › Lawyers › User is the current user.

```python
[
                '|',
                ('case_id.lawyer_ids.user_id', '=', user.id),
                ('case_id.message_partner_ids', 'in', [user.partner_id.id]),
            ]
```

---

- Source: https://jaah.app/docs/law-cases/security
- Updated: 2026-10-14
- Version: Cases 19.0.2.5.74
