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) andhttps://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
Extract the package
Copy
TcmbKur-Logo-<version>-win-x64.zipto the machine and unzip it. -
2
Check the version
The version inside
manifest.jsonmust match the package you downloaded. -
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
- Copies the files under
C:\ERP\TcmbKur. - Picks the first free port in the 5230–5299 range and writes it to
listen-url.txt. - Grants
db_owneron the selected Logo database toNT AUTHORITY\SYSTEM; the application creates its owndbo.TCMBKUR_*tables there on first start. If the grant fails, the installation stops. - Installs and starts the
ERP TcmbKurWindows service. - Waits for the
/healthzhealth gate; if it does not pass, the installation fails. - Opens the setup wizard in the browser.
- 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.
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.
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_DAILYEXCHANGESand marking rowsAPPROVE=1are optional. - "Divide by unit" converts rates quoted per 100 units (Japanese yen, for example) into the form Logo expects.
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.
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".
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.
4. Service, health and logs
| Item | Where |
|---|---|
| Service name | ERP TcmbKur (running as LocalSystem) |
| Install folder | C:\ERP\TcmbKur |
| Listening address | C:\ERP\TcmbKur\listen-url.txt |
| Health gate | http://127.0.0.1:<port>/healthz → 200 + {status, version, db} |
| Logs | C:\ERP\TcmbKur\logs\tcmbkur-<date>.log (14 files kept) |
| Settings | Logo database, dbo.TCMBKUR_Config table |
| Secrets | C:\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:
- The updater asks the licence centre, sending the product, the version and the device identity.
- The answer is signed — including the "no update available" answer; a bare error code is not accepted.
- The package is downloaded; SHA-256, size and the version match are verified.
- The service is stopped and the files are swapped; the database,
keys,logs,listen-url.txtandappsettings.Production.jsonare preserved. - The service starts;
/healthzmust return 200 and report the target version. - 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 / folder | On update |
|---|---|
dbo.TCMBKUR_* tables in the Logo database | Preserved |
keys\ | Preserved |
logs\ | Preserved |
listen-url.txt | Preserved |
appsettings.Production.json | Preserved |
appsettings.json | Overwritten |
| Licence and device identity | Preserved (%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).