---
id: object/codeunit/99000818
type: object
title: Codeunit 99000818 "Mfg. Carry Out Action"
summary: Codeunit 99000818 "Mfg. Carry Out Action" in Base Application (Microsoft.Inventory.Requisition). 9 public procedures, 35 events, 2 event subscribers. Introduced in BC27, still in BC28, changed in BC28, gone after BC28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: "27"
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-08T01:47:42.884Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 317eccfbbc8b6e5e0596c05e442f441c251da45d3fa6eb6319f6afacc08cd313
evidence:
  - kind: code
    url: https://github.com/StefanMaron/MSDyn365BC.Sandbox.Code.History/blob/d6dc01d0b49fd1b899d173b7c7b5876ea5927b6b/Base%20Application/Manufacturing/Inventory/Requisition/MfgCarryOutAction.Codeunit.al
    title: Base Application/Manufacturing/Inventory/Requisition/MfgCarryOutAction.Codeunit.al (w1-28)
    date: null
    commit: d6dc01d0b49fd1b899d173b7c7b5876ea5927b6b
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 99000818
name: Mfg. Carry Out Action
namespace: Microsoft.Inventory.Requisition
app: Base Application
extends: null
first_version: "27"
last_version: "28"
present_in:
  - "27"
  - "28"
changed_in:
  - "28"
source_major: "28"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 58
  events: 35
  subscribers: 2
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 1
  calls: 12
  called_by: 0
  implements: 0
---

# Codeunit 99000818 "Mfg. Carry Out Action"

> Codeunit 99000818 "Mfg. Carry Out Action" in Base Application (Microsoft.Inventory.Requisition). 9 public procedures, 35 events, 2 event subscribers. Introduced in BC27, still in BC28, changed in BC28, gone after BC28.

Base Application · Microsoft.Inventory.Requisition · BC27-28 · [source at d6dc01d0](https://github.com/StefanMaron/MSDyn365BC.Sandbox.Code.History/blob/d6dc01d0b49fd1b899d173b7c7b5876ea5927b6b/Base%20Application/Manufacturing/Inventory/Requisition/MfgCarryOutAction.Codeunit.al) · facts from BC28

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Prod. Order Capacity Need" = rid |

## Events published

- `OnInsertProductionOrderOnProdOrderChoiceCaseElse(ProdOrderChoice: Enum "Planning Create Prod. Order")` (integration)
- `OnBeforeSetProdOrderLineBinCodeFromPlanningRtngLines(ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; ReqLine: Record "Requisition Line"; Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateProdOrderLineQuantity(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; ReqLine: Record "Requisition Line"; Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnCollectProdOrderForPrinting(var ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order")` (integration)
  - subscribers: [Codeunit 99000816 "Mfg. Carry Out Action Print"](../codeunit/99000816.md) OnCollectProdOrderForPrinting
- `OnInsertProdOrderOnBeforeProdOrderInit(var ReqLine: Record "Requisition Line")` (integration)
- `OnProdOrderChgAndResheduleOnBeforeProdOrderModify(var ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order"; ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; RequisitionLine: Record "Requisition Line")` (integration)
- `OnCarryOutActionsFromProdOrderOnAfterCalcPrintOrder(var PrintOrder: Boolean; ProdOrderChoice: Option)` (integration)
- `OnCarryOutActionsFromProdOrderOnBeforeCaseStatement(RequisitionLine: Record "Requisition Line"; ProdOrderChoice: Enum "Planning Create Prod. Order"; ProdWkshTempl: Code[10]; ProdWkshName: Code[10]; var TempDocumentEntry: Record "Document Entry" temporary; var sender: Codeunit "Carry Out Action"; var IsHandled: Boolean; var Result: Boolean)` (integration)
- `OnProdOrderChgAndResheduleOnAfterValidateQuantity(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnAfterProdOrderChgAndReshedule(var RequisitionLine: Record "Requisition Line"; var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line")` (integration)
- `OnInsertProdOrderOnAfterFindTempProdOrder(var ReqLine: Record "Requisition Line"; var ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; var HeaderExists: Boolean; var Item: Record Item)` (integration)
- `OnInsertProdOrderOnProdOrderChoiceNotFirmPlannedPrint(var ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; ProdOrderChoice: Enum Microsoft.Manufacturing.Document."Planning Create Prod. Order"; var IsHandled: Boolean)` (integration)
- `OnInsertProdOrderOnBeforeProdOrderInsert(var ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; ReqLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderOnAfterProdOrderInsert(var ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; ReqLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderWithReqLine(var ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order"; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnAfterInsertProdOrder(var ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order"; ProdOrderChoice: Integer; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderLineOnBeforeProdOrderLineInit(var ReqLine: Record "Requisition Line"; var Item: Record Item)` (integration)
- `OnInsertProdOrderLineOnBeforeGetBinCode(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; ReqLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderLineOnBeforeValidateUnitCost(var RequisitionLine: Record "Requisition Line"; ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order"; var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; Item: Record Item)` (integration)
- `OnInsertProdOrderLineWithReqLine(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderLineOnAfterProdOrderLineInsert(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnInsertProdOrderLineOnBeforeModifyProdOrderLine(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var RequisitionLine: Record "Requisition Line")` (integration)
- `OnAfterInsertProdOrderLine(ReqLine: Record "Requisition Line"; ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; Item: Record Item)` (integration)
- `OnBeforeDeleteProdOrderLines(RequisitionLine: Record "Requisition Line"; var IsHandled: Boolean)` (integration)
- `OnInsertProdOrderLineOnAfterTransferRouting(var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var RefreshProdOrderLine: Boolean)` (integration)
- `OnBeforeFinalizeOrderHeader(ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; PrintOrder: Boolean; var IsHandled: Boolean)` (integration)
- `OnAfterTransferPlanningRtngLine(var PlanningRtngLine: Record Microsoft.Manufacturing.Routing."Planning Routing Line"; var ProdOrderRtngLine: Record Microsoft.Manufacturing.Document."Prod. Order Routing Line")` (integration)
- `OnAfterProdOrderRtngLineInsert(var ProdOrderRoutingLine: Record Microsoft.Manufacturing.Document."Prod. Order Routing Line"; PlanningRoutingLine: Record Microsoft.Manufacturing.Routing."Planning Routing Line"; ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; RequisitionLine: Record "Requisition Line")` (integration)
- `OnBeforeTransferBOM(ReqLine: Record "Requisition Line"; ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; ProdOrderLineNo: Integer; var IsHandled: Boolean)` (integration)
- `OnTransferBOMOnBeforeProdOrderComp2Init(var PlanningComponent: Record "Planning Component")` (integration)
- `OnAfterTransferPlanningComp(var PlanningComponent: Record "Planning Component"; var ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component")` (integration)
- `OnTransferBOMOnAfterCopyProdBOMComments(var PlanningComponent: Record "Planning Component"; var ProdOrderComponent: Record Microsoft.Manufacturing.Document."Prod. Order Component")` (integration)
- `OnBeforeTransferCapNeed(ReqLine: Record "Requisition Line"; ProdOrder: Record Microsoft.Manufacturing.Document."Production Order"; RoutingNo: Code[20]; RoutingRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateComponentLink(ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; var IsHandled: Boolean)` (integration)
- `OnCarryOutToReqWkshOnAfterPlanningRoutingLineInsert(var PlanningRoutingLine: Record Microsoft.Manufacturing.Routing."Planning Routing Line"; PlanningRoutingLine2: Record Microsoft.Manufacturing.Routing."Planning Routing Line")` (integration)

## Event subscriptions

- OnTrySourceType subscribes to Codeunit "Carry Out Action" OnTrySourceTypeForProduction
- OnAfterCarryOutToReqWksh subscribes to Codeunit "Carry Out Action" OnAfterCarryOutToReqWksh

## Procedures

- `CarryOutActionsFromProdOrder(RequisitionLine: Record "Requisition Line"; ProdOrderChoice: Enum "Planning Create Prod. Order"; ProdWkshTempl: Code[10]; ProdWkshName: Code[10]; var TempDocumentEntry: Record "Document Entry" temporary; var sender: Codeunit "Carry Out Action"): Boolean`
- `ProdOrderChgAndReshedule(RequisitionLine: Record "Requisition Line"): Boolean`
- `InsertProductionOrder(RequisitionLine: Record "Requisition Line"; ProdOrderChoice: Enum "Planning Create Prod. Order"; var TempDocumentEntry: Record "Document Entry" temporary)`
- `InsertProdOrderLine(RequisitionLine: Record "Requisition Line"; ProductionOrder: Record "Production Order"; Item: Record Item)`
- `ReserveBindingOrderToProd(var ProdOrderLine: Record "Prod. Order Line"; var RequisitionLine: Record "Requisition Line")`
- `TransferRouting(RequisitionLine: Record "Requisition Line"; ProductionOrder: Record "Production Order"; RoutingNo: Code[20]; RoutingRefNo: Integer): Boolean`
- `TransferBOM(RequisitionLine: Record "Requisition Line"; ProductionOrder: Record "Production Order"; ProdOrderLineNo: Integer)`
- `TransferCapNeed(RequisitionLine: Record "Requisition Line"; ProductionOrder: Record "Production Order"; RoutingNo: Code[20]; RoutingRefNo: Integer)`
- `UpdateComponentLink(ProdOrderLine: Record "Prod. Order Line")`

Plus 12 local procedures.

## Calls

From the extracted call graph of BC28 (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 99000845 "Reservation Management"](../codeunit/99000845.md) (6 calls: `ProdOrderChgAndReshedule → AutoTrack`, `ProdOrderChgAndReshedule → ClearSurplus`, `ProdOrderChgAndReshedule → DeleteReservEntries`, …)
- [Codeunit 99000773 "Calculate Prod. Order"](../codeunit/99000773.md) (4 calls: `InsertProdOrderLine → CalculateProdOrderDates`, `InsertProdOrderLine → SetProdOrderLineBinCodeFromRoute`, `SetProdOrderLineBinCodeFromPlanningRtngLines → SetProdOrderLineBinCodeFromPlanningRtngLines`, …)
- [Codeunit 99000756 "VersionManagement"](../codeunit/99000756.md) (2 calls: `CopyItemTypeBOMComments → GetBOMVersion`, `CopyNestedBOMComments → GetBOMVersion`)
- [Codeunit 99000837 "Prod. Order Line-Reserve"](../codeunit/99000837.md) (2 calls: `InsertProdOrderLine → TransferPlanningLineToPOLine`, `ProdOrderChgAndReshedule → TransferPlanningLineToPOLine`)
- [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) (2 calls: `ProdOrderChgAndReshedule → TransferPlanningCompToPOComp`, `TransferBOM → TransferPlanningCompToPOComp`)
- [Codeunit 5996 "Prod. Order Warehouse Mgt."](../codeunit/5996.md) (1 call: `TransferRouting → GetProdCenterBinCode`)
- [Codeunit 99000787 "Create Prod. Order Lines"](../codeunit/99000787.md) (1 call: `InsertProductionOrder → CheckStructure`)
- [Codeunit 99000813 "Carry Out Action"](../codeunit/99000813.md) (1 call: `CarryOutActionsFromProdOrder → CarryOutToReqWksh`)
- [Codeunit 99000816 "Mfg. Carry Out Action Print"](../codeunit/99000816.md) (1 call: `FinalizeOrderHeader → PrintProdOrder`)
- [Codeunit 99000833 "Req. Line-Reserve"](../codeunit/99000833.md) (1 call: `ProdOrderChgAndReshedule → UpdateDerivedTracking`)
- [Codeunit 99000840 "Plng. Component-Reserve"](../codeunit/99000840.md) (1 call: `ProdOrderChgAndReshedule → UpdateDerivedTracking`)
- [Codeunit 99000849 "Mfg. ReservCheckDateConfl"](../codeunit/99000849.md) (1 call: `ProdOrderChgAndReshedule → ProdOrderComponentCheck`)

## Across versions

- Present in: BC27-28
- Changed (declaration) in: BC28

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 BC28 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: "codeunit", object_name: "Mfg. Carry Out Action")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
