Sample produced by DevDesk from made-up data. The company, systems and people shown are fictional. Back to DevDesk

Handover pack

3 tickets · 18 systems · 5 notes

Systems catalog

Application / vendor software

Murexprod
What it is / where it runs
murex-prd.corp.local
vendor
Murex
version
3.1.44
url
https://murex-prd.corp.local
support team
DL-MUREX-SUPPORT
runs on
murex-prd-01..04
install path
/apps/murex
owned by
Trading-Systems
notes
Upstream source of the trade file. Their EOD cutoff is 19:45 - miss it and the position load has nothing to read.
used by
RISK-1423

Autosys job

PRD_RISK_EOD_LOAD_BOXprod
Job name
PRD_RISK_EOD_LOAD_BOX
machine
batch-prd-04.corp.local
job type
BOX
schedule
20:15 Mon-Fri
downstream
PRD_RISK_EOD_REPORT
owned by
Batch-Ops
notes
Box holds three jobs. If the box goes ON_HOLD nothing alerts - check it first.
used by
RISK-1423
PRD_RISK_EOD_LOAD_STEP1prod
Job name
PRD_RISK_EOD_LOAD_STEP1
machine
batch-prd-04.corp.local
job type
CMD
box job
PRD_RISK_EOD_LOAD_BOX
command
/apps/risk/bin/load_positions.sh $COB
upstream
feed arrival watcher
downstream
PRD_RISK_EOD_LOAD_STEP2
owned by
Batch-Ops
notes
This is the one that fails on month end. Rerun is safe - it truncates staging first.
sendevent -E FORCE_STARTJOB -J PRD_RISK_EOD_LOAD_STEP1
used by
RISK-1423

Person / team to ask

Market Data Support
Name
DL-MDS-SUPPORT
team
Market Data
email
DL-MDS-SUPPORT@corp.local
chat handle
#market-data-support
ask them about
late or missing BOOK_HIER feed
notes
They answer fastest before 16:00. After that raise a ticket in MDS queue.
used by
RISK-1423

Credential location (never the secret)

RISK_APP prod accountprod
Where the credential lives
CyberArk safe RISK-PRD, account RISK_APP
vault
CyberArk
safe
RISK-PRD
account
RISK_APP
request process
raise ACCESS-REQ, needs manager approval, 24h SLA
notes
Never paste the password anywhere - check it out per session.
used by
RISK-1455

Dashboard / monitoring

EOD batch healthprod
URL
https://grafana.corp.local/d/risk-eod/eod-batch
what to watch
load duration panel - normal is 12 min, month end 40 min
alert channel
#risk-batch-alerts
used by
RISK-1423

View / table / procedure

POSITION_STGprod
Object name
RISK_OWNER.POSITION_STG
object type
table
database
RISKPRD
schema
RISK_OWNER
notes
Staging table the loader writes to. Truncated at the start of every run.
used by
RISK-1423
V_TRADE_POSITION_DAILYprod
Object name
RISK_OWNER.V_TRADE_POSITION_DAILY
object type
view
database
RISKPRD
schema
RISK_OWNER
refreshed by
PRD_RISK_EOD_LOAD_BOX
sample query
SELECT * FROM RISK_OWNER.V_TRADE_POSITION_DAILY WHERE COB_DATE = TRUNC(SYSDATE)-1 AND BOOK = :book
notes
Joins POSITION_STG to BOOK_HIER. Month-end rows land late because the hierarchy feed arrives after the position feed.
used by
RISK-1423, RISK-1390

Denodo virtual view

v_position_enrichedprod
Virtual database / view
risk_vdb.v_position_enriched
vdp host
denodo-prd.corp.local
vdp port
9999
virtual database
risk_vdb
base views
RISKPRD.V_TRADE_POSITION_DAILY, refdata.book_hier
cache mode
full, refreshed 06:00
jdbc url
jdbc:vdb://denodo-prd.corp.local:9999/risk_vdb
owned by
Data-Virtualisation
notes
What the front office actually queries. Cached - so a fix in Oracle is not visible here until the 06:00 refresh.
used by
RISK-1455

Kafka cluster / topic

risk.position.v2prod
Bootstrap servers
kafka-prd-01.corp.local:9092,kafka-prd-02.corp.local:9092,kafka-prd-03.corp.local:9092
topic
risk.position.v2
consumer group
risk-eod-loader
partitions
12
security protocol
SASL_SSL
schema registry
https://schema-registry-prd.corp.local:8081
retention
7 days
console command
kafka-console-consumer --bootstrap-server kafka-prd-01:9092 --topic risk.position.v2 --from-beginning --max-messages 5
owned by
Streaming-Platform
notes
Replaces the Tibco feed from Q4. Both run in parallel until then - if numbers disagree, Tibco is still the book of record.
used by
RISK-1423

Log file location

EOD loader logprod
Path
/apps/risk/logs/eod_load_%Y%m%d.log
server
batch-prd-04.corp.local
rotation
kept 30 days, then archived to /nas/risk/logs
grep hint
grep -n 'ORA-\|FATAL' /apps/risk/logs/eod_load_$(date +%Y%m%d).log
access note
read access via group risk-ops-ro
notes
The real error is usually 40 lines above the stack trace.
used by
RISK-1423
Risk API logprod
Path
/apps/risk/api/logs/risk-api.log
server
risk-app-prd-01.corp.local
rotation
hourly
used by
RISK-1455

Oracle DB / connection

RISKPRD - risk warehouseprod
Connection string / TNS alias
jdbc:oracle:thin:@//ora-risk-prd-scan.corp.local:1521/RISKPRD
host
ora-risk-prd-scan.corp.local
port
1521
service name
RISKPRD
schema
RISK_OWNER
read user
RISK_RO
tns alias
RISKPRD_RO
owned by
DBA-Markets
notes
Read-only user for investigation. Writes go through the batch account only.
DBA raise ticket queue: DBA-MARKETS.
used by
RISK-1423
RISKUAT - risk warehouseuat
Connection string / TNS alias
jdbc:oracle:thin:@//ora-risk-uat.corp.local:1521/RISKUAT
host
ora-risk-uat.corp.local
port
1521
service name
RISKUAT
schema
RISK_OWNER
owned by
DBA-Markets
notes
Refreshed from prod every Sunday 02:00 - anything you change is gone Monday.
used by
RISK-1390

Code repository / branch

risk/eod-loader
Repo URL
https://git.corp.local/risk/eod-loader
branch
release/2024.09
module
loader-core
build job
jenkins/risk-eod-loader
key files
src/loader/PositionLoader.java, sql/merge_position.sql
used by
RISK-1455

Deployed server / host

batch-prd-04prod
Hostname / IP
batch-prd-04.corp.local
role
Autosys agent + EOD scripts
app path
/apps/risk/bin
access
request via Batch-Ops, read-only by default
owned by
Batch-Ops
used by
RISK-1423
risk-app-prd-01prod
Hostname / IP
risk-app-prd-01.corp.local
role
risk API + scheduler
app path
/apps/risk
deploy command
/apps/risk/bin/deploy.sh <version>
restart command
sudo systemctl restart risk-api
ports
8443 (api), 9100 (metrics)
access
jump host jump-prd-02, then ssh as svc_risk
owned by
Unix-Midrange
notes
Deploys are blocked 20:00-23:00 while EOD runs.
used by
RISK-1455

Tibco EMS / BW

EMS PRD - risk position busprod
Server URL
tcp://tibco-ems-prd-01.corp.local:7222
host
tibco-ems-prd-01.corp.local
port
7222
queue
RISK.POSITION.EOD
topic
RISK.POSITION.BROADCAST
jndi url
tibjmsnaming://tibco-ems-prd-01.corp.local:7222
durable name
risk-eod-durable
admin console
https://tibco-ems-prd-01.corp.local:8222
owned by
Middleware
notes
Failover pair with tibco-ems-prd-02 - the client URL must list both or a failover leaves the durable subscriber stuck.
used by
RISK-1423

Access and service requests

Still in flight with other teams. Whoever picks this up needs to keep chasing them - the reference is what the service desk will ask for.

CR-2291approvedoverdue
what
Open 9092 from risk-app-prd-01 to the Kafka brokers
system
risk.position.v2
raised with
Network Services
approver
CAB
team
Network Services
raised
2026-10-01
needed by
2026-10-09
chase
Network Services - quiet for 9 days
blocks
RISK-1455
notes
CAB approved. Waiting on the firewall team to schedule.
ACCESS-REQ-88213pending approvaloverdue
what
Read access to RISKPRD for investigation
system
RISKPRD
raised with
IT Service Desk
approver
Line manager - S. Iyer
team
DBA-Markets
raised
2026-09-29
needed by
2026-10-06
last chased
2026-10-04
chase
Line manager - S. Iyer - quiet for 6 days
blocks
RISK-1423
notes
Approval sat in the manager queue while he was on leave. Delegate is P. Rao - chase there next time.
ACCESS-REQ-88540with team
what
Add me to risk-ops-ro on batch-prd-04
system
batch-prd-04
raised with
IT Service Desk
approver
Line manager - S. Iyer
team
Unix-Midrange
raised
2026-10-05
last chased
2026-10-09
chase
Unix-Midrange - quiet for 1 days
blocks
RISK-1423
notes
Approved same day. Unix team says next change window is Thursday.
Ask for a masked UAT copy of POSITION_STGto raise
system
RISKUAT
approver
Data Protection Office
team
DBA-Markets
needed by
2026-10-24
chase
nobody yet - you still have to raise this one
blocks
RISK-1423
notes
Not raised yet - needs a DPO form first, ask Priya which one.
ACCESS-REQ-79115expired
what
Murex read-only login
system
Murex
team
Trading-Systems
raised
2026-03-24
closed
2026-09-20
notes
Lapsed after 90 days of no use. Needs raising again if the trade file question comes back.
ACCESS-REQ-81004granted
what
CyberArk access to safe RISK-PRD
system
RISK_APP account
raised with
IT Service Desk
approver
Line manager - S. Iyer
team
IAM
raised
2026-08-11
closed
2026-08-23
notes
Took 12 days. Re-request every 6 months - it lapses.

Meetings

2026-10-09 · Incident review - EOD late on the 28thincident
who was there
me, Ravi, Ops manager
chaired by
Batch-Ops
ticket
RISK-1423
discussed
Box was ON_HOLD from the 28th and nobody was paged.
decided
Ops will add an alert for a box left ON_HOLD past 20:30. No code change needed on our side.
actions
Ops: raise the monitoring change.
2026-10-07 · Kafka cutover - parallel run rulesreview
who was there
me, Streaming Platform, Risk BA
chaired by
Streaming Platform
ticket
RISK-1455
discussed
Reviewed the parallel run between Tibco and Kafka.
decided
Tibco stays the book of record until Q4. If the counts disagree, Tibco wins and we raise a defect - do not silently reconcile.
actions
Me: add a count comparison to the loader. Platform: sort the firewall rule (CR-2291).
mine
Add the Tibco vs Kafka count comparison (still open)
follow up on
2026-10-14
2026-10-01 · Month-end ordering - who fixes the feeddesign
who was there
me, Ravi (Batch-Ops), Market Data Support, S. Iyer
chaired by
S. Iyer
ticket
RISK-1423
discussed
Walked through the month-end failure. Market Data confirmed BOOK_HIER cannot publish before the vendor close file, typically 20:50.
decided
STEP1 will wait on a feed-arrival watcher rather than a fixed time. Market Data will NOT change their publish time. Agreed the report job stays as-is for now.
actions
Ravi: add the watcher job to the box. Market Data: confirm the file pattern. Me: change STEP1 to depend on the watcher.
mine
Change STEP1 to depend on the feed watcher and test in UAT (still open)
follow up on
2026-10-08
2026-09-19 · Handover of the Denodo layer from the data teamhandover
who was there
me, Data-Virtualisation
chaired by
Data-Virtualisation
discussed
They walked me through the cache refresh and who owns the base views.
decided
We own v_position_enriched from now on; they keep the VDP platform. Cache refresh time is theirs to change, not ours.
actions
Me: document the cache behaviour where the desk can find it.
mine
Document the 06:00 cache refresh behaviour (still open)
follow up on
2026-10-03

Cheatsheets

IntelliJ IDEA · IDE

Default keymap. macOS column shows it only where it differs.

Also applies to PyCharm, WebStorm, DataGrip and the rest of the JetBrains family - same keymap, different inspections.

Find your way around
Shift Shift
Search everywhere - classes, files, actions, settings, one box
Ctrl+Shift+A / Cmd+Shift+A
Find action - run any menu command by name
Ctrl+N / Cmd+O
Go to class
Ctrl+Shift+N / Cmd+Shift+O
Go to file
Ctrl+Alt+Shift+N / Cmd+Alt+O
Go to symbol
Ctrl+E / Cmd+E
Recent files
Ctrl+Shift+E / Cmd+Shift+E
Recent locations - the one people forget
Ctrl+B / Cmd+B
Go to declaration - Ctrl+Click does the same
Ctrl+Alt+B / Cmd+Alt+B
Go to implementation
Alt+F7 / Alt+F7
Find usages
Ctrl+Alt+Left / Cmd+Alt+Left
Navigate back
Ctrl+Alt+Right / Cmd+Alt+Right
Navigate forward
Ctrl+G / Cmd+L
Go to line
Ctrl+F12 / Cmd+F12
File structure - jump to a method in this file
Alt+1 / Cmd+1
Project tool window
Alt+F12 / Alt+F12
Terminal
Edit
Alt+Enter / Alt+Enter
Show intention actions / quick fix - the single most useful key
Ctrl+Space / Ctrl+Space
Basic code completion
Ctrl+Shift+Enter / Cmd+Shift+Enter
Complete statement - adds the semicolon and braces
Ctrl+P / Cmd+P
Parameter info
Ctrl+Q / F1
Quick documentation
Ctrl+D / Cmd+D
Duplicate line or selection
Ctrl+Y / Cmd+Backspace
Delete line
Ctrl+/ / Cmd+/
Comment line
Ctrl+Shift+/ / Cmd+Alt+/
Block comment
Ctrl+W / Alt+Up
Extend selection
Alt+Shift+Up / Down / Alt+Shift+Up / Down
Move line up / down
Ctrl+Shift+Up / Down / Cmd+Shift+Up / Down
Move statement up / down
Alt+J / Ctrl+G
Add selection for next occurrence - multi-cursor
Ctrl+Alt+Shift+J / Ctrl+Cmd+G
Select all occurrences
Ctrl+Alt+L / Cmd+Alt+L
Reformat code
Ctrl+Alt+O / Ctrl+Alt+O
Optimize imports
Alt+Insert / Cmd+N
Generate - constructor, getters, toString
Ctrl+O / Ctrl+O
Override methods
Ctrl+I / Ctrl+I
Implement methods
Ctrl+Alt+T / Cmd+Alt+T
Surround with - try/catch, if, loop
Refactor
Shift+F6 / Shift+F6
Rename
Ctrl+Alt+Shift+T / Ctrl+T
Refactor this - the whole refactoring menu
Ctrl+Alt+V / Cmd+Alt+V
Extract variable
Ctrl+Alt+M / Cmd+Alt+M
Extract method
Ctrl+Alt+C / Cmd+Alt+C
Extract constant
Ctrl+Alt+F / Cmd+Alt+F
Extract field
F6 / F6
Move
Search and replace
Ctrl+F / Cmd+F
Find in file
Ctrl+R / Cmd+R
Replace in file
Ctrl+Shift+F / Cmd+Shift+F
Find in path
Ctrl+Shift+R / Cmd+Shift+R
Replace in path
Run and debug
Ctrl Ctrl / Ctrl Ctrl
Run anything
Shift+F10 / Ctrl+R
Run
Shift+F9 / Ctrl+D
Debug
Ctrl+F8 / Cmd+F8
Toggle breakpoint
Ctrl+Shift+F8 / Cmd+Shift+F8
View / edit breakpoints - conditional breakpoints live here
F8 / F8
Step over
F7 / F7
Step into
Shift+F8 / Shift+F8
Step out
F9 / Cmd+Alt+R
Resume program
Alt+F8 / Alt+F8
Evaluate expression
Alt+F9 / Alt+F9
Run to cursor
Version control
Ctrl+K / Cmd+K
Commit
Ctrl+Shift+K / Cmd+Shift+K
Push
Ctrl+T / Cmd+T
Update project / pull
Alt+` / Ctrl+V
VCS operations popup
Ctrl+Alt+Z / Cmd+Alt+Z
Rollback / revert
Alt+Shift+C / Alt+Shift+C
Recent changes
Database console (Ultimate / DataGrip)
Ctrl+Enter / Cmd+Enter
Execute statement under the caret
Ctrl+Shift+F10 / Ctrl+Shift+R
Execute the whole script
Ctrl+Alt+Shift+E / Cmd+Alt+Shift+E
Explain plan
Ctrl+F5 / Cmd+F5
Refresh the result set

Visual Studio Code · Editor

Default keybindings. macOS column shows it only where it differs.

Ctrl+K Ctrl+S opens the keyboard shortcut editor - use it when a row here does not match your setup, then fix the row.

Find your way around
Ctrl+Shift+P / Cmd+Shift+P
Command palette - everything is in here
Ctrl+P / Cmd+P
Go to file
Ctrl+Shift+O / Cmd+Shift+O
Go to symbol in file - type : to group by kind
Ctrl+T / Cmd+T
Go to symbol in workspace
Ctrl+G / Ctrl+G
Go to line
F12 / F12
Go to definition
Alt+F12 / Alt+F12
Peek definition - without leaving the file
Shift+F12 / Shift+F12
Find all references
Alt+Left / Ctrl+-
Navigate back
Alt+Right / Ctrl+Shift+-
Navigate forward
Ctrl+Tab / Ctrl+Tab
Switch between open editors
Edit
Ctrl+. / Cmd+.
Quick fix / refactor
F2 / F2
Rename symbol
Ctrl+Space / Ctrl+Space
Trigger suggestion
Ctrl+/ / Cmd+/
Toggle line comment
Shift+Alt+A / Shift+Alt+A
Toggle block comment
Shift+Alt+F / Shift+Alt+F
Format document
Alt+Up / Down / Alt+Up / Down
Move line up / down
Shift+Alt+Up / Down / Shift+Alt+Up / Down
Copy line up / down
Ctrl+Shift+K / Cmd+Shift+K
Delete line
Ctrl+Enter / Cmd+Enter
Insert line below
Ctrl+Shift+Enter / Cmd+Shift+Enter
Insert line above
Ctrl+D / Cmd+D
Add next occurrence to selection - multi-cursor
Ctrl+Shift+L / Cmd+Shift+L
Select all occurrences
Ctrl+Alt+Up / Down / Cmd+Alt+Up / Down
Add cursor above / below
Alt+Click / Alt+Click
Add a cursor wherever you click
Shift+Alt+Right / Ctrl+Shift+Cmd+Right
Expand selection
Ctrl+Shift+\ / Cmd+Shift+\
Jump to matching bracket
Alt+Z / Alt+Z
Toggle word wrap - for the 900-character log line
Search and replace
Ctrl+F / Cmd+F
Find
Ctrl+H / Cmd+Alt+F
Replace
Ctrl+Shift+F / Cmd+Shift+F
Find in files
Ctrl+Shift+H / Cmd+Shift+H
Replace in files
Alt+Enter / Alt+Enter
Select all matches of the current find
Panels and layout
Ctrl+` / Ctrl+`
Toggle terminal
Ctrl+Shift+` / Ctrl+Shift+`
New terminal
Ctrl+B / Cmd+B
Toggle sidebar
Ctrl+Shift+E / Cmd+Shift+E
Explorer
Ctrl+Shift+G / Ctrl+Shift+G
Source control
Ctrl+Shift+D / Cmd+Shift+D
Run and debug
Ctrl+Shift+X / Cmd+Shift+X
Extensions
Ctrl+Shift+M / Cmd+Shift+M
Problems panel
Ctrl+\ / Cmd+\
Split editor
Ctrl+K Z / Cmd+K Z
Zen mode
Ctrl+, / Cmd+,
Settings
Ctrl+K Ctrl+S / Cmd+K Cmd+S
Keyboard shortcuts
Run and debug
F5 / F5
Start debugging
Ctrl+F5 / Ctrl+F5
Run without debugging
F9 / F9
Toggle breakpoint
F10 / F10
Step over
F11 / F11
Step into
Shift+F11 / Shift+F11
Step out
Ctrl+Shift+B / Cmd+Shift+B
Run build task

Visual Studio (C# / VB.NET) · IDE

Windows, default 'General Development Settings' profile.

Careful: this is Microsoft Visual Studio, not VS Code - the keymaps are different and the two get confused constantly. If a shortcut here does nothing, check Tools > Options > Environment > Keyboard: the profile chosen at first launch changes many of these.

Find your way around
Ctrl+T
Go To All - files, types, members, symbols
Ctrl+,
Go To Member / navigate to
F12
Go to definition
Alt+F12
Peek definition
Ctrl+F12
Go to implementation
Shift+F12
Find all references
Ctrl+-
Navigate backward
Ctrl+Shift+-
Navigate forward
Ctrl+Alt+L
Solution Explorer
Ctrl+Alt+O
Output window - where the build actually tells you what broke
Ctrl+\ E
Error List
Ctrl+K Ctrl+K
Toggle bookmark
Ctrl+K Ctrl+N
Next bookmark
Edit
Ctrl+.
Quick actions and refactorings - the equivalent of Alt+Enter
Ctrl+Space
IntelliSense / complete word
Ctrl+Shift+Space
Parameter info
Ctrl+K Ctrl+D
Format document
Ctrl+K Ctrl+F
Format selection
Ctrl+K Ctrl+C
Comment selection
Ctrl+K Ctrl+U
Uncomment selection
Ctrl+K Ctrl+X
Insert snippet
Ctrl+K Ctrl+S
Surround with
Shift+Alt+Up / Down
Add cursor above / below - multi-caret
Ctrl+Alt+Click
Add a cursor
Ctrl+L
Cut line
Alt+Up / Down
Move line up / down
Ctrl+M Ctrl+M
Collapse / expand the current region
Ctrl+M Ctrl+O
Collapse to definitions
Refactor
Ctrl+R Ctrl+R
Rename
Ctrl+R Ctrl+M
Extract method
Ctrl+R Ctrl+E
Encapsulate field
Ctrl+R Ctrl+I
Extract interface
Ctrl+R Ctrl+G
Remove and sort usings
Build, run and debug
Ctrl+Shift+B
Build solution
F5
Start debugging
Ctrl+F5
Start without debugging
Shift+F5
Stop debugging
Ctrl+Shift+F5
Restart debugging
F9
Toggle breakpoint
Ctrl+Shift+F9
Delete all breakpoints
F10
Step over
F11
Step into
Shift+F11
Step out
Ctrl+F10
Run to cursor
Ctrl+Alt+I
Immediate window - evaluate anything mid-break
Ctrl+Alt+C
Call stack
Ctrl+Alt+W 1
Watch window 1
Ctrl+Alt+V L
Locals window
Ctrl+Alt+E
Exception settings - break when a specific exception is thrown
Search and replace
Ctrl+F
Find
Ctrl+H
Replace
Ctrl+Shift+F
Find in files
Ctrl+Shift+H
Replace in files
F3
Find next
C# snippets - type it, then Tab Tab
prop
Auto-implemented property
propfull
Property with a backing field
ctor
Constructor
cw
Console.WriteLine
try
try / catch
tryf
try / finally
foreach
foreach loop
for
for loop
switch
switch statement
#region
Region block
svm
static void Main
VB.NET snippets - type it, then Tab
Sub
Sub procedure
Function
Function
Property
Property
For
For loop
ForEach
For Each loop
Try
Try / Catch block
Select
Select Case block
Class
Class definition

Git · Version control

Same everywhere. Copy the command, fill in your own branch names.

The rule that saves people: anything committed can be recovered with git reflog. Anything never committed cannot. Commit before you experiment.

The daily loop
git status
What is changed, what is staged, which branch you are on
git pull --rebase
Get the latest without a merge bubble
git add -p
Stage hunk by hunk - makes you review your own change first
git commit -m "RISK-1423 fix month-end ordering"
Commit with the ticket key in the message
git push
Push the current branch
git push -u origin HEAD
Push a new branch and set its upstream
Branches
git switch -c feature/RISK-1423
Create a branch and switch to it
git switch main
Switch to an existing branch
git branch -vv
Branches with upstream and last commit
git branch -d feature/old
Delete a merged branch
git branch -D feature/old
Force delete an unmerged branch - no warning, be sure
git fetch --prune
Refresh remotes and drop branches deleted on the server
git merge origin/main
Merge the latest main into your branch
git rebase origin/main
Replay your commits on top of main - cleaner history; never on a shared branch
Look at what happened
git log --oneline --graph --decorate -20
Readable recent history
git log -p path/to/file
Every change to one file, with diffs
git log --since=2.weeks --author=you
What have I actually done recently
git diff
Unstaged changes
git diff --staged
Exactly what you are about to commit
git diff main...HEAD
Everything on this branch versus main
git show SHA
One commit in full
git blame -L 40,60 path/to/file
Who wrote these lines, and in which commit
git log -S CONNECTION_STRING
Find the commit that introduced or removed a string - the pickaxe - badly underused
Undo and rescue
git restore path/to/file
Throw away uncommitted changes to a file
git restore --staged path/to/file
Unstage but keep the edit
git commit --amend
Fix the last commit message or add a forgotten file - not after pushing
git reset --soft HEAD~1
Undo the last commit, keep the changes staged
git reset --hard HEAD
Discard everything uncommitted - destructive, no undo
git revert SHA
Undo a commit with a new commit - the safe way on a shared branch
git reflog
Every HEAD you have been at - this is how you recover a lost commit
git checkout SHA -- path/to/file
Restore one file from an old commit
Stash
git stash push -m wip-recon-fix
Park uncommitted work
git stash list
What is parked
git stash pop
Bring the newest one back and drop it
git stash apply stash@{2}
Bring a specific one back and keep it
git stash show -p stash@{0}
See what is inside before applying
Hunting a regression
git bisect start
Begin a binary search for the breaking commit
git bisect bad
Mark the current commit as broken
git bisect good SHA
Mark a known-good commit; git walks you through the rest
git bisect reset
Finish and return to where you were
Setup and config
git config --global user.email you@corp.local
Set your commit identity
git config --list --show-origin
Every setting and which file it came from
git remote -v
Where this repo pushes and pulls from
git clone URL --depth 1
Shallow clone of a very large repo

Unix - getting onto the dev server · Shell

Linux / AIX / Solaris. Run from Git Bash, WSL, PuTTY or a Mac terminal.

Replace the example hosts and paths with your real ones and keep the row. A cheatsheet with your actual hostnames in it is worth ten generic ones.

Get onto the box
ssh user@dev-server.corp.local
Connect
ssh -J user@jump-host user@app-prd-01
Hop through a jump host in one command - -J beats two chained ssh calls
ssh -p 2222 user@host
Connect on a non-default port
ssh-keygen -t ed25519 -C you@corp.local
Create a key pair
ssh-copy-id user@host
Install your public key so it stops asking for a password
cat ~/.ssh/config
Host aliases live here - define a Host block once, then just: ssh dev
exit
Log out - or Ctrl+D
Copy files
scp local.txt user@host:/apps/risk/tmp/
Copy a file TO the server
scp user@host:/apps/risk/logs/eod.log .
Copy a file FROM the server into the current directory
scp -r ./config user@host:/apps/risk/
Copy a whole directory - -r for recursive
scp -P 2222 file user@host:/tmp/
scp on a non-default port - capital P here, lowercase p in ssh
rsync -avz --progress ./build/ user@host:/apps/risk/app/
Copy only what changed, with progress - far better than scp for repeat copies
sftp user@host
Interactive transfer session - then put / get / ls / cd
tar czf logs.tgz /apps/risk/logs/
Bundle a pile of files before copying
tar xzf logs.tgz
Unpack it at the other end
Find your way around
pwd
Where am I
ls -lrt
List by time, newest last - the most-used ls on a log directory
ls -lh
List with human-readable sizes
cd -
Back to the previous directory
find /apps/risk -name *.properties
Find files by name
find /apps/risk -mtime -1 -type f
Files changed in the last day - what did that deploy touch
du -sh *
Size of everything in this directory
df -h
Free disk space - check this first when a batch job fails mysteriously
which java
Which binary is actually being picked up
readlink -f /apps/risk/current
Resolve a symlink to its real path
Logs - the reason you logged in
tail -f /apps/risk/logs/eod.log
Follow a log live - Ctrl+C to stop
tail -200 file.log
Last 200 lines
less file.log
Page through it - slash to search, G for end, g for start, q to quit
grep -n ORA- file.log
Find errors with line numbers
grep -i -C 5 exception file.log
Case-insensitive, with 5 lines of context - context is what you actually need
grep -rn RISKPRD /apps/risk/conf/
Search recursively through config
zgrep ORA- file.log.gz
Grep inside a rotated, gzipped log
wc -l file.log
How many lines
grep -c FATAL file.log
How many matches
tail -f file.log | grep --line-buffered ERROR
Follow, but only show errors - --line-buffered or you see nothing
Processes and ports
ps -ef | grep java
Is it running, and as which user
top
Live CPU and memory - or htop where it exists
kill -15 PID
Ask a process to stop cleanly - always try this before -9
kill -9 PID
Force kill - last resort: no cleanup, no flush, truncated logs
ss -tulpn | grep 8443
What is listening on a port - netstat -tulpn on older boxes
lsof -i :8443
Which process owns a port
lsof -p PID
Which files a process has open - finds the log path you cannot locate
nohup ./run.sh > out.log 2>&1 &
Run something that survives your logout
jobs / fg / bg
Manage background jobs in this shell
Permissions and access
ls -l file
See the permissions
chmod +x script.sh
Make a script executable
chmod 640 file
Owner read-write, group read, others nothing
chown user:group file
Change owner - usually needs sudo
id
Who am I, and which groups am I in - answers most permission-denied questions
sudo -l
What am I allowed to run as root
Staying connected
tmux new -s eod
Start a named session that survives a dropped VPN
tmux attach -t eod
Reattach after you get disconnected
Ctrl+B then D
Detach from tmux and leave it running
screen -S eod / screen -r eod
The older equivalent, on boxes without tmux
watch -n 5 ls -lrt /sftp/inbound
Re-run a command every 5 seconds - for watching a file land
Database from the shell
sqlplus RISK_RO@RISKPRD
Connect to Oracle from the box
sqlplus -S user@db @script.sql
Run a script quietly - never put a password on the command line - it shows in ps
tnsping RISKPRD
Check the TNS alias resolves before blaming the app
echo $ORACLE_HOME ; echo $TNS_ADMIN
Where the client and tnsnames.ora actually are

Tickets

Current sprint: Sprint 42 (2026-10-05 to 2026-10-18)

Sprint 42 - current sprint

RISK-1423 — EOD position load fails on month end

in_progress · high · me · Sprint 42 · autosys,eod,oracle · Jira

What this ticket is about

Month-end runs fail because BOOK_HIER arrives after POSITION_STG is loaded, so the view returns rows with no hierarchy and the report job aborts.
Fix under discussion: make STEP1 wait on the hierarchy feed watcher.

Systems involved

Application / vendor software

Murexprodupstream source
What it is / where it runs
murex-prd.corp.local
vendor
Murex
version
3.1.44
url
https://murex-prd.corp.local
support team
DL-MUREX-SUPPORT
runs on
murex-prd-01..04
install path
/apps/murex
owned by
Trading-Systems
why here
their 19:45 cutoff drives everything
notes
Upstream source of the trade file. Their EOD cutoff is 19:45 - miss it and the position load has nothing to read.

Autosys job

PRD_RISK_EOD_LOAD_BOXprodparent box
Job name
PRD_RISK_EOD_LOAD_BOX
machine
batch-prd-04.corp.local
job type
BOX
schedule
20:15 Mon-Fri
downstream
PRD_RISK_EOD_REPORT
owned by
Batch-Ops
why here
check ON_HOLD first
notes
Box holds three jobs. If the box goes ON_HOLD nothing alerts - check it first.
PRD_RISK_EOD_LOAD_STEP1prodthe job that fails
Job name
PRD_RISK_EOD_LOAD_STEP1
machine
batch-prd-04.corp.local
job type
CMD
box job
PRD_RISK_EOD_LOAD_BOX
command
/apps/risk/bin/load_positions.sh $COB
upstream
feed arrival watcher
downstream
PRD_RISK_EOD_LOAD_STEP2
owned by
Batch-Ops
why here
safe to rerun after the feed lands
notes
This is the one that fails on month end. Rerun is safe - it truncates staging first.
sendevent -E FORCE_STARTJOB -J PRD_RISK_EOD_LOAD_STEP1

Person / team to ask

Market Data Supportowns the late feed
Name
DL-MDS-SUPPORT
team
Market Data
email
DL-MDS-SUPPORT@corp.local
chat handle
#market-data-support
ask them about
late or missing BOOK_HIER feed
notes
They answer fastest before 16:00. After that raise a ticket in MDS queue.

Dashboard / monitoring

EOD batch healthprodshows the overrun
URL
https://grafana.corp.local/d/risk-eod/eod-batch
what to watch
load duration panel - normal is 12 min, month end 40 min
alert channel
#risk-batch-alerts

View / table / procedure

POSITION_STGprodwritten by STEP1
Object name
RISK_OWNER.POSITION_STG
object type
table
database
RISKPRD
schema
RISK_OWNER
notes
Staging table the loader writes to. Truncated at the start of every run.
V_TRADE_POSITION_DAILYprodthe view the report reads
Object name
RISK_OWNER.V_TRADE_POSITION_DAILY
object type
view
database
RISKPRD
schema
RISK_OWNER
refreshed by
PRD_RISK_EOD_LOAD_BOX
sample query
SELECT * FROM RISK_OWNER.V_TRADE_POSITION_DAILY WHERE COB_DATE = TRUNC(SYSDATE)-1 AND BOOK = :book
notes
Joins POSITION_STG to BOOK_HIER. Month-end rows land late because the hierarchy feed arrives after the position feed.

Kafka cluster / topic

risk.position.v2prodparallel feed
Bootstrap servers
kafka-prd-01.corp.local:9092,kafka-prd-02.corp.local:9092,kafka-prd-03.corp.local:9092
topic
risk.position.v2
consumer group
risk-eod-loader
partitions
12
security protocol
SASL_SSL
schema registry
https://schema-registry-prd.corp.local:8081
retention
7 days
console command
kafka-console-consumer --bootstrap-server kafka-prd-01:9092 --topic risk.position.v2 --from-beginning --max-messages 5
owned by
Streaming-Platform
why here
compare counts against Tibco
notes
Replaces the Tibco feed from Q4. Both run in parallel until then - if numbers disagree, Tibco is still the book of record.

Log file location

EOD loader logprodwhere the error is
Path
/apps/risk/logs/eod_load_%Y%m%d.log
server
batch-prd-04.corp.local
rotation
kept 30 days, then archived to /nas/risk/logs
grep hint
grep -n 'ORA-\|FATAL' /apps/risk/logs/eod_load_$(date +%Y%m%d).log
access note
read access via group risk-ops-ro
notes
The real error is usually 40 lines above the stack trace.

Oracle DB / connection

RISKPRD - risk warehouseprodsource of truth
Connection string / TNS alias
jdbc:oracle:thin:@//ora-risk-prd-scan.corp.local:1521/RISKPRD
host
ora-risk-prd-scan.corp.local
port
1521
service name
RISKPRD
schema
RISK_OWNER
read user
RISK_RO
tns alias
RISKPRD_RO
owned by
DBA-Markets
why here
query here to prove the rows are missing, not wrong
notes
Read-only user for investigation. Writes go through the batch account only.
DBA raise ticket queue: DBA-MARKETS.

Deployed server / host

batch-prd-04prodwhere the job runs
Hostname / IP
batch-prd-04.corp.local
role
Autosys agent + EOD scripts
app path
/apps/risk/bin
access
request via Batch-Ops, read-only by default
owned by
Batch-Ops

Tibco EMS / BW

EMS PRD - risk position busprodpublishes the positions
Server URL
tcp://tibco-ems-prd-01.corp.local:7222
host
tibco-ems-prd-01.corp.local
port
7222
queue
RISK.POSITION.EOD
topic
RISK.POSITION.BROADCAST
jndi url
tibjmsnaming://tibco-ems-prd-01.corp.local:7222
durable name
risk-eod-durable
admin console
https://tibco-ems-prd-01.corp.local:8222
owned by
Middleware
why here
durable subscriber stalls after a failover - check before blaming the loader
notes
Failover pair with tibco-ems-prd-02 - the client URL must list both or a failover leaves the durable subscriber stuck.

What happened / what I learned

2026-10-10 15:38 · chat · Ops - Ravi

Box was ON_HOLD from the 28th, nobody was paged. Released it at 21:40.

2026-10-10 15:38 · email · Market Data Support

BOOK_HIER for month end is published after the vendor close file, typically 20:50. It will not move earlier.

2026-10-10 15:38 · self

Reproduced in UAT: run STEP1 before hierarchy load and the view drops ~1,900 rows. Confirms the ordering theory, not a data quality issue.

RISK-1455 — Risk API returns stale positions after restart

open · medium · me · Sprint 42 · api,cache · Jira

What this ticket is about

Cache warms from the previous COB when the API restarts before the EOD load finishes. Needs a readiness check against the load marker table.

Systems involved

Credential location (never the secret)

RISK_APP prod accountprodneeded to restart
Where the credential lives
CyberArk safe RISK-PRD, account RISK_APP
vault
CyberArk
safe
RISK-PRD
account
RISK_APP
request process
raise ACCESS-REQ, needs manager approval, 24h SLA
notes
Never paste the password anywhere - check it out per session.

Denodo virtual view

v_position_enrichedprodwhat the desk actually sees
Virtual database / view
risk_vdb.v_position_enriched
vdp host
denodo-prd.corp.local
vdp port
9999
virtual database
risk_vdb
base views
RISKPRD.V_TRADE_POSITION_DAILY, refdata.book_hier
cache mode
full, refreshed 06:00
jdbc url
jdbc:vdb://denodo-prd.corp.local:9999/risk_vdb
owned by
Data-Virtualisation
why here
cached until 06:00, so the desk sees stale numbers even after a fix
notes
What the front office actually queries. Cached - so a fix in Oracle is not visible here until the 06:00 refresh.

Log file location

Risk API logprodcache warm messages land here
Path
/apps/risk/api/logs/risk-api.log
server
risk-app-prd-01.corp.local
rotation
hourly

Code repository / branch

risk/eod-loadershares the marker table code
Repo URL
https://git.corp.local/risk/eod-loader
branch
release/2024.09
module
loader-core
build job
jenkins/risk-eod-loader
key files
src/loader/PositionLoader.java, sql/merge_position.sql

Deployed server / host

risk-app-prd-01prodhosts the API
Hostname / IP
risk-app-prd-01.corp.local
role
risk API + scheduler
app path
/apps/risk
deploy command
/apps/risk/bin/deploy.sh <version>
restart command
sudo systemctl restart risk-api
ports
8443 (api), 9100 (metrics)
access
jump host jump-prd-02, then ssh as svc_risk
owned by
Unix-Midrange
why here
restart window matters
notes
Deploys are blocked 20:00-23:00 while EOD runs.

What happened / what I learned

2026-10-10 15:38 · self

Cache warm happens in @PostConstruct - no check on load state.

Sprint 39

RISK-1390 — Add book hierarchy columns to daily position view

done · low · me · Sprint 39 · oracle

What this ticket is about

Shipped. Kept here because the view definition is the one everyone asks about.

Systems involved

View / table / procedure

V_TRADE_POSITION_DAILYprodchanged here
Object name
RISK_OWNER.V_TRADE_POSITION_DAILY
object type
view
database
RISKPRD
schema
RISK_OWNER
refreshed by
PRD_RISK_EOD_LOAD_BOX
sample query
SELECT * FROM RISK_OWNER.V_TRADE_POSITION_DAILY WHERE COB_DATE = TRUNC(SYSDATE)-1 AND BOOK = :book
notes
Joins POSITION_STG to BOOK_HIER. Month-end rows land late because the hierarchy feed arrives after the position feed.

Oracle DB / connection

RISKUAT - risk warehouseuattested here
Connection string / TNS alias
jdbc:oracle:thin:@//ora-risk-uat.corp.local:1521/RISKUAT
host
ora-risk-uat.corp.local
port
1521
service name
RISKUAT
schema
RISK_OWNER
owned by
DBA-Markets
notes
Refreshed from prod every Sunday 02:00 - anything you change is gone Monday.

What happened / what I learned

2026-10-10 15:38 · handover

DBA needs 2 days notice for a view change in prod.