---
id: object/table/1650
type: object
title: Table 1650 "Curr. Exch. Rate Update Setup"
summary: Table 1650 "Curr. Exch. Rate Update Setup" in Base Application (Microsoft.Finance.Currency). 8 fields, 8 public procedures, 5 events. Present since at least BC23, still in BC30, changed in BC24-26, BC29.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "29"
  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: 635c6d406802c3faf2d13d5cc0b1adc2115a24916154774b1f2295b0baa133a8
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/Currency/CurrExchRateUpdateSetup.Table.al
    title: src/Layers/W1/BaseApp/Finance/Currency/CurrExchRateUpdateSetup.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 1650
name: Curr. Exch. Rate Update Setup
namespace: Microsoft.Finance.Currency
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"
  - "26"
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 8
  procedures: 20
  events: 5
  subscribers: 0
relations:
  out: 1
  referenced_by: 0
  pages: 2
  extended_by: 0
  event_subscribers: 0
  calls: 4
  called_by: 0
  implements: 0
---

# Table 1650 "Curr. Exch. Rate Update Setup"

> Table 1650 "Curr. Exch. Rate Update Setup" in Base Application (Microsoft.Finance.Currency). 8 fields, 8 public procedures, 5 events. Present since at least BC23, still in BC30, changed in BC24-26, BC29.

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

## Properties

| Property | Value |
|---|---|
| Caption | Curr. Exch. Rate Update 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 | Code | Code[20] | Specifies the setup of a service to update currency exchange rates. | NotBlank |
| 2 | Description | Text[250] | Specifies the setup of a service to update currency exchange rates. |  |
| 3 | Web Service URL | BLOB | Service URL <small>caption</small> |  |
| 5 | Enabled | Boolean | Specifies if the currency exchange rate service is enabled. |  |
| 10 | Service Provider | Text[30] | Specifies the name of the service provider. |  |
| 11 | Terms of Service | Text[250] | Specifies the URL of the service provider's terms of service. |  |
| 20 | Data Exch. Def Code | Code[20] | — | TableRelation [Table 1222 "Data Exch. Def"](../table/1222.md) ("Data Exch. Def".Code) |
| 21 | Log Web Requests | Boolean | Specifies whether to log exceptions that occur when connecting to the service. The log is located in the server Temp folder. |  |

## Keys

- Key1: Code (clustered)

## Events published

- `OnAfterGetWebServiceURL(var ServiceURL: Text)` (integration): Allows customization of web service URLs after retrieval from storage.
- `OnBeforeSetupCurrencyExchRateService(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup")` (integration): Enables customization of currency exchange rate service setup process.
- `OnBeforeEnsureURLIsHttpAndValidUri(ServiceURL: Text; var IsHandled: Boolean)` (integration): Provides extensibility for custom URL validation logic before storing service URLs.
- `OnShowJobQueueEntryOnBeforeJobQueueEntryFindFirst(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup"; var JobQueueEntry: Record "Job Queue Entry"; var IsHandled: Boolean)` (integration): Allows customization of job queue entry lookup when displaying scheduling information.
- `OnBeforeAutoUpdateExchangeRates(var CurrExchRateUpdateSetup: Record "Curr. Exch. Rate Update Setup"; var IsHandled: boolean)` (integration): Enables customization of automatic exchange rate update scheduling and execution.

## Procedures

- `GetWebServiceURL(var ServiceURL: Text): Text`: Retrieves the web service URL from BLOB storage with extensibility for URL transformation. Triggers OnAfterGetWebServiceURL event for custom URL modification.
- `SetWebServiceURL(ServiceURL: Text)`: Validates and stores a web service URL in BLOB field after security validation. Ensures URLs meet HTTP/HTTPS protocol requirements.
- `CreateDataExchangeDefinition(DataExchCode: Code[20])`: Creates complete Data Exchange Definition setup for currency exchange rate import. Establishes Data Exchange Definition, Line Definition, and Field Mapping records.
- `GetXMLStructure(var XMLBuffer: Record "XML Buffer"; ServiceURL: Text)`: Analyzes XML structure of web service response for data exchange mapping setup. Populates XML Buffer with node hierarchy for configuration purposes.
- `VerifyDataExchangeLineDefinition()`: Validates that data exchange definition has proper XML node configuration. Ensures Data Line Tag is configured before enabling service.
- `VerifyServiceURL()`: Validates that web service URL is configured before enabling service.
- `ShowJobQueueEntry()`: Opens Job Queue Entry card for monitoring scheduled currency updates. Supports extensibility through OnShowJobQueueEntryOnBeforeJobQueueEntryFindFirst event.
- `SetupService()`: Initializes exchange rate service configuration when no services exist. Runs setup codeunit with error handling and telemetry logging.

Plus 7 local procedures.

## Triggers

OnDelete, OnInsert

## Relations

- Data Exch. Def Code: TableRelation [Table 1222 "Data Exch. Def"](../table/1222.md)

## Pages and codeunits on this table

- [Page 1650 "Curr. Exch. Rate Service List"](../page/1650.md) (source table)
- [Page 1651 "Curr. Exch. Rate Service Card"](../page/1651.md) (source table)

## 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 1299 "Web Request Helper"](../codeunit/1299.md) (2 calls: `EnsureURLIsHttpAndValidUri → IsHttpUrl`, `EnsureURLIsHttpAndValidUri → IsValidUri`)
- [Page 673 "Job Queue Entry Card"](../page/673.md) (2 calls: `AutoUpdateExchangeRates → (object)`, `ShowJobQueueEntry → (object)`)
- [Codeunit 1235 "XML Buffer Writer"](../codeunit/1235.md) (1 call: `GetXMLStructure → GenerateStructureFromPath`)
- [Codeunit 1242 "Set Up Curr Exch Rate Service"](../codeunit/1242.md) (1 call: `SetupService → (object)`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-26, BC29

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: "Curr. Exch. Rate Update Setup")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
