Skip to content
Navy Orders Muncher
Go Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
pkg/pkcs11
.gitignore
.golangci.yml
.markdownlintrc
.pre-commit-config.yaml
LICENSE.md
Makefile
README.md
go.mod
go.sum
nom.go
orders_types.go
rank.go

README.md

Navy Orders Muncher

nom, the Navy Orders Muncher, ingests CSV files containing Navy Orders and excretes database updates to the move.mil Orders API.

Usage

$ nom <csv input file>

Building

Building is easy! Once you have the dependencies, run

$ make

Dependencies

nom is written in Go. Aside from go, you will need:

Acquiring and installing these is left as an exercise for the reader.

Input format

nom accepts comma-delimited CSV files and expects the following columns:

Column Name Description
Ssn (obligation) If 9 digits, Social Security Number
If 10 digits, EDIPI
TAC Household Goods (HHG) Transportation Account Code (TAC)
Order Create/Modification Date Orders date, in Excel date format (Day 1 = Dec 31, 1899)
Order Modification Number Number of modifications made by an Orders Writing System, such as EAIS, OAIS, or NMCMPS.
Obligation Modification Number Number of modifications made manually via POEMS.
Obligation Status Code D: Cancel Obligation, effectively rescinding these Orders
N: Initial Mod - amended Orders
P: Initial Obligation - new Orders
Obligation Multi-leg Code Indicates whether either endpoint is TDY.
0 - Perm to Perm
1 - Perm to Temp
5 - Temp to Temp
9 - Temp to Perm
CIC Purpose Information Code (OBLGTN) Purpose of the Orders, maps to Orders type
Paygrade Three-character DoD Paygrade, e.g., E05, W02, O10
Rank Classification Description The Navy rank or rating
Service Member Name The sailor's name, in the format LASTNAME,FIRSTNAME (optional MI) (optional suffix)
Detach UIC Unit Identification Code (UIC) of the detaching activity
Detach UIC Home Port Home port of the detaching activity
Detach UIC City Name Detaching activity city
Detach State Code Detaching activity state
Detach Country Code Detaching activity country
Ultimate Estimated Arrival Date Report No Later Than Date
Ultimate UIC Unit Identification Code (UIC) of the ultimate activity
Ultimate UIC Home Port Home port of the ultimate activity
Ultimate UIC City Name Ultimate activity city
Ultimate State Code Ultimate activity state
Ultimate Country Code Ultimate activity country
Entitlement Indicator If 'Y', then this is a 'Cost Order' with obligated moving expenses. If 'N', then this is a 'No Cost Order'.
Count of Dependents Participating in Move (STATIC) Number of sailor's dependents; needed to determine the correct weight entitlement
Count of Intermediate Stops (STATIC) Number of intermediate activities. If greater than 0, then this move has TDY en route.
Primary SDN The Commercial Travel (CT) Standard Document Number (SDN), which nom uses as the unique Orders number

Columns that do not start with the above headers are ignored.

Orders number

On printed Navy Orders, the BUPERS Orders number is originally formatted as "<Order Control Number> <SSN>", for example, "3108 000-12-3456". It would be unique (because of the SSN), except that it’s possible for a set of orders to be cut on the same day 10 years later for the same sailor, resulting in a collision.

Because the BUPERS Orders Number contains PII (the SSN) and could potentially not be unique (because it only allows a single digit for the year), nom uses the Primary SDN (aka the Commercial Travel SDN) instead. For what it's worth, Marine Corps orders also use the CT SDN as the unique Orders number.

Modification number interpretation

The Orders API has a sequence number to indicate the chronology of amendments to a set of Orders. The input, however, has two modification number fields, which track the modification count from different systems. Fortunately, these two fields increment atomically, and never decrement.

Therefore, the sequence number is simply the sum of these two numbers.

Orders type

To determine the effective orders type, lookup the CIC Purpose Information Code and community (enlisted or officer) in the following table.

N_CIC_PURP Enlisted / Officer Description Effective Orders Type
0 Officer IPCOT In-place consecutive overseas travel ipcot
1 Enlisted IPCOT In-place consecutive overseas travel ipcot
2 Officer Accession Travel accession
3 Officer Training Travel training
4 Officer Operational Travel operational
5 Officer Separation Travel separation
6 Officer Organized Unit/Homeport Change unit-move
7 Officer Emergency Non-member Evac emergency-evac
8 Enlisted Overseas Tour Extension Incentive Program (OTEIP) oteip
9 Enlisted NAVCAD (Naval Cadet) Training training
A Enlisted Accession Travel Recruits accession
B Enlisted Non-recruit Accession Travel accession
C Enlisted Training Travel training
D Enlisted Operational Travel operational
E Enlisted Separation Travel separation
F Enlisted Organized Unit/Homeport Change unit-move
G Enlisted Midshipman Accession Travel accession
H Both Special Purpose Reimbursable special-purpose
I Enlisted NAVCAD(Naval Cadet) Accession accession
J Enlisted Accession Travel Recruits accession
K Enlisted Non-recruit Accession Travel accession
L Enlisted Training Travel training
M Enlisted Rotational Travel rotational
N Enlisted Separation Travel separation
O Enlisted Organized Unit/Homeport Change unit-move
P Enlisted Midshipman Separation Travel separation
Q Officer Misc. Rotational Non-member rotational
R Enlisted Misc. Operational Non-member operational
S Officer Accession Travel accession
T Officer Training Travel training
U Officer Rotational Travel rotational
V Officer Separation Travel separation
W Officer Organized Unit/Homeport Change unit-move
X Enlisted EMERGENCY NON-MEMBER EVACS emergency-evac
X Officer Misc. Rotational Non-member rotational
Y Enlisted Misc. Rotational Non-member rotational
Z Enlisted NAVCAD(Naval Cadet) Separation separation

Output

nom uploads the Orders it reads to the move.mil Orders API.

You can’t perform that action at this time.