Sample produced by DevDesk from made-up data. The company, systems and people shown are fictional.
Back to DevDeskHandover 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 aroundShift 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
EditAlt+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
RefactorShift+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 replaceCtrl+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 debugCtrl 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 controlCtrl+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 aroundCtrl+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
EditCtrl+. / 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 replaceCtrl+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 layoutCtrl+` / 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 debugF5 / 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 aroundCtrl+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
EditCtrl+.- 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
RefactorCtrl+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 debugCtrl+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 replaceCtrl+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 Tabprop- 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 TabSub- 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 loopgit 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
Branchesgit 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 happenedgit 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 rescuegit 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
Stashgit 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 regressiongit 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 configgit 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 boxssh 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 filesscp 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 aroundpwd- 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 intail -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 portsps -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 accessls -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 connectedtmux 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 shellsqlplus 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
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
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.