---
id: object/table/91
type: object
title: Table 91 "User Setup"
summary: Table 91 "User Setup" in Base Application (System.Security.User). 32 fields, 8 public procedures, 2 events. Present since at least BC23, still in BC30, changed in BC24-25, BC27-28.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: dd274bfa828b6fb02fb05bd9e2195ab8f02ab9abaaead069ff9f93c60dd38b30
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/User/UserSetup.Table.al
    title: src/Layers/W1/BaseApp/System/User/UserSetup.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/ui-define-granular-permissions
    - https://learn.microsoft.com/dynamics365/business-central/ui-how-users-permissions
    - https://learn.microsoft.com/dynamics365/business-central/ui-legacy-user-groups
    - https://learn.microsoft.com/dynamics365/business-central/ui-security-groups
    - https://learn.microsoft.com/dynamics365/business-central/across-how-to-set-up-approval-users
    - https://learn.microsoft.com/dynamics365/business-central/across-how-to-specify-when-and-how-to-receive-notifications
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_approvalusersetup_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_approvalusersetup
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/set-up-business-central/set-up-approval-workflows-based-on-templ
    - topic/business-central/development-and-administration/administration-tasks-in-business-central/manage-access-to-business-central
    - topic/business-central/development-and-administration/administration-tasks-in-business-central/manage-access-to-business-central/grant-user-permissions
    - topic/dev-itpro/development/troubleshooting/troubleshooting-in-the-client
    - topic/dev-itpro/integration/integrating-with-infrastructure-services
    - topic/dev-itpro/security-privacy-and-compliance/security/application-security
  localizations:
    - localization/no
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 91
name: User Setup
namespace: System.Security.User
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries:
  - "no"
ms_search_form_ids: []
counts:
  fields: 32
  procedures: 13
  events: 2
  subscribers: 0
relations:
  out: 8
  referenced_by: 54
  pages: 6
  extended_by: 3
  event_subscribers: 0
  calls: 3
  called_by: 0
  implements: 0
---

# Table 91 "User Setup"

> Table 91 "User Setup" in Base Application (System.Security.User). 32 fields, 8 public procedures, 2 events. Present since at least BC23, still in BC30, changed in BC24-25, BC27-28.

Base Application · System.Security.User · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/User/UserSetup.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 119 "User Setup"](../page/119.md) (4 Learn pages), [Page 663 "Approval User Setup"](../page/663.md) (2), [Page 30095 "APIV2 - Approval User Setup"](../page/30095.md) (2).

## Properties

| Property | Value |
|---|---|
| Caption | User Setup |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | User ID | Code[50] | Specifies the ID of the user who posted the entry, to be used, for example, in the change log. <small>via [Page 119 "User Setup"](../page/119.md)</small> | TableRelation User."User Name"; NotBlank; DataClassification EndUserIdentifiableInformation |
| 2 | Allow Posting From | Date | Specifies the earliest date on which the user is allowed to post to the company. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 3 | Allow Posting To | Date | Specifies the last date on which the user is allowed to post to the company. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 4 | Register Time | Boolean | Specifies whether to register the user's time usage defined as the time spent from when the user logs in to when the user logs out. Unexpected interruptions, such as idle session timeout, terminal server idle session timeout, or a client crash are not recorded. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 5 | Allow Deferral Posting From | Date | Specifies the earliest date on which the user is allowed to post deferrals to the company. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 6 | Allow Deferral Posting To | Date | Specifies the last date on which the user is allowed to post deferrals to the company. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 10 | Salespers./Purch. Code | Code[20] | Specifies the code for the salesperson or purchaser for the user. <small>via [Page 119 "User Setup"](../page/119.md)</small> | TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md) ("Salesperson/Purchaser" where(Blocked = const(false))) |
| 11 | Approver ID | Code[50] | Specifies the user ID of the person who must approve records that are made by the user in the User ID field before the record can be released. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> | TableRelation [Table 91 "User Setup"](../table/91.md) ("User Setup"."User ID"); DataClassification EndUserIdentifiableInformation |
| 12 | Sales Amount Approval Limit | Integer | Specifies the maximum amount in LCY that this user is allowed to approve for this record. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 13 | Purchase Amount Approval Limit | Integer | Specifies the maximum amount in LCY that this user is allowed to approve for this record. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 14 | Unlimited Sales Approval | Boolean | Specifies that the user on this line is allowed to approve sales records with no maximum amount. If you select this check box, then you cannot fill the Sales Amount Approval Limit field. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 15 | Unlimited Purchase Approval | Boolean | Specifies that the user on this line is allowed to approve purchase records with no maximum amount. If you select this check box, then you cannot fill the Purchase Amount Approval Limit field. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 16 | Substitute | Code[50] | Specifies the User ID of the user who acts as a substitute for the original approver. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> | TableRelation [Table 91 "User Setup"](../table/91.md) ("User Setup"."User ID"); DataClassification EndUserIdentifiableInformation |
| 17 | E-Mail | Text[100] | Specifies the user's email address. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 18 | Phone No. | text[30] | Specifies the user's phone number. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 19 | Request Amount Approval Limit | Integer | Specifies the maximum amount in LCY that this user is allowed to approve for this record. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 20 | Unlimited Request Approval | Boolean | Specifies that the user on this line can approve all purchase quotes regardless of their amount. If you select this check box, then you cannot fill the Request Amount Approval Limit field. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 21 | Approval Administrator | Boolean | Specifies the user who has rights to unblock approval workflows, for example, by delegating approval requests to new substitute approvers and deleting overdue approval requests. <small>via [Page 663 "Approval User Setup"](../page/663.md)</small> |  |
| 22 | Allow VAT Date From | Date | Specifies the earliest date on which the user is allowed to post VAT to the company books is allowed. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 23 | Allow VAT Date To | Date | Specifies the last date on which the user is allowed to post VAT to the company books is allowed. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 31 | License Type | Option | Specifies the user's License Type. <small>via [Page 119 "User Setup"](../page/119.md)</small> | FlowField: lookup(User."License Type" where("User Name" = field("User ID"))); OptionCaption: Full User,Limited User,Device Only User,Windows Group,External User,External Administrator,External Accountant,Application,Microsoft Entra group |
| 80 | Sales Invoice Posting Policy | Enum "Invoice Posting Policy" | Specify if you want user who posts warehouse shipment, sales shipments, or inventory pick to be able to post invoice/credit-memo as well. <small>via [Page 119 "User Setup"](../page/119.md)</small> | enum [Enum 80 "Invoice Posting Policy"](../enum/80.md) |
| 90 | Purch. Invoice Posting Policy | Enum "Invoice Posting Policy" | Specify if you want user who posts purchase receipt or inventory put-away to be able to post invoice/credit-memo as well. <small>via [Page 119 "User Setup"](../page/119.md)</small> | enum [Enum 80 "Invoice Posting Policy"](../enum/80.md) |
| 950 | Time Sheet Admin. | Boolean | Specifies if a user is a time sheet administrator. A time sheet administrator can access any time sheet and then edit, change, or delete it. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 5600 | Allow FA Posting From | Date | — |  |
| 5601 | Allow FA Posting To | Date | — |  |
| 5700 | Sales Resp. Ctr. Filter | Code[10] | Specifies the code for the responsibility center to which you want to assign the user. <small>via [Page 119 "User Setup"](../page/119.md)</small> | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) ("Responsibility Center".Code) |
| 5701 | Purchase Resp. Ctr. Filter | Code[10] | Specifies the code for the responsibility center to which you want to assign the user. <small>via [Page 119 "User Setup"](../page/119.md)</small> | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) (Responsibility Center) |
| 5900 | Service Resp. Ctr. Filter | Code[10] | Specifies the code for the responsibility center you want to assign to the user. The user will only be able to see service documents for the responsibility center specified in the field. This responsibility center will also be the default responsibility center when the user creates new service docum... <small>via [Page 119 "User Setup"](../page/119.md)</small> | TableRelation [Table 5714 "Responsibility Center"](../table/5714.md) (Responsibility Center) |
| 5980 | Service Invoice Posting Policy | Enum "Invoice Posting Policy" | Specify if you want user who posts warehouse shipment or service shipments to be able to post invoice/credit-memo as well. <small>via [Page 119 "User Setup"](../page/119.md)</small> | enum [Enum 80 "Invoice Posting Policy"](../enum/80.md) |
| 5991 | Allow Posting From DateFormula | DateFormula | Specifies a date formula to calculate the earliest date, relative to today's date, on which posting to the company books is allowed. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |
| 5992 | Allow Posting To DateFormula | DateFormula | Specifies a date formula to calculate the latest date, relative to today's date, on which posting to the company books is allowed. <small>via [Page 119 "User Setup"](../page/119.md)</small> |  |

## Keys

- Key1: User ID (clustered)
- Key2: Salespers./Purch. Code

## Events published

- `OnBeforeEnsureUniqueSalesPersonPurchCode(var UserSetup: Record "User Setup"; var IsHandled: Boolean)` (integration)
- `OnBeforeValidateApprovalAdministrator(var UserSetup: Record "User Setup"; var IsHandled: Boolean)` (integration)

## Procedures

- `CreateApprovalUserSetup(User: Record User)`
- `GetDefaultSalesAmountApprovalLimit(): Integer`
- `GetDefaultPurchaseAmountApprovalLimit(): Integer`
- `HideExternalUsers()`
- `UpdateSalesPerson(FieldNumber: Integer)`
- `CheckAllowedVATDates(NotificationType: Option Error,Notification)`
- `CheckAllowedPostingDates(NotificationType: Option Error,Notification)`
- `CheckAllowedDeferralPostingDates(NotificationType: Option Error,Notification)`

Plus 3 local procedures.

## Triggers

OnDelete, OnInsert

## Relations

- drill-down page [Page 119 "User Setup"](../page/119.md)
- lookup page [Page 119 "User Setup"](../page/119.md)
- Salespers./Purch. Code: TableRelation [Table 13 "Salesperson/Purchaser"](../table/13.md)
- Purchase Resp. Ctr. Filter: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Sales Resp. Ctr. Filter: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Service Resp. Ctr. Filter: TableRelation [Table 5714 "Responsibility Center"](../table/5714.md)
- Approver ID: TableRelation [Table 91 "User Setup"](../table/91.md)
- Substitute: TableRelation [Table 91 "User Setup"](../table/91.md)

## Referenced by

54 fields in 44 objects relate to this table (TableRelation or CalcFormula).

- [Table 1523 "Workflow Step Argument"](../table/1523.md): Approver User ID, Notification User ID, Response User ID
- [Table 1511 "Notification Entry"](../table/1511.md): Recipient User ID, Sender User ID
- [Table 156 "Resource"](../table/156.md): Time Sheet Approver User ID, Time Sheet Owner User ID
- [Table 8010 "Imported Cust. Sub. Contract"](../table/8010.md): Assigned User ID, Processed by
- [Table 91 "User Setup"](../table/91.md): Approver ID, Substitute
- [Table 950 "Time Sheet Header"](../table/950.md): Approver User ID, Owner User ID
- [Table 951 "Time Sheet Line"](../table/951.md): Approved By, Approver ID
- [Table 954 "Time Sheet Header Archive"](../table/954.md): Approver User ID, Owner User ID
- [Table 955 "Time Sheet Line Archive"](../table/955.md): Approved By, Approver ID
- [Table 1512 "Notification Setup"](../table/1512.md): User ID
- [Table 1513 "Notification Schedule"](../table/1513.md): User ID
- [Table 1541 "Workflow User Group Member"](../table/1541.md): User Name
- [Table 167 "Job"](../table/167.md): Project Manager
- [Table 1804 "Approval Workflow Wizard"](../table/1804.md): Approver ID
- [Table 20360 "Use Case Archival Log Entry"](../table/20360.md): User ID
- [Table 20362 "Tax Type Archival Log Entry"](../table/20362.md): User ID
- [Table 295 "Reminder Header"](../table/295.md): Assigned User ID
- [Table 302 "Finance Charge Memo Header"](../table/302.md): Assigned User ID
- [Table 36 "Sales Header"](../table/36.md): Assigned User ID
- [Table 38 "Purchase Header"](../table/38.md): Assigned User ID
- [Table 458 "Overdue Approval Entry"](../table/458.md): Sent to ID
- [Table 5107 "Sales Header Archive"](../table/5107.md): Assigned User ID
- [Table 5109 "Purchase Header Archive"](../table/5109.md): Assigned User ID
- [Table 5135 "Job Archive"](../table/5135.md): Project Manager
- [Table 5405 "Production Order"](../table/5405.md): Assigned User ID
- [Table 5740 "Transfer Header"](../table/5740.md): Assigned User ID
- [Table 5900 "Service Header"](../table/5900.md): Assigned User ID
- [Table 6010 "Service Header Archive"](../table/6010.md): Assigned User ID
- [Table 6218 "Sustainability Scorecard"](../table/6218.md): Owner
- [Table 6219 "Sustainability Goal"](../table/6219.md): Owner
- [Table 6923 "Expense User"](../table/6923.md): User Id For Approvals
- [Table 8008 "Imported Subscription Header"](../table/8008.md): Processed by
- [Table 8009 "Imported Subscription Line"](../table/8009.md): Processed by
- [Table 8022 "Contract Billing Err. Log"](../table/8022.md): Assigned User ID
- [Table 8052 "Customer Subscription Contract"](../table/8052.md): Assigned User ID
- [Table 8061 "Billing Line"](../table/8061.md): User ID
- [Table 8063 "Vendor Subscription Contract"](../table/8063.md): Assigned User ID
- [Table 8064 "Billing Line Archive"](../table/8064.md): User ID
- [Table 8066 "Cust. Sub. Contract Deferral"](../table/8066.md): User ID
- [Table 8072 "Vend. Sub. Contract Deferral"](../table/8072.md): User ID
- [Table 8374 "Fin. Report Package Recipient"](../table/8374.md): User Email
- [Table 900 "Assembly Header"](../table/900.md): Assigned User ID
- [Table 9059 "Administration Cue"](../table/9059.md): User Posting Period
- [Table extension 6903 "User Setup Ext"](../tableextension/6903.md): Interim Approver ID

## Pages and codeunits on this table

- [Page 119 "User Setup"](../page/119.md) (source table)
- [Page 1825 "Time Sheet User Setup Subform"](../page/1825.md) (source table)
- [Page 30095 "APIV2 - Approval User Setup"](../page/30095.md) (source table)
- [Page 30436 "Approval Users"](../page/30436.md) (source table)
- [Page 663 "Approval User Setup"](../page/663.md) (source table)
- [Page 9819 "User Setup FactBox"](../page/9819.md) (source table)

## Extended by

- [Table extension 6210 "User Setup - TabExt"](../tableextension/6210.md)
- [Table extension 6903 "User Setup Ext"](../tableextension/6903.md)
- [Table extension 8012 "User Setup"](../tableextension/8012.md)

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 5700 "User Setup Management"](../codeunit/5700.md) (4 calls: `CheckAllowedDeferralPostingDates → CheckAllowedPostingDatesRange`, `CheckAllowedPostingDates → CheckAllowedPostingDatesRange`, `CheckAllowedPostingDates → GetDateRange`, …)
- [Codeunit 457 "Environment Information"](../codeunit/457.md) (1 call: `HideExternalUsers → IsSaaS`)
- [Codeunit 9520 "Mail Management"](../codeunit/9520.md) (1 call: `SetEmailOnRecord → CheckValidEmailAddress`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-25, BC27-28

## Countries that replace it

[NO](../../localizations/no.md)

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "table", object_name: "User Setup")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
