Logo TCMB Rates Documentation

For whoever installs and runs it

Installation and maintenance

The application is installed on a Windows machine that can reach the customer's Logo database, and runs there as a Windows service. Installation is a single script; after it finishes the admin panel opens and you complete a six-step wizard.

1. Requirements

  • Operating system: Windows 10/11 or Windows Server 2016 and above, x64, administrator rights.
  • .NET: not required. The package carries its own runtime (self-contained, win-x64).
  • SQL Server: a reachable instance. No separate database is needed — the application keeps its own tables inside the customer's Logo database, named dbo.TCMBKUR_*.
  • Logo: the Logo database and the company numbers; you need to know which companies the rates are written for.
  • Internet: port 443 to https://www.tcmb.gov.tr (the bulletin) and https://lisans.erp.tr (licensing and updates).

The application writes to the Logo database and, since 1.5.0, keeps its own tables there as well — so NT AUTHORITY\SYSTEM must be db_owner in that database. The installer grants this itself; if it cannot, it stops and prints the SQL to run. Because the service runs as LocalSystem, the NT AUTHORITY\SYSTEM account needs write permission there. Without it the rates are still fetched but the write step fails — the exact error is in the FAQ.

2. Installation (5 minutes)

  1. 1

    Extract the package

    Copy TcmbKur-Logo-<version>-win-x64.zip to the machine and unzip it.

  2. 2

    Check the version

    The version inside manifest.json must match the package you downloaded.

  3. 3

    Run the script

    Open an administrator PowerShell in that folder and run the install command.

powershell -ExecutionPolicy Bypass -File .\install.ps1

The script asks which Logo database the application tables go into: it lists the Logo databases on the server with their company and exchange-table counts and you pick a number. With a single candidate it uses that one. To skip the question when you know the name:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -LogoDb TIGER3

The -AppDb parameter was removed in 1.5.0; there is no separate application database any more.

What the script does

  1. Copies the files under C:\ERP\TcmbKur.
  2. Picks the first free port in the 5230–5299 range and writes it to listen-url.txt.
  3. Grants db_owner on the selected Logo database to NT AUTHORITY\SYSTEM; the application creates its own dbo.TCMBKUR_* tables there on first start. If the grant fails, the installation stops.
  4. Installs and starts the ERP TcmbKur Windows service.
  5. Waits for the /healthz health gate; if it does not pass, the installation fails.
  6. Opens the setup wizard in the browser.
  7. Installs the automatic updater (section 5).

The first sign-in is admin / admin; the password is changed during that first session.

3. Setup wizard

When the panel opens, /kurulum (the same screen also answers at /ayarlar) collects the settings in six steps. You can move back and forth between the steps and save on the last one.

3.1 Windows service

Confirms that the service is installed and running. You can stop and start it from here; if the service already exists, the "Install" button is disabled.

Wizard step for the Windows service: service status and start/stop controls
Step 1 — service status and controls.

3.2 Logo connection

You enter the SQL Server host, the database and the authentication method, and test the connection in place. Then you pick the companies the rates are written for. The connection string is not typed by hand, it is composed from the fields; the password is never sent back to the browser.

Wizard step for the Logo connection: server, database and company selection
Step 2 — Logo connection and company selection.

3.3 Fetching rates

This step decides which currencies are fetched, which Logo rate field each quotation is written to, and what time the daily run happens. The long version is on the Daily use page; in short:

  • The TCMB bulletin is published every business day at 15:30 and is valid for the next business day.
  • So target day D uses the D-1 bulletin; if there is none, the application walks back up to 10 days by default.
  • Early-fetch protection is on by default: it prevents incomplete data being written before the bulletin hour.
  • The write mode is insert-only or upsert; writing to L_DAILYEXCHANGES and marking rows APPROVE=1 are optional.
  • "Divide by unit" converts rates quoted per 100 units (Japanese yen, for example) into the form Logo expects.
Wizard step for fetching rates: currencies, rate-field mapping and run time
Step 3 — currencies, rate-field mapping and scheduling.

3.4 E-mail and the daily check report

You enter the SMTP settings and choose who receives the daily check report and when. The report answers one question — were rates written today, how many rows, were there errors — so a missed run is noticed even when nobody opens the panel for weeks.

Wizard step for e-mail: SMTP settings and check-report recipients
Step 4 — SMTP and the daily check report.

3.5 Licence and installation pairing

On first start the application registers itself with the licence centre as a pending installation; the customer is never asked for an API key. The screen shows a short setup code and a QR code, and the administrator on the ERP side finds that record and attaches the licence that matches the customer and the product. Until the assignment is made the screen reads "Waiting for licence assignment".

Wizard step for licensing: setup code, QR code and licence status
Step 5 — setup code and licence status.

What the licence gates: only the step that writes to Logo. Fetching rates, the panel, the logs and updates work regardless of licence state — a security patch is not a collection tool. A licence server that is temporarily unreachable does not lock the application.

3.6 Summary and finish

The last step shows every choice on one screen. When you save, the settings are written to the dbo.TCMBKUR_Config table in the Logo database and the scheduled run becomes active.

Wizard summary step listing every choice that was made
Step 6 — summary and save.

4. Service, health and logs

ItemWhere
Service nameERP TcmbKur (running as LocalSystem)
Install folderC:\ERP\TcmbKur
Listening addressC:\ERP\TcmbKur\listen-url.txt
Health gatehttp://127.0.0.1:<port>/healthz → 200 + {status, version, db}
LogsC:\ERP\TcmbKur\logs\tcmbkur-<date>.log (14 files kept)
SettingsLogo database, dbo.TCMBKUR_Config table
SecretsC:\ERP\TcmbKur\keys

To manage the service from the command line:

sc.exe query "ERP TcmbKur"
sc.exe stop  "ERP TcmbKur"
sc.exe start "ERP TcmbKur"

The same information appears in the panel on the /service and /logs screens — see Daily use.

Backup

Two things are backed up together: the Logo database (which now also holds the application's dbo.TCMBKUR_* tables) and the C:\ERP\TcmbKur\keys folder. Some settings are encrypted with the key in that folder; restoring the database alone leaves those fields unreadable.

For the database there is nothing extra to do — the application's tables live inside the Logo database, so your existing Logo backup already covers them. Add nothing to your SQL Server backup plan. The keys folder is small; include it in your file backup.

5. Updates

5.1 Automatic updates (default)

Installation leaves behind an updater that lives outside the application: the %ProgramData%\ErpUpdate\TCMBKUR folder and the ERP Update TCMBKUR scheduled task, which runs daily at 03:20 as SYSTEM. Keeping the updater outside is deliberate: a process that tries to update itself locks its own files.

The flow is:

  1. The updater asks the licence centre, sending the product, the version and the device identity.
  2. The answer is signed — including the "no update available" answer; a bare error code is not accepted.
  3. The package is downloaded; SHA-256, size and the version match are verified.
  4. The service is stopped and the files are swapped; the database, keys, logs, listen-url.txt and appsettings.Production.json are preserved.
  5. The service starts; /healthz must return 200 and report the target version.
  6. If the gate fails, the previous version is restored automatically, the bad package is quarantined and the centre is notified.

Updates are independent of licensing: an installation whose licence has expired still receives the patch.

5.2 Manual updates

If automatic updates are turned off, or a version has to be raised by hand, download the new package and run the same install script. It recognises the existing installation and upgrades it.

powershell -ExecutionPolicy Bypass -File .\install.ps1

5.3 What is preserved

File / folderOn update
dbo.TCMBKUR_* tables in the Logo databasePreserved
keys\Preserved
logs\Preserved
listen-url.txtPreserved
appsettings.Production.jsonPreserved
appsettings.jsonOverwritten
Licence and device identityPreserved (%ProgramData%\ERP\Lisans\TCMBKUR)

Do not put durable settings in appsettings.json; that file is replaced by the packaged copy on every update. Machine-specific settings belong in appsettings.Production.json, and operational settings belong in the panel (that is, the dbo.TCMBKUR_Config table).

Packages built with the -noupdate suffix carry no updater; they are meant for environments where updates are managed from the outside.

6. The "Request a quote" address

An installation with no licence assigned shows a "Request a quote" link in the panel. The default address is https://tcmbkur.erp.tr and it can be changed in the settings, so a reseller can point it at their own address.

7. Resetting the administrator password

If the panel password is lost, it is reset from an administrator command prompt on the machine. If you do not supply a password, the tool generates one and prints it.

cd C:\ERP\TcmbKur
.\TcmbKur.App.exe reset-admin admin
.\TcmbKur.App.exe reset-admin admin --password NewPassword

8. Removal

powershell -ExecutionPolicy Bypass -File .\uninstall.ps1

The script removes the service and the scheduled update task. The licence and the device identity are preserved unconditionally — reinstalling on the same machine does not require the licence to be assigned again. The application's dbo.TCMBKUR_* tables stay in the Logo database; drop them by hand in SSMS if you need them gone (leave the Logo data alone).