#8959 Deliverable 638799: Spend Requests in Base App
Spend Requests allow users to create requisitions for planned expenses and link them to journal entries and purchase documents for automatic updates during posting.
- 363files
- 361AL files
- 58objects
Pull request · merged into main (BC30) on 2026-07-31 by BardurKnudsen · 363 files (+8123 -86), 361 AL · feature · tier official · reviewed (checked by Opus)
What changed
- New Spend Request tables, pages, enums and a document report track requests to spend money
- General journal lines and purchase documents can reference a spend request number, which updates the request on posting
- General journal check, posting and reversal logic, plus purchase posting, were extended for spend request links
- The feature is delivered early so the Expense Agent team can build Travel Requisitions on it
- Still incomplete: approvals, an amount check at posting and a report layout are missing
- Behaviour changes for users or extensions.
AL objects touched
- Table 15 “G/L Account”, Base Application: modified
- Table 81 “Gen. Journal Line”, Base Application: modified
- Page 256 “Payment Journal”, Base Application: modified
- Table 181 “Posted Gen. Journal Line”, Base Application: modified
- Codeunit 13 “Gen. Jnl.-Post Batch”, Base Application: modified
- Codeunit 12 “Gen. Jnl.-Post Line”, Base Application: modified
- Codeunit 17 “Gen. Jnl.-Post Reverse”, Base Application: modified
- Page 118 “General Ledger Setup”, Base Application: modified
- Table 98 “General Ledger Setup”, Base Application: modified
- Table 55 “Invoice Posting Buffer”, Base Application: modified
- Table 5109 “Purchase Header Archive”, Base Application: modified
- Table 38 “Purchase Header”, Base Application: modified
- Table 39 “Purchase Line”, Base Application: modified
- Table 124 “Purch. Cr. Memo Hdr.”, Base Application: modified
- Table 122 “Purch. Inv. Header”, Base Application: modified
- Table 123 “Purch. Inv. Line”, Base Application: modified
- Codeunit 816 “Purch. Post Invoice”, Base Application: modified
- Page 344 “Navigate”, Base Application: modified
- Table 5110 “Purchase Line Archive”, Base Application: modified
- Table 4 “Currency”, Base Application: modified
- Codeunit 11 “Gen. Jnl.-Check Line”, Base Application: modified
- Page 52 “Purchase Credit Memo”, Base Application: modified
- Page 51 “Purchase Invoice”, Base Application: modified
- Page 50 “Purchase Order”, Base Application: modified
- Page 49 “Purchase Quote”, Base Application: modified
- Report 1322 “Standard Purchase - Order”, Base Application: modified
- Codeunit 230 “GenJnlManagement”, Base Application: modified
- Page 138 “Posted Purchase Invoice”, Base Application: modified
- Page 17 “G/L Account Card”, Base Application: modified
- Page 39 “General Journal”, Base Application: modified
- Page 254 “Purchase Journal”, Base Application: modified
- Page 20 “General Ledger Entries”, Base Application: modified
- Table 6840 “Spend Request”, Base Application: added
- Page 6841 “Spend Request Card”, Base Application: added
- Table 6841 “Spend Request Detail”, Base Application: added
- Report 6850 “Spend Request Document”, Base Application: added
- Page 6840 “Spend Request List”, Base Application: added
- Enum 6843 “Spend Request Required”, Base Application: added
- Enum 6841 “Spend Request Status”, Base Application: added
- Page 6842 “Spend Request Subform”, Base Application: added
- Page 6843 “Spend Request To G/L Link”, Base Application: added
- Table 6845 “Spend Request To G/L Link”, Base Application: added
- Permission set 5117 “D365 AUTOMATION”, Base Application: modified
- Permission set 208 “D365 Basic - Edit”, Base Application: modified
- Permission set 732 “D365 BASIC ISV”, Base Application: modified
- Permission set 209 “D365 Basic - Read”, Base Application: modified
- Permission set 959 “D365 BUS FULL ACCESS”, Base Application: modified
- Permission set 1044 “D365 READ”, Base Application: modified
- Permission set 7931 “D365 TEAM MEMBER”, Base Application: modified
- Permission set 6121 “INTELLIGENT CLOUD”, Base Application: modified
- Page 5167 “Purchase Order Archive”, Base Application: modified
- Page 5168 “Purchase Order Archive Subform”, Base Application: modified
- Page 55 “Purch. Invoice Subform”, Base Application: modified
- Page 54 “Purchase Order Subform”, Base Application: modified
- Page 97 “Purchase Quote Subform”, Base Application: modified
- Page 139 “Posted Purch. Invoice Subform”, Base Application: modified
- Page 140 “Posted Purchase Credit Memo”, Base Application: modified
- Codeunit 1751 “Data Classification Eval. Data”, Base Application: modified
src/Layers/APAC/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Finance/GeneralLedger/Journal/GenJnlCheckLine.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/APAC/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostBatch.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/BE/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Finance/GeneralLedger/Journal/GenJnlCheckLine.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/Document/PurchaseQuote.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/History/PostedPurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/CH/BaseApp/Purchases/Posting/PurchPostInvoice.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/DACH/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/DACH/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Journal/GenJnlManagement.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Reversal/GenJnlPostReverse.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/Document/PurchaseQuote.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/History/PostedPurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/ES/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Finance/GeneralLedger/Journal/GenJnlCheckLine.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/FI/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/FR/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/FR/BaseApp/Finance/GeneralLedger/Journal/GenJnlCheckLine.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/FR/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/FR/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/FR/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/GB/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/GB/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/GB/BaseApp/Permissions/d365busfullaccess.permissionset.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostBatch.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Reversal/GenJnlPostReverse.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/Archive/PurchaseOrderArchive.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/History/PostedPurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/IT/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Finance/Currency/Currency.Table.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Finance/GeneralLedger/Posting/GenJnlPostBatch.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Archive/PurchaseOrderArchive.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Archive/PurchaseOrderArchiveSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Document/PurchaseQuote.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/Document/PurchaseQuoteSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/History/PostedPurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/NA/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Finance/GeneralLedger/Journal/GenJnlCheckLine.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Finance/GeneralLedger/Reversal/GenJnlPostReverse.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/NL/BaseApp/Purchases/History/PostedPurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Purchases/Document/PurchaseInvoice.Page.al: modified, not in the BC30 snapshotsrc/Layers/NO/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Account/GLAccountCard.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Journal/PaymentJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Journal/PurchaseJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Ledger/GeneralLedgerEntries.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Permissions/d365busfullaccess.permissionset.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Document/PurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Document/PurchaseOrder.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Document/PurchaseOrderSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Document/PurchaseQuote.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/History/PostedPurchInvoiceSubform.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/History/PostedPurchaseCreditMemo.Page.al: modified, not in the BC30 snapshotsrc/Layers/RU/BaseApp/Purchases/Posting/PurchPostInvoice.Codeunit.al: modified, not in the BC30 snapshotsrc/Layers/SE/BaseApp/Finance/GeneralLedger/Journal/GeneralJournal.Page.al: modified, not in the BC30 snapshotsrc/Layers/SE/BaseApp/Finance/GeneralLedger/Setup/GeneralLedgerSetup.Table.al: modified, not in the BC30 snapshotsrc/Layers/W1/BaseApp/Finance/SpendRequest/SpendRequestType.Enum.al: added, not in the BC30 snapshot yet
Context
- Work items: AB#638799
- Labels: Ownership: Manual, Team: Finance
- Systems: finance, purchasing, administration, platform
Source: metadata of a merged pull request in microsoft/BCApps (bcapps): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).