What's New
A running log of improvements and fixes to NetOS, newest first. Each entry says what changed and where to find it. New entries are added every time a change goes live.
October 24, 2026
Customer notes on the Overview, static IPs from XDesign on the Service tab (request #43)
- A customer's Notes (from Edit customer → Contact & notes) now show at the bottom of the Customer Summary card on the Overview tab, line breaks kept. Before, you could only read them by opening the edit form.
- The Service tab has a new IP addressing section with each static IP block from the customer's XDesign network design: IP block (CIDR), customer IP, gateway, subnet mask, DNS 1 and 2, VLAN and handoff, with a Copy button. It is read only. XDesign is where addresses are kept, so change them there and click Refresh from XDesign.
- NetOS shows the current as-built revision, else the latest final one, else the latest proposed one (marked "proposed"). The gateway is the block's first address and the customer's equipment the second, the same rule XDesign uses. Anything the design doesn't hold yet, DNS for now, reads "Not in design".
- To match a design to a customer, NetOS uses the design linked to the customer on its Designs tab, or the customer's circuit ID, or the name on a design linked to its property (marked "matched by name, check").
- Customers drawn before XDesign, such as Global Prep Academy, show nothing here until someone draws an as-built network design for them in XDesign. Until then their IPs stay in Notes, which now show on the Overview.
- Claude's connector can answer "what's the static IP for X" from the same data.
October 22, 2026
Photo markup saves on high-resolution photos (request #41)
- On large camera photos (about 6000 pixels wide or more, such as 24 MP cameras), adding a text label in the photo Markup editor made Save fail every time, so the label and the other new marks were lost. Text labels and arrows on these photos now save normally, everywhere photos can be marked up (customers, properties, sites and site walks).
Saving a customer with a too-long field says which field (request #38)
- Pasting a long block of text (for example an agreement summary) into a short box like Property owner used to stop Save customer with "Internal Server Error". Now the message names the field and its limit, for example "Property owner is too long (max 255 characters)".
- Short boxes on the customer add and edit forms (customer name, property name, owner and manager, address, contact and billing account) also stop taking text at their limit. Longer text belongs in Notes, Access rules or the agreement fields, which have no limit.
October 21, 2026
Gate codes, door codes and the tower owner's site ID (request #32)
- A site's Site & Access tab now opens with an Access codes card: every code you need to get in (gate, door, lockbox, key box, or anything else), each with a label like "Outer gate" or "Shelter B" and a copy button. Add as many as the site has.
- Owner site ID (BUN): the tower owner's site number (for example Crown Castle's 6 or 7 digit BUN) has its own field in the site's edit form, shows next to the provider at the top of the page, and can be searched.
- On a phone, the field view shows the site's codes and BUN above its access notes.
- Anyone who can open the site can see its codes; field techs and anyone who can edit sites can add or change them. Codes are stored encrypted and aren't included in exports or in what Claude's connector and the AI assistant can read.
Sectors on multi-sector PtMP radios (request #31)
- PtMP radios with several sectors built in, like the Siklu Terragraph N366 (four 90° sectors in one device), now have their sectors in NetOS. Open the node in PtMP Nodes on a site, property or customer: each sector has a name, azimuth, status (Active, Disabled, or Blocked with a reason), channel, Terragraph polarity and TX/RX Golay codes, and lists the customer links it serves.
- Customer links pick a sector: when an RF link hangs off a multi-sector node, choose which sector. Disabled and blocked sectors can't take links, and a sector with links can't be disabled or blocked until they're moved.
- Every N366 node already has its four sectors (azimuths from the node's azimuth, 90° apart). Channels are blank until you set them, except where they were already listed as S1–S4 carriers (30SM, PCS Broadripple). Each sector's channel shows up in Spectrum like any carrier.
- Admins set how many sectors a model has in Admin → Catalogs → RF systems (Sectors per device). Single-sector radios such as Tarana BNs are unchanged.
October 20, 2026
Folders listed A to Z (request #30)
- Every folder drop-down for photos and documents (uploading, editing a photo, the field view, SharePoint import) and the folder filter above the Photos and Documents lists now show folders in alphabetical order. "No folder" stays at the top and "+ New folder…" at the bottom.
October 19, 2026
xdesign password resets by email
- People can reset their own xdesign password: Forgot your password? in xdesign now sends the reset link through NetOS's email to the person's @xiber.net address. The link works once, for 30 minutes.
- NetOS never keeps the link. It isn't stored in NetOS's email log, and any copy in an error message is blanked out.
- Other email from xdesign still only goes to the addresses on its list (Admin → Notifications).
October 18, 2026
Radio licences on RF links, with renewal reminders
- An RF link's page has a Licences section: the FCC call sign or E-band registration it runs under, the licensee and FRN, status, grant and expiry dates, and frequencies. One licence can cover several links, and a link can have several licences. Cancelled licences stay as history.
- Renewal reminders: 90 days before a licence expires, NetOS gives its owner a task to renew it (or puts it in Up for grabs when it has no owner) and emails them.
- Alerts (Licences): a licence that has expired or expires within 90 days, and an active link still running under a cancelled or expired licence ("Check this link": usually it was replaced and the link needs its new licence linked).
Xiber's cross-connect at NNI and aggregation sites
- A site's page can record Xiber's cross-connect charge (monthly and one-time), or that it's waived, with who approved the waiver, when, and a note (for example "waived per precedent" at the Netrality NNI on W Henry St).
- Carrier quotes for that site use it as Xiber's cross-connect automatically. A quote option can still set its own.
Carrier quotes: all-in and effective monthly cost
- Quotes shows each quote's all-in MRC (carrier MRC + the carrier's or NNI's cross-connect + Xiber's cross-connect) and its effective monthly cost: all-in MRC plus the one-time charges spread over the term. For example, $305 a month with a $52,690 install over 36 months is about $1,769 a month.
- Quotes for the same service, speed and place are ranked by effective monthly cost, cheapest first.
- A missing NRC now shows as Unknown, never $0. It's left out of the effective cost, which is marked so you know.
October 17, 2026
Bonuses you give come from your own Bonusly account
- When you give someone a Bonusly bonus in NetOS (Give Bonusly on the leaderboard or a person's page, or Recognize this work on a photo or record), it now comes from your Bonusly account and your own monthly giving allowance. Before, every bonus came from Stephen's account.
- See what you have left: the bonus dialog shows "You have N Bonusly points left to give this month", greys out amounts you can't afford, and tells you what's left after you send. If your email has no Bonusly account, it says so before anything is sent.
- My Contributions shows your Bonusly balances in the Rewards card: what you have to give (if you can give bonuses in NetOS) and what you've received to spend in Bonusly.
- A Slack reminder: people who can give bonuses get a Slack message on the first weekday of each month with what they have to give and last month's top contributors, and a reminder in the last week of the month if they still have points left.
- Bonuses you give no longer count against the company's monthly NetOS budget. That budget is now only for the automatic milestone rewards (every 500 points), which still come from the company giver account.
October 19, 2026
Designs from XDesign on property, site and customer pages
- Property, site (infrastructure) and customer pages have a new Designs tab. It lists the XDesign designs linked to that record: OSP projects with a priced bill of materials, and network designs.
- Use Link design to pick an OSP project or a network design from XDesign. Each card has Open in XDesign, Refresh (read the latest from XDesign) and Unlink.
- For OSP projects, Pin baseline sets one approved revision as the budget baseline. If that revision still has unpriced items, you must tick that you accept them. The card shows the pinned revision, its total, and a warning if XDesign changed the design after approval.
- Open Revisions and click one to see its bill of materials, the unpriced items, and download the PDF or BOM CSV.
- Prices only show for people with CAPEX visibility; everyone else sees "Prices hidden" and no CSV download.
- Linking and pinning need the new Link XDesign designs permission; viewing needs View XDesign designs.
October 16, 2026
CSV templates for the spectrum imports (request #29)
- Admin → Catalogs → Spectrum & channel list has a CSV template button next to Import CSV. It downloads an example channel table with every column the import reads (name, band, regulatory class, center and width in MHz, IEEE channels, operating class, supported models, technology, notes).
- Both import windows (Import a channel table in Admin and on Spectrum, and Import a carrier inventory on Spectrum) now have a Download template button under the file picker. The carrier inventory template has one BN with two carriers (BN name, serial, site, model, mode, connected, carrier index, center, width).
- Replace the example rows with yours. Headers are matched loosely ("Center (MHz)" works as well as "center_mhz") and extra columns are ignored. Preview still shows what would change before anything is written.
- The customer, circuit and infrastructure imports on the Import page already had their templates.
Reviews: answer steering questions by picking an option
- In Reviews, open an item: steering questions can now be answered by picking an option instead of typing. The recommended answer comes first and is marked Recommended; nothing is picked until you choose.
- Accept all recommended answers at the top of Your answers picks every recommended option at once. Change any of them by choosing again.
- Pick Something else to give a different answer; you then type what's different. Every question also has an optional box to add more detail.
- Your choices are kept in this browser with your typed answers until you send them, and are saved in the same Q/A form as before.
Program: one command center for the monday.com replacement
- New Program link in the menu, next to Reviews. Everyone signed in can open it. It brings together what used to be spread over a progress page, a review page and documents in git.
- The top of the page shows the current phase, the next gate, how many review items are decided, blockers, who we're waiting on and the date of the last update.
- Overview: where the program stands, every phase and gate in a row (done, in progress, next), next steps, blockers, and who we're waiting on for what. Reviewers also see review progress; program admins see a bar per reviewer.
- Updates: every deploy, milestone, decision and document change, newest first. Filter by kind.
- Activity (reviewers): each decision and answer sent in Reviews, with how many questions it answers and a link to the item. A red count on the tab shows new decisions since your last visit, and new ones are marked.
- Resources: links to the explainer, the review pages and NetOS Reviews, grouped by kind. They open in a new tab.
- Documents: the decision log, open questions, the As-Is Specification and the other program documents, shown as formatted pages with a contents list. The long As-Is Specification opens one section at a time.
- Some items are only for reviewers or program admins, and only they see them. Stephen gets a Slack message every 15 minutes, only when reviewers have sent something new.
Photo gallery: browse and search every photo (request #27)
- New Photos link at the top of the menu (desktop and phone). It shows every photo on a site, customer or property, newest first: uploads, photos brought in from SharePoint and site walk photos.
- Search by words: every word has to match the title, file name, caption, tags, folder, the record's name and address, or the AI description of the photo (what it shows, the equipment, text it read). With AI on, type a phrase like "ceragon microwave radio" or "rooftops in wisconsin" and AI turns it into filters (words, state, city, folder) shown as chips you can remove. With no AI set up, the words are searched as typed.
- Filter by state, city, folder, sites/customers/properties, date taken, site walk photos, or photos with their own GPS. The Seen in photos words are the equipment that turns up most often; tap one to add it.
- Map shows each photo where it was taken (red: the photo's own GPS; blue: the record's location). Move the map and press Search this area to list just the photos there.
- Click a photo for a large view: arrows (or the arrow keys) go to the next one, with the date taken, place, folder, tags, AI description, equipment, its finding and site walk, Open original and a link to it on the record's Media tab.
- Photos of signed agreements, rights of entry, invoices and bills, and any photo named like a contract, show only for people with customer revenue access, the same rule as on the record. Everyone else gets the new View photo gallery permission by default (every role, field technicians and read-only users included).
"Add photos" in the top card works again (request #25)
- On a phone, Add photos in the card at the top of a customer, property or infrastructure page now opens Media → Photos with the upload form open and scrolls you to it. Tap Take photo or pick from the gallery. Before, the button changed the address bar but nothing on screen moved.
- The Findings button in the same card now opens the findings list the same way.
- Call contact dials just the number, even when the stored number has an extension or a note after it.
Site IDs: two Ohio markets
- Site IDs can now be reserved in CVG (Greater Cincinnati) and CMH (Greater Columbus), for example CVG-B0001. xdesign picks the market from the site's city; Ohio as a whole isn't tied to either.
Claude's fix for xdesign requests (NetOS side)
- xdesign requests can now get the same treatment as NetOS's: a proposal from Claude, Stephen's one-click Build & ship (same panel, same Slack messages, which say "xdesign"), and a reply when it's live. xdesign's own runner does the work in xdesign, with xdesign's guard rails; it only ever sees xdesign requests.
xdesign can file NetOS requests itself
- When something in xdesign needs a change in NetOS, xdesign now files the NetOS request directly, for the person who asked, linked to its own request. It shows as "Name (via xdesign)", and Claude proposes a fix for it like any other NetOS request. xdesign still can't triage NetOS requests or read ones it didn't file.
Bugs & Requests: Slack when Claude's fix needs you
- Stephen gets a Slack direct message when Claude starts looking at a request (a new request, or someone replied), when a fix is ready for Build & ship, and when a build starts, ships, is held back or fails. Each links to the request.
- The Slack message for a fix that's ready has a Build & ship it link: it opens a short page with the fix and the button, so it's two taps from Slack.
- Claude works on two proposals at once and checks for new activity every 20 seconds, so a new request or a reply isn't stuck waiting behind another one. Builds still go one at a time.
- A reply after a fix shipped (for example "the button inside it doesn't work") now starts a new round: Claude looks again with the reply.
Drop agreements straight into Sales paperwork on a customer (request #26)
- On a customer's Service tab, step 1 of Sales paperwork ("Agreement on file") now has its own upload box. Press Upload the agreement or drag one or more files onto the box; there's no need to go to the Media tab and pick the type.
- Each file is filed as a Service agreement and NetOS reads its terms and price in the background. The checklist and Contract & renewal update by themselves within about half a minute.
- The box stays there after the first agreement, so amendments and extra agreements go in the same way.
- The right of entry upload in step 4 now takes a dragged file too.
Customer and property pages: point of contact at the top (request #25)
- The card right under the page title on customer and property pages now shows the Point of contact: name, a tap-to-call number and a tap-to-email address. On a property it is the property manager's contact; a tenant with no contact of its own shows its property manager's.
- Below it, one overview line: service, capacity, status and property manager (on a property: management company, tenants and active tenants). It shows on phones and desktop.
- On phones, the call button now says Call contact (customers) or Call manager (properties) instead of "Call NOC", and it stays visible when a site has open findings; findings get their own button with a count.
Bugs & Requests: easier-to-read replies
- Replies that use sections, bullets and numbered steps now show as tidy headings, lists and steps, with links as buttons. Emailed copies are unchanged.
- Claude's proposed fix now updates by itself when someone replies on the request after it (for example answering its questions), instead of waiting for "Propose again".
Admin → Users & Roles: buttons fit again
- In the user editor, the "Add", "Assign" and "Generate" buttons and the role row no longer spill out of their boxes.
Direct permissions: grant to many people at once (request #24)
- Admin → Access has a new Direct permissions section. Pick several people (search by name or email) and several permissions (search by name, code or what it allows, grouped by area), choose Allow or Deny, and press Grant once. NetOS says what happened, for example "8 granted, 0 already had it", and the page updates without reloading. Remove direct grants takes the same picks away again.
- Who has this: pick a permission to see everyone who has it directly and everyone who gets it through a role, add people to it, or remove a direct grant with one click.
- Each person's own direct permissions are listed in their user details with a one-click remove, plus Grant permissions to this person.
- Permissions marked human-only (approving review items and Claude's fixes) can be given to named people but never to a role; the role list shows them locked.
Bugs & Requests: Claude proposes a fix, one click builds and ships it
- Every open request now gets a proposed fix from Claude: what's wrong, the plan, the files it would change and any risks. Stephen sees it in a new Claude's fix panel at the top of the request (nobody else sees the panel).
- Build & ship is one click. Claude builds the change in its own copy of NetOS, the tests and checks must pass, then it goes live and Claude replies on the request. If NetOS isn't healthy afterwards it rolls itself back.
- A Guidance for Claude box steers either step ("look at the iPhone upload first", "keep the old label").
- Changes that touch the database layout, money, sign-in and permissions, or server setup never ship by themselves; they're handed to a person.
Photo markup: multi-line text and moving marks (request #23)
- In the photo markup screen, Text now opens a text box right in the editor (no more browser pop-up). Press Enter for a second, third line and so on (up to 10 lines), see the words appear on the photo as you type, then press Add. Cancel or Escape throws the text away.
- New Move tool: drag any mark (text, arrow, circle, box, line or drawing) to a new spot before you Save, with a mouse or a finger. After you add text, Move is selected for you so you can drag the words into place. Tap a text label with the Text tool to edit it again; clear the box to delete it.
- Undo now also takes back a move or a text edit. Multi-line text shows the same on thumbnails, the photo viewer and downloaded copies; older single-line text looks unchanged.
Adding several photos at once (request #22)
- Add photos now says how many photos your phone handed over (for example "6 files selected"), so you can tell right away if the picker only passed one.
- A photo that's already on the record (same file, same size) is held back instead of quietly adding a second copy. Tap Upload anyway if you really want both.
- The two tiles say what they do: Take a photo opens the camera (one shot at a time); Choose from gallery lets you pick several at once.
PtMP nodes can be added from Property and Customer pages (request #18)
- A property's Network tab now has the full PtMP Nodes panel: Add PtMP node, edit and delete, attached to that property (for example a Siklu N366 DN at Milkyway). It replaces the old read-only PtMP Sectors list.
- On a customer's Service tab the same panel now sits near the top, right after the service lines, so it is easy to find.
Reviews: an answer box for each question
- When a review item asks you questions, its page now has a Your answers section right under the claim: each question with its own answer box, plus Anything else (optional).
- Below it, choose Approve, Approve with condition, Reject or Save answers (no decision yet). Your answers are saved with your decision, and everyone reviewing the item sees them under Decisions, question by question. If you approve with questions still unanswered, NetOS asks first.
- The buttons at the top of the page now take you to your answers with that choice ready. What you type is kept in your browser until you send it, so a reload doesn't lose it.
Reviews: confirm how we use monday.com
- NetOS is getting its own sales pipeline and project tracking to replace monday.com. Before anything is built, the people who use monday confirm that NetOS understands it correctly. Reviews (in the sidebar, for the people asked to review) lists what to check: each item says in plain words what we believe, with the evidence one click away.
- Approve, Approve with a condition, Reject (with what's actually true) or Comment. An approval only counts when you are signed in to NetOS with your Microsoft account; it is recorded with your name and time and can't be edited afterwards.
- If an item changes after you approved it, your approval is set aside and the item comes back to you showing exactly what changed.
Reviews: see who has each item and how it's going
- Reviews → All items now shows who each item is assigned to and its latest decision (what was decided, by whom and when, with the note when you hover). On a phone each item is a card.
- Program admins get a Reviewers tab: one card per reviewer with a progress bar (decided out of assigned), counts of approvals, conditions, rejections and comments, their last activity (Eastern time) and their batches. Choose a name to open All items filtered to that person, or pick them in the new Reviewer filter.
October 15, 2026
Start a customer from its signed agreement
- Customers → Start from an agreement (also linked from Sales paperwork): upload the signed agreement, a PDF, Word file or a photo of the signed pages. NetOS reads it, including scans and photos (OCR), and finds the customer's legal name and DBA, each service address, contacts, services and speeds, the price, and the contract terms.
- Each service location then has Review and add customer: the Add customer form opens filled in from the agreement, each field saying where it came from. Check it and save. The agreement is attached to the new customer as its Service agreement, with its terms recorded and confirmed, so the first three Sales paperwork checks are already done.
- Already in NetOS? If a location matches an existing customer (same name, same address or the same Sonar account), NetOS says so. It's this customer: attach the agreement files it there instead, with its terms waiting for you to confirm.
- One agreement with several service addresses becomes one customer per location; NetOS compares their combined MRR with the agreement's total.
- A location at the address of a property NetOS knows is added as a tenant of that property.
Photo markup shows who marked it up and when (request #17)
- Every mark on a photo now records who drew it and when. A marked-up photo says "Marked up by Phil Kerr (Oct 15, 4:31 PM)" in the photo viewer, on site-walk tiles, on the thumbnail's "Marked up" label and in the markup screen.
- When someone adds to a photo someone else marked up, both names show; the earlier marks keep their own name and time.
- Download puts the same line in the corner of the copy, so it travels with the picture.
- Fixed: on a phone, drawing a sideways stroke could swipe the photo viewer to the next photo.
Fixes
- Security: signed agreements, rights of entry, invoices and bills (and PDFs named like a contract), including site and vendor circuit agreements, now open only for people with customer revenue access, the same as the Sales contracts folder. Photos and ordinary documents are unchanged. Sign-in was also tightened so NetOS only accepts who you are from the sign-in service itself.
- Contracts open for everyone who may see them (request #21): documents from the Sales contracts folder (and every other linked folder) now open through NetOS, so Sales can read them even without being given access to the folder in SharePoint or OneDrive. The small "SharePoint" link next to a document still opens the original there, for people who have access.
- Maps switch provider by themselves: if Esri's map tiles stop loading (an Esri outage, or a network that blocks it), every map switches to OpenStreetMap, and satellite views to USGS aerial imagery, with a note saying so. Once a provider has failed, maps opened afterwards start on the backup. "Satellite (USGS)" is also in the Map list on the network map.
- Light and dark maps on record pages no longer show "Map data not yet available" when zoomed in close.
- Sales paperwork, one agreement for several locations: when one agreement is linked to several customers (Reynolds Farm Equipment's three locations), its price is now compared with their combined MRR, not each location's. No location is offered "Set NetOS MRR to" the whole total any more.
- Assign (in Costs to enter, and everywhere else) now opens its form in a dialog over the page. In Costs to enter it used to be cut off by the list, so you couldn't pick a person.
- Radios into a property's buildings count for the property: when a link lands on one of a property's buildings (Glass at Elevator Hill, Milkyway's main building) instead of the property itself, its radio CAPEX and maintenance reserve now still count toward the property and its tenants' split. Before, they were left out.
Notes and markup on photos, right after you upload them (request #17)
- Site walks: every photo on a walk now has a note box right under it (it saves when you click away), so you can describe what it shows without opening the photo later.
- Photos tab: as soon as a photo finishes uploading, the upload list shows a note box for it too.
- Mark up: draw arrows, circles, boxes, lines, freehand and text on a photo to call something out, in red, yellow, white or blue. It works with a finger on a phone. Find Mark up on the walk's photo tiles, next to a fresh upload, and in the photo viewer.
- The photo itself isn't changed: the markup sits on top, shows wherever the photo does (marked-up thumbnails say so), and can be edited again.
- Download in the markup screen saves a copy with the markup drawn in, for emails and texts.
Buildings on a property: tenants in a building, buildings served separately, PtMP between buildings
- Property → Network → Buildings & tenants lists the property's buildings (structures), how each is fed, and the tenants in each. Pick each tenant's building from the list (or on the tenant's Service tab).
- Served separately: tick it on a building fed by its own path from outside, such as a Tarana radio from a base station instead of the campus fiber. Its tenants then take that building's path and costs, not a share of the property's, and their revenue counts on that path. Everyone else in the property keeps sharing its costs as before.
- PtMP between buildings (e.g. Siklu Terragraph): Add a PtMP base node on a building, then Link a building for each one it reaches, picking the remote radio. Each link is a regular RF link, so the hierarchy, costs and maps follow.
Sales paperwork: agreements, terms, money and rights of entry
- Customers → Sales paperwork (in the sidebar) lists every live customer with four checks: the agreement is in NetOS, the terms are confirmed, NetOS's money matches the agreement, and the building's right of entry is on file. Unfinished customers come first, biggest MRR first.
- Customer → Service → Sales paperwork shows the same four checks for one customer, with what to do for each.
- Money check: NetOS now reads the monthly and one-time charges from each agreement (with the words it read them from) and compares them with the customer's MRR and install charge.
- When they differ, it shows both. People with financial edit access can set NetOS to the agreement's figure in one click; a customer Sonar bills is never changed, so ask Billing to fix Sonar.
- When NetOS can't find a price, or an amendment changes it, check it by hand and press Mark as checked with a note.
- Agreements already in NetOS are being read for prices now, a few every few minutes.
- Rights of entry: a new document type, Right of entry. Upload it from the Sales paperwork section (it goes on the building, so it covers every tenant), or file any document as one on the Media tab. Add who granted it and when it expires; an expired one counts as missing. Not needed (e.g. the customer owns the building) takes a reason.
- Properties show their right of entry on the Overview.
- Covered by the agreement: when the customer's own agreement grants entry (common in multi-family bulk agreements), click Covered by the agreement in the right of entry check, optionally noting where it says so. It counts as done.
- The Sales dashboard leads with Paperwork to finish.
October 14, 2026
Businesses nearby: a prospect list around any site, customer or property
- Overview → Businesses nearby: pick a distance (500 ft to 1 mile) and click Find businesses. You get the offices, shops, restaurants, clinics, hotels and more around the record, nearest first, with phone and website where known.
- Businesses that are already NetOS customers, or at an address NetOS already has (likely in a building we serve), are marked. Tick Prospects only to hide them.
- Filter by kind of business, search by name, and Download CSV for a call list.
- Nothing is looked up until you click Find.
Drive times to every site, customer and property
- Overview → Drive times shows how long it takes to drive there from the office (Xiber HQ), with miles and a Directions link to Google Maps.
- From my location adds the drive time from where you are now.
- People with settings access can make any record a starting point (a warehouse, for example) with Use this place as a drive-time starting point on its page.
Search the XOS link matches
- RF links → Match XOS PTP links has a search box at the top. Type a site, hostname, address, serial, IP or RF link name to find the one XOS link you're after instead of scrolling the whole list.
- The tab counts show only the matches, and the page jumps to the first tab with a match.
Path profiles on RF links
- RF link → Overview → Path profile draws the ground between the two ends, the line between the antennas and the radio's clearance zone (the Fresnel zone) at the link's frequency.
- Enter each end's antenna height (feet above the ground) and Save heights and check. The verdict is:
- Clear: at least 60% of the clearance zone is free all along;
- Marginal: line of sight, but tight somewhere (expect fading);
- Blocked: the ground rises above the line.
- NetOS suggests a height when it has a hint, such as the PtMP node's height or a linked parcel's number of storeys.
- The ground data is terrain only: buildings and trees aren't in it, so check those on a site walk or the satellite view.
- Parcel sections now also show the ground's height above sea level.
Click a task to open what it's about
- In My tasks (Dashboard) and on Tasks, a task's title now opens what it's about, such as the feature request, customer or circuit, so you can start on it straight away.
Better address suggestions, everywhere you type an address
- Suggestions as you type now come from:
- NetOS's own sites, customers and properties first, marked "In NetOS";
- then a real address search, ranked near you.
Before, they only matched once an address was nearly complete.
- Use my location next to the address box fills in the street address (and the coordinates) from your phone's GPS. It's handy on a roof or at a building on a site walk.
- Now also on: Site walks → New site walk → It's new, electrical services, and Sonar setup, as well as the site, customer, property and Tarana forms that had it already.
- On phones the suggestions have bigger tap targets (request #16).
Parcels: county land records on sites, customers and properties
- Overview → Parcel on every site, customer and property. Find parcel shows the property lines around the record. Click the right parcel to see its owner and address, then Link this parcel. Pick carefully: several parcels can share a street address (PNC Center's address covers the office tower, a small structure and a hotel).
- What it shows:
- the owner and their mailing address (who to ask about roof rights and access);
- state and county parcel numbers, zoning, use, year built and storeys;
- lot size, assessed values, last sale, opportunity zone and the legal description;
- the property line on the map;
- a link to the parcel in Regrid.
- Regrid charges per lookup, so nothing is fetched automatically. Linking or Refresh uses one Regrid record, and the property-line map uses a few map tiles. The form shows how many records were used this month.
- Owner changes are flagged when a refresh finds a different owner.
- Details clear after 30 days, as Regrid's terms require; Refresh loads them again. The parcel number and link stay.
- Census block (2020) is shown on every record with a location, from the Census Bureau's free lookup, ready for FCC broadband filings.
Recognize work where you see it
- A Recognize button where the work is:
- in the photo viewer (Recognize this work);
- on every completed site walk (Recognize this walk);
- next to Contributed by on site, customer, property, circuit, RF link and provider pages.
It opens the Bonusly form for the person who did the work, with that photo, walk or record already attached as the evidence. The Slack post shows the photos and links straight to the work in NetOS.
- Everyone can see why. An award given for a photo, walk or record shows on it: "Tristan was recognized with +50 Bonusly by Stephen on Oct 14", with the reason.
- Who can give awards: a new permission, Give Bonusly awards, for executives, department heads and other leads. Executives and Super Admins have it. Grant it to others in Admin → Authorization; it doesn't come with the rest of recognition admin (scoring rules, reversing points).
Copy a link to anything
- Copy link in the top bar copies the address of what you're looking at, so you can send someone straight to it. An open photo is part of the address now, so the link opens that photo.
- The photo viewer has Copy link to this photo, and each site walk has Copy link.
RF links: say which building on a property a link lands at
- RF Links → Add or Edit: when a link's end is a property, a Lands at box shows that property's buildings. Pick the building the radio is on (for example Elevator Hill → Glass), or + Add a building… to name a new one: NetOS adds it to the property, links it to the property, and lands the link there.
- Buildings also appear in the endpoint search under Buildings within properties, labelled with their property.
Fixed: drone photos placed at 0, 0
- Photos whose camera had no GPS fix (DJI drones write 0, 0) were placed in the ocean off Africa. NetOS now treats 0, 0 as "no GPS", so the photo takes its site's, customer's or property's location like any photo without GPS. The three drone photos from the PNC Center walk are fixed.
Fixed: a link's hierarchy when its end moves from a customer to a site
- When an RF link's end moved from a customer to a site or building (for example GOLD → GLASS onto the Elevator Hill Glass structure), its site-hierarchy link kept the old customer as well as the new site. It now moves cleanly.
Log site walks in NetOS
- Every site, customer and property has a Site walks tab under Media. New site walk records:
- the date, and who walked it (you, plus anyone else, such as a teammate or building engineer);
- the details: MDF/IDF locations, power (available / limited / none, with notes), mounting and roof access, cable pathways, line of sight, and general notes;
- photos, drone stills and video, KMZ/KML, PDFs and other documents, up to 95 MB each. They're also filed in the record's Site walk photo folder;
- links to bigger files kept elsewhere, such as a drone orthomosaic on SharePoint.
- Save draft while you're still working on it; Mark complete when it's done. Completing a walk earns contribution points: 30, plus 10 for filling in 4 or more details and 10 for 3 or more photos (request #16).
- Site walks in the sidebar lists the latest walks everywhere. New site walk there finds the site, customer or property, or adds it if it isn't in NetOS yet (a new customer or property starts as a prospect), then opens the walk on its page.
- Uploads now accept KMZ, KML and GeoTIFF, and the limit is 95 MB per file (up from 50 MB).
Fixed: moving an RF link's end from a customer to its property
- Editing an RF link to land on a property instead of one of its tenants (for example GOLD → GLASS onto Elevator Hill) no longer fails with "Select only one A endpoint". An old copy of the customer was being kept alongside the new end.
Fixed: search opens the RF link you found
- Search (top bar): clicking an RF link in the results now opens that link's own page. Before, it opened the RF Links list.
Milestone posts show what the person did
- When someone passes a milestone, the Slack post now tells their story instead of showing a GIF:
- one line on what they did since their last milestone (for example "added 9 customers and 5 RF links; filled in or corrected 14 records");
- a collage of up to 4 of their photos from that stretch, one per site where possible;
- a chart of their points by kind of work;
- a link to everything they did in NetOS.
- If NetOS can't build the pictures, the post falls back to the GIF.
Recognize a specific job, with the photos of the work
- Start from the photos. On a site's, customer's or property's Photos, click Select and pick the photos of the job (or open a folder and use Select all shown in this folder). Then click Recognize this work. The Bonusly form opens for the person who sent them in, with those photos attached. The photos must come from one person, up to 4.
- Or from the person. Give Bonusly (leaderboard or their contributions page) now has Evidence of the work: their own photos and documents in NetOS, newest first. Pick up to 4.
- In Slack, the award post shows the reason, the photos, and a link to each one in NetOS, so everyone can see the work and where it lives. A celebration GIF is used only when no evidence is picked.
- An award that never got its NetOS post (unticked, or the post failed) can be posted later: open the person's contributions page, find the award under Bonusly bonuses, and click Post to Slack. A failed post now shows why.
- Milestone posts say the right total. A second milestone now reads "for passing 1,000 NetOS contribution points", not 500 again. The person page says the same.
- About the photos in Slack: so that Slack can show them, each photo attached to an award gets its own long, unguessable link that works without signing in. It serves only a resized copy of that one photo. Every other page and photo in NetOS still needs the Microsoft sign-in.
October 13, 2026
Fixed: adding a user who's already in NetOS
- Admin → Users & Roles → Add no longer fails with "Internal Server Error" when the email already has an account. It now says who it is (for example "Kirra Boyce (kboyce@xiber.net) already has a NetOS account"), so you can find them in the list and change their roles or team, or send the welcome email again.
- Adding someone who was removed restores their account instead of failing, and sends them the welcome email.
A proper welcome email for new users
- When an admin adds someone to NetOS, they now get a welcome email from Stephen. It covers:
- how to sign in to NetOS with their Xiber Microsoft account;
- a link to the new-user guide in BookStack, with step-by-step instructions for signing in there with Login with Microsoft Azure;
- NetOS by the numbers: customers, sites, links, circuits, plus small charts;
- a diagram of how the network hangs together;
- a few "did you know?" tips.
Replies go to Stephen. The email shows no dollar amounts.
- Admin → Users & Roles: each person has Send welcome email (to send it again, or for the first time to someone added before this existed) and Preview. To send it to several people, select them and use Send welcome email in the bar above the table.
Link cross-connects to the circuits they carry
- A circuit's page has a new Cross-connects section listing the cross-connects it runs through at either end, with each one's facility, ID and monthly cost. It also shows the all-in monthly cost (the circuit plus its cross-connects). Example: HE dc1931.ind1.msp1.1 is $680/mo alone and $1,188/mo with the Cologix MIN1 and Netrality Indy Telco cross-connects (request #15).
- A cross-connect's page shows the same section as Carries: the circuits that run through it. One cross-connect can carry several circuits (an NNI's, for example).
- Link a cross-connect lists the ones at the circuit's own facilities first. Unlink removes a link.
- Suggestions: when a cross-connect's notes name a circuit's ID (or the other way round), NetOS suggests the link. Click Link or Dismiss. A dismissed or unlinked pair isn't suggested again.
- The all-in cost is shown for reference only. Margins and serving costs are unchanged.
Fixed: swapping an RF link's ends now keeps the site hierarchy honest
- When you swap a link's donor end and the hierarchy can't follow because the downstream site already has a primary donor, the save now tells you. It names that donor and lets you choose: Make this the primary donor (the current one becomes a backup) or Keep it as a backup donor. Before, the save went through and the hierarchy quietly stayed backwards (request #13).
- Network review now lists links whose hierarchy still points the old way, with the same two choices.
- Make this the primary donor and Keep as backup now move a backwards hierarchy link to match the link's ends first. If the change can't be made, they say why instead of appearing to succeed.
Make the Dashboard your own: pin and hide cards
- Customize (next to View on the Dashboard) lets you Pin to top the cards you check first and Hide the ones you don't use. Only your Dashboard changes, and each view (Sales, Executive, …) keeps its own setup.
- Hidden cards are listed at the top of the page. Click one to show it again, or use Back to the … layout to undo everything for that view.
- The numbers at the top stay the same when you hide a card.
October 12, 2026
Fixed: PtMP links can land on a property again
- RF Links → Add RF Link → PtMP: the list of endpoints within 10 miles now includes properties, with their tenants' names under each one. Typing a tenant's name finds its building, and the link lands on the property (a tenant's own link is still refused). Before, buildings with only tenants never appeared, so they couldn't be picked (request #11).
- Adding a PtMP link, or saving changes to one, no longer stops at "Select an A facility". A PtMP link's A end is the customer or property, which the form already asks for.
Executives have their own Dashboard: revenue, margins and what's at risk
- The Executive team's Dashboard now leads with the money:
- Billing changes: how Sonar's billing changed NetOS revenue in the last 30 days (billing stopped or resumed, revenue up or down), biggest first. Linking an account or moving a service line counts too.
- Below the margin target: properties and customers losing money or under the margin guideline, with the revenue each needs to reach it. The full list is on Performance.
- Then the other teams' cards that cost or risk money: Down now (customers cut off), Renewals to decide, Live, not billing, No backup path and Being built.
- The numbers at the top: monthly revenue (and active customers), the net billing change over 30 days, customers cut off right now, and how many are below the margin target.
- People who can't see revenue get counts instead of amounts, and no margins.
Engineering has its own Dashboard: where the network is fragile
- The Engineering and Transmission Engineering teams' Dashboard now leads with:
- No backup path: sites whose loss alone would cut customers off, with the revenue behind them. A customer with a backup donor somewhere else doesn't count.
- Sold vs capacity: for each RF link and circuit, the speed sold to the customers behind it against the link's capacity, highest first. Some oversubscription is normal. Backup links show what they would carry if the primary failed.
- Spectrum to check: nodes and links sharing carriers. Conflicts come first, then pairs NetOS can't tell about (often an azimuth of 0° that may be a placeholder).
- Reviews and matches: network review, XOS link matches, Tarana radio matches, monitoring device suggestions and equipment prices, each with its count and a link to the page that works it.
- The numbers at the top: sites with no backup, links sold past capacity, spectrum conflicts (and pairs to check), and reviews waiting.
October 11, 2026
Break/Fix has its own Dashboard: what's down, ranked by who it affects
- The Break/Fix team's Dashboard now leads with outages and alarms, biggest impact first:
- Down now: devices down in the last week, read live from LibreNMS. Each row says how many customers it cuts off (no other way to reach them) and how many are still served another way. The rows with the most customers cut off come first.
- Alarms this week: critical alarms on devices that are still up, from LibreNMS and the Ciena monitoring, and how many customers are behind each one. Alarms that started over a week ago are counted but not listed.
- Down over a week: gear that has been down a long time. Most of it was removed or belongs to a customer that left. Fix it, or stop monitoring it.
- The numbers at the top: customers cut off (and their monthly revenue), what's down now, new alarms in the last 24 hours, and what has been down over a week.
- A site only counts as down when all of its monitored devices are. Otherwise the row says, for example, "1 of 6 devices down".
- Field Operations now uses the same live "Down now" list in place of the old devices-down card, which included gear that had been dead for months.
- If LibreNMS doesn't answer, the Dashboard says so and shows NetOS's last copy.
October 10, 2026
Each team's Dashboard leads with its own work
- The Dashboard now has perspectives. Yours follows your team:
- Field Operations (and Break/Fix): turn-ups coming up, customers with a device down, installs with no closeout report, open findings and go-live checks.
- Project Management (and Xperts): what's being built and when, customers live but not billing, records still to add (by value), and installs with no closeout report.
- Sales: renewals to decide in the next 90 days, expired contracts, automatic renewals to confirm, terms to confirm, and new customers.
- Other teams see the Dashboard as before (General) until their perspective is built.
- A row of numbers at the top says what needs attention. Click a number to jump to its list. Every name in a list opens its record.
- View at the top right shows another team's perspective, and NetOS remembers your pick. Follow my team goes back.
- Admin → Teams can point a team at a different perspective.
- Field technicians can now open the Dashboard. Before, its cards failed to load for them. Network stats, costs and the review backlog stay with the people who could see them before.
- Amounts are only shown to people who can see customer revenue.
October 9, 2026
Add customer from a task fills in the whole form
- Add customer on a "missing record" task now fills in almost everything NetOS already knows about the customer. It reads the contract, the closeout report, the customer's Sonar account, LibreNMS devices and Tarana radios:
- the name, type, status and address;
- the service, its speed and its monthly price;
- the install date and the contract term;
- contacts;
- the map location;
- notes, with static IPs, circuit ID, who installed it and any open issues.
- Each filled field says where its value came from, for example "From the closeout report" or "From Sonar".
- "Check before saving" lists anything that doesn't add up, such as dates that disagree or a contract copy with blank signatures.
- "Found for this customer" lists the Sonar account, devices, radios and documents NetOS found, so you can link them once the customer is saved.
- Saving closes the task. NetOS links the task's closeout report and contract to the new customer and marks the task done.
- After you save, NetOS opens the new customer. Before, the form could open again already filled in, so a second save failed with "Internal Server Error". Saving a name that's already taken now says so plainly. If the customer is already in NetOS, the form warns you before you save.
v2 site IDs are minted in NetOS
- NetOS now hands out v2 site IDs like IND-B0124: the market (IND, DEN, MKC, PHX), the class (B building, T tower or monopole, U other structure) and the next number. A number is never reused, even after it's released.
- On a property, the header shows its site ID. If it has none, Mint site ID picks the market from the property's state and the next free number, and puts it on the property. The property also lists any site IDs reserved for it.
- xdesign proposes IDs for new designs and reserves them in NetOS with Reserve in NetOS. If the proposed one was taken, NetOS offers the next free one.
- Inventory → Site IDs lists every ID handed out, with its property, who reserved it, and Open in xdesign for ones reserved from a design.
Customer renewals: Sales is reminded, auto-renewals are recorded, and they're on the Timeline (request #8, third step)
- Sales owns customer renewals. NetOS has a new Sales team. Customer renewal reminders and alerts go to the people on it. Until someone is added to it (Admin → Users & Roles, team), they go to the Executive team.
- A weekly customer renewal report goes to Sales, on the same day and hour as the circuits' renewal report. It lists the customers whose decide-by date is coming up or has passed, contracts that expired and need a new agreement, and automatic renewals nobody has confirmed. Timeline → Customer renewal report shows who it goes to and a preview; Send now sends it straight away.
- Contracts that renew automatically are renewed automatically. When a term that renews on its own (auto-renew or evergreen) reaches its end with nothing recorded after it, NetOS records the renewal: the next term, for the renewal length, with the same notice and terms. Sales gets an email, and the customer is flagged Renewed automatically until someone checks it and presses Confirm:
- on the customer's header and in Contract & renewal;
- on Customers → Terms to confirm, in a new Renewed automatically tab.
- Customer contracts are on the Timeline. Timeline now shows each customer's current term next to circuits and sites, by customer type (Commercial, MFC, Single family home), with the decide-by date. Use the new Kind filter to see just customers.
- The customer header calls out urgent renewals: Decide by (in red) when the decision is due within 30 days or the notice deadline has passed, and Contract expired when a new agreement is needed.
- The agreement wins. When Sonar and the agreement disagree, the terms come from the agreement.
NetOS reads contract terms from customers' agreements (request #8, second step)
- NetOS now reads each customer's agreements: the Sales contracts linked to the customer, and agreements uploaded to it. From each one it proposes the contract term: when it was signed, when the term starts, how long it is, when it ends, how it renews, the notice it needs and any yearly increase.
- Every value shows where it came from: the words in the agreement and the page they're on. A small tag says how it was found:
- AI and pattern agree;
- Read by AI;
- Pattern match;
- File name and fee table;
- Xiber's standard terms.
- Nothing changes until someone checks it. On a customer's Service tab, Contract & renewal shows a Read from the agreement card. Where the term on file says something different, the card shows it next to the value read (e.g. "now: 7/2/2019").
- Use these terms opens the term form filled in. Choose whether it updates a term already on file or is added as a new one, correct anything, then save. Updating keeps what the term already has (notes, agreement link) unless the agreement says otherwise.
- Dismiss if it's wrong. Copies of the same agreement are settled together.
- Service Orders only carry the length and the signatures. How they renew comes from Xiber's Service Agreement they point to: month-to-month after the term, with 30 days' notice. Those values are marked Xiber's standard terms.
- "The Service Term shall commence upon installation" becomes the customer's install date, plus any days the order adds (e.g. 30).
- Agreements, at the bottom of the same section, lists every agreement NetOS can read for the customer and what it found. Read again reads one again; it takes up to a minute. Uploading an agreement to a customer (filed as a service agreement, or a PDF or Word file named like one) reads it on its own.
- Customers → Terms to confirm has a new Read from an agreement tab, and the Dashboard counts them under Contract terms read from agreements.
- NetOS is reading the 251 agreements already linked to customers a few at a time. More readings appear over the next hour or so.
Fixed: "Past its end date" shown twice on Terms to confirm
- Each row on Customers → Terms to confirm said "Past its end date" (or "No end date") twice. It says it once now.
Bugs & Requests is now the tracker for every Xiber app
- Each request belongs to an app (NetOS, xdesign, more later). Bugs & Requests has app filters (All · NetOS · xdesign), and each request shows a badge for its app.
- Link requests to each other, across apps. A request's new Related section lists its links, and Link a request finds another request by number or title. A link can say:
- relates to;
- blocks (shown as blocked by on the other request);
- duplicates;
- parent of (shown as part of).
For example, a NetOS feature can block an xdesign bug, and both requests show it.
- Other apps can file here for their users. A request filed from xdesign shows the person who wrote it, e.g. "Phil Kerr (via xdesign)", and an Open in xdesign link back to the design. Their replies come through as theirs, and they get the reporter's emails. (The xdesign connection switches on once its account is set up.)
Customer contract terms and renewals (request #8, first step)
- Every customer now has a Contract & renewal section at the top of its Service tab. It records:
- when the agreement was signed, and when the term starts and ends;
- how it renews: automatically, month-to-month, with a new agreement, or evergreen;
- the notice it needs, and the decide by date, the last day to give notice or agree a renewal;
- a link to the agreement.
- Renewals are kept as a history. Record renewal adds the next term, starting the day after the last one ends with the same terms unless you change them. The original agreement stays on record. Amendments can be added too.
- The install date is its own field now. The Service tab used to show the term start as the install date. Customers now have an Install date (in Edit), which starts with the old value. The term dates moved out of the edit form into Contract & renewal. Add as Installing's expected turn-up date is saved as the install date.
- Customer terms to confirm (Customers → Terms to confirm, and on the Dashboard) lists the 220 customers whose terms need a look:
- 76 are past their end date with nothing recorded after it;
- 50 have a length and dates that don't add up. For example, 747 Apartments has a 5-year term from June 2019 that ends in July 2029;
- 94 have no end date.
- The term dates customers already had came in as unconfirmed terms. Press Confirm once one has been checked, or fix it and save.
- 20 of them had their length in months typed into the years field, so it read "36 years". Those now say 36 months (120 for Edgewater Apartments).
- Pacers' end date of 1/1/1970 was a placeholder, so it was dropped.
- Each correction is noted on the term.
- Next: NetOS will read the terms from the agreements in the Sales contracts library, then remind the account owner ahead of each renewal.
Fixed: IP Transit circuits counted as cost without revenue
- On the Revenue Reconciliation dashboard, a circuit typed IP Transit showed under Cost without revenue, because only DIAs bought for internet were recognised as transit. IP Transit circuits are now left out, like IX ports and cross-connects.
Tag people on a bug or request so they're kept up to date
- Tag anyone on a request, from Report a problem (the new Tag people box) or from the request itself (People following → Tag someone). Use it to loop in the person who asked for a feature, or someone who needs to know when it's done.
- Tagged people are kept up to date by email: when they're tagged, when the request's status changes (say Planned or Done), and when someone replies. Whoever made the change doesn't get an email about it.
- They can open the whole request: its description, screenshots and replies, and they can reply too. Internal notes stay with triagers and the person working on it.
- Bugs & Requests has a new Following tab with the open requests you're tagged on, and they carry a Following tag in the list.
- Follow or unfollow yourself on any request you can open, with the button on the request. The person who tagged someone, the reporter, the person working on it and triagers can untag people.
Devices from the Prometheus server now show on records, with live health and logs
- NetOS now reads Xiber's second monitoring server, the Prometheus/Grafana stack at 10.10.43.178. It watches 33 Ciena boxes that LibreNMS doesn't poll: 3928s at customer sites and 5144s at towers and core sites.
- They link to records on their own, by the site name Prometheus gives each box. For example, ciena3928-pacers went to Pacers, ciena5144-cci-whitestown to CCI_829072 Whitestown, and ciena3928-indygo1501w to IndyGo 1501 (the 1501 picks it over the other IndyGo records).
- 24 linked themselves.
- 4 have suggestions waiting for someone to confirm: Hickory Recovery 3060 / Hope Bridge, 633WW, KITLEY and ONLINETECH (the Otava box replaced Online Tech's router).
- 5 have no matching record yet: Crossing 5 clubhouse, HCM, Mayer Fabrics, OHC and BSI 1US.
- Review them all on the device review page (Dashboard → Monitoring device suggestions), in the new Prometheus devices tab. You can link a box that has no record from there.
- The Monitoring panel on customer, site, property and RF link pages (now just Monitoring) lists these boxes next to the LibreNMS devices. Each one carries a purple Prometheus tag, its alarm counts and how many ports are up.
- New: Health & logs on every device in a Monitoring panel shows it live:
- up or down, CPU, memory, temperature and power supplies;
- each port, plus optic light levels (RX/TX; below −20 dBm is marked low);
- alerts firing now;
- its latest syslog lines.
It works for LibreNMS devices too wherever the Prometheus server has data on them. On the core routers, the alerts name the customer on each port that's down.
- Login events are counted but not listed: on the Ciena boxes they're the monitoring server signing in every couple of minutes.
- Open in Grafana: every Ciena box now has an Open in Grafana button that opens its *Ciena SAOS — Device* dashboard. It's in the Monitoring panel, on the review page, and in the record's Open in links at the top of the page. To change the address, go to Admin → External links → Grafana device dashboard.
- Equipment CAPEX: the boxes count like any other device once priced. Set prices for Ciena 3928 and Ciena 5144 under Admin → Equipment.
- NetOS checks the Prometheus server every 30 minutes.
October 8, 2026
Milestone rewards are on, and Bonusly bonuses follow Xiber's Bonusly rules
- Milestone rewards now pay out: every 500 contribution points earns 50 Bonusly points, sent each night (up to 3 a month per person) and celebrated in #general.
- Bonuses carry a company value. Xiber's Bonusly only accepts a bonus with one of the company hashtags (#grit, #conscientious, #progress, #mindful, #nimble, #xealous, #wintheday…). The Give Bonusly form now has a company-value picker; milestone rewards use #conscientious (change it under Admin → Recognition → Rewards).
- Amounts match Bonusly: a bonus can be 10, 20, 30, 40 or 50 points, so those are the choices in the form.
- Fixed: NetOS now finds each person's Bonusly name (Phil is @phil.kerr, not @pkerr), so bonuses reach the right person.
Awards are celebrated in Slack
- Every award now goes to #general with a celebration GIF, and the winner is @-mentioned:
- Bonusly bonuses given from NetOS: who gave it and why. The Give Bonusly form has a Post it to #general box (ticked by default) if you'd rather keep one quiet.
- Milestone rewards once they're paid out.
- The Pacer of the Week: every Monday morning, last week's #1 on the leaderboard, with the next two close behind.
- The GIFs are cheetahs (Xander says hi), trophies, confetti and congratulations cards.
- Recognition admins can turn it off or pick another channel under Admin → Recognition → Rewards (Announce awards in Slack).
Give someone a Bonusly bonus from NetOS
- Recognition admins can now send a Bonusly bonus by hand. Use the yellow gift button next to anyone on Leaderboards, or Give Bonusly at the top of their contributions page (click their name on the leaderboard).
- Pick the points and write a reason. Choose 10, 25, 50 or 100, or type any amount. The reason is the message they see in Bonusly. If it has no hashtag, #dataquality is added.
- It comes out of the monthly Bonusly budget, the same budget as the milestone rewards. The form shows how much is left this month and won't send more than that. It doesn't change anyone's contribution points.
- Their contributions page lists the Bonusly bonuses they've received, with who gave each one and why. Only recognition admins see this list.
Circuits: IP Transit, IX and NNI connect at one end, and a new "Peering" purpose
- IP Transit, Internet Exchange (IX) and NNI circuits now work like DIA and Broadband. They connect at one end only: your site is the A side and the carrier or exchange is the far side. The circuit form no longer asks for a Z end or a donor end for them, the circuit page and map show one location, and Alerts stops listing them as "missing a required endpoint". The labels NetOS writes for them drop the "→ Z" part.
- The NNIs already in NetOS lost their Z end. CF/Z at Digital Realty Dallas, ES/BB and Metronet at Indy Telco, and Segra at 910 Telecom each had a Z end in the same building as the A end, holding nothing the A end didn't, so it was cleared. The hierarchy links people added for these circuits are untouched.
- New purpose: Peering. It's what an IX port is for. A new IX circuit gets Peering unless you pick another purpose, and Equinix IX CH1 changed from Internet to Peering.
- Imports and the AI circuit draft follow the same rules. Pasting "Equinix IX port at CH1" drafts an IX circuit for peering, and "transit" means IP Transit.
October 2, 2026
Sonar: "Active Bulk" accounts no longer count as billing
- What was wrong. NetOS counted every Sonar account with "Active" in its status as billing, including Active Bulk (no Upgrade). Those accounts have service turned on, but Sonar never invoices them: another account pays, such as the building's bulk contract or the company account that gets the invoice. Several businesses have one of each, an "Active" account that is invoiced every month and an "Active Bulk" twin that never is. Benge's Ace stores, Women's Care Center and Fishers Imports were linked to both twins, so NetOS counted them twice.
- What NetOS does now:
- Only invoiced accounts count. A customer linked to both twins counts only the invoiced one. Each correction shows under Billing changes with the reason: "Sonar doesn't invoice account #… : another account pays for it."
- Customers linked only to an Active Bulk account keep the amount entered in NetOS until someone links the account that pays. They're flagged Paid through another account on the customer's Sonar section, in Alerts, and in Financial → Revenue reconciliation. The flag names the likely paying account: same name, same address, the next account number, or a company account like IndyGo's PO account.
- Sonar reconciliation no longer counts Active Bulk accounts as unlinked billing, and never suggests one as a High match. The $/mo on its High, Medium and Low tabs now adds up only accounts Sonar invoices; it used to include inactive accounts too.
- Closeout tasks whose Sonar match is an Active Bulk account say "paid through another account" instead of "Live, not billing".
Bugs & Requests: request numbers, and nothing slips through
- Every request has a number: #1, #2 and so on, in the order they came in. It shows in the list, on the request, in the emails and on the owner's task ("Feature request #7: …"). Search for "#7" to find it, and
/requests/7opens it. - Reply waiting. When the reporter writes last on an open request, it says Reply waiting from …. Turn on Reply waiting above the list to see only those; triagers also see the count in Dashboard → Needs review.
- A reporter's follow-up reopens a closed request. If the reporter comments on a request marked Done or Declined, it reopens, the owner's task is back in their queue, and the email says it was reopened.
- Links are clickable in request descriptions and comments, in task notes, and in the request emails.
- For keeping watch:
GET /api/v1/feedback/activitylists every new request, comment, file and status change since a given time, so Claude can check in through the NetOS connector too.
Spectrum & channel list: regulatory columns and CSV imports
- More columns on the channel list: regulatory class (UNII-5, CBRS…), IEEE channels, operating class (131/132) and supported BN/RN models. Low and high edges and Xiber use (which nodes have a carrier on the channel) are worked out live from the carriers. They show on Spectrum → Channel list and in Admin → Catalogs, which now has a filter.
- Import a channel table (CSV) from Admin → Catalogs or the Spectrum page. You see what it would add and change first. Re-importing an updated file changes what changed, and Replace removes the rows the new file no longer has. Carriers on an imported channel's center link to it.
- Import a carrier inventory (CSV, e.g. from TCS) from Spectrum → FW Fleet check. Each BN is matched to its PtMP node by its mapped serial, a serial in the node's notes, or its name. It fills nodes that have no carriers written yet and reports lists someone has edited that differ. Those are replaced only if you tick the box.
Carriers: several channels per PtMP node and RF link
Fernando asked for this in Bugs & Requests. The Tarana BNs run four 40 MHz carriers, and the Siklu DNs run a channel per sector, but a node could hold only one frequency, so the rest ended up in Notes.
- A list of carriers. Each PtMP node and each RF link can now hold a list of carriers. Each carrier has a label (Carrier 0–3, S1–S4…), a center frequency, a channel width, a status (active, planned or disabled) and, optionally, a channel from the new spectrum & channel list.
- On a site's Network tab, a node's carriers show in PtMP Nodes. Carriers… opens the editor; Add PtMP node has it too.
- An RF link's Edit form has a Carriers section, useful for a 2+0 licensed link or a multi-band link. A PtMP link shows the carriers of the node it runs on.
- Frequency and Channel width stay as the first carrier, so existing lists and reports keep working.
- Filled in from FW Fleet. A Tarana BN mapped to FW Fleet gets its carriers from FW Fleet, when it's mapped and after each XOS update, until someone edits them. Fishers North's North sector now shows 5965, 6005, 6545 and 6585 MHz, and its South sector 6205, 6245, 6545 and 6585 MHz.
- NetOS checks the list against FW Fleet and flags any difference, both on the node and in Dashboard → Needs review.
- Use FW Fleet's carriers copies FW Fleet's list.
- The Spectrum page (new, in the sidebar under RF Links).
- Search every carrier by frequency, band and place, for example "which sectors use 6545 MHz in Indianapolis". Show them on the map opens the results on the map.
- Shared carriers lists sectors and links at the same site or nearby whose carriers overlap, and says whether their beams face each other. Fishers North's two sectors share 6545 and 6585 MHz but face 180° apart.
- FW Fleet check compares every mapped Tarana BN with FW Fleet.
- Channel list shows the named channels.
- The map has a Frequency filter, and a site's panel lists its PtMP sectors with their carriers.
- Spectrum & channel list in Admin → Catalogs. It starts with the six 60 GHz Terragraph channels the Siklu DNs use. A carrier on a channel's center links to it by itself.
- For Claude and the API. Carriers can be read and written through the API and the NetOS connector:
carrierson PtMP nodes and RF links, plus the new/api/v1/rf-carriersand/api/v1/rf-channels.
Fixes
- Links to a document open it again. Opening a document from a link, such as a row in My Contributions → History, opened the record's Documents tab but not the document itself. It now opens the document, as photos always did. This includes pictures filed as documents, such as the network design diagrams.
October 1, 2026
New customer type: single family home
- Customers can now be SFH (single family home), alongside Commercial and MFC. Pick it when adding or editing a customer, or in New customer… for an RN.
- A home's Service section asks for what matters for a house: access technology, VoIP/IPTV add-ons and contracted MRR. The building and property fields are left out.
- A home is never a tenant of a property, so the property card stays out of the way.
- Sonar: accounts Sonar types "Res Single Fam Home" are suggested as single family homes when you set them up in NetOS, and residential accounts can now be matched to SFH customers in Reconcile.
- Customer imports accept
sfh(or "single family").
See every RN on a Tarana BN, and bring them into NetOS
- Under each Tarana BN. On a site's Network tab, every Tarana BN in PtMP Nodes now has a row that opens to show the RNs FW Fleet says are connected to it. Each RN shows its name and serial, whether it's online, its SLA and path loss, and where it stands in NetOS:
- Linked: NetOS has its RF link. The customer (or property or site) and the link are one click away.
- Looks like: an RF link already on this BN, often built by hand before FW Fleet was connected, matches the RN. Confirm ties them together, or use Confirm all to do the lot. On the Precedent BN, 8 of the Tom Wood RNs match this way.
- Not in NetOS: shown with the customer it most likely is (Hopebridge, INVST 3535, TWG and others). Link attaches the RN to that customer and builds its RF link.
- Create RF link… links the RN to any customer, property or site, or to an RF link already on the BN. The subscriber radio is picked from the RN's hardware, and you can choose a different one for a property or site.
- New customer… creates the customer endpoint: the customer is placed on the map at the RN's GPS, the RN is attached, and its RF link is built. If a customer with that name already exists, NetOS offers to link to it instead of making a copy.
- New customers come with their Sonar billing. For people with billing access, New customer… checks Sonar for the RN's account, matching on its name, the street number and street in the RN's name (like "Hopebridge_9365" or "TWG 9000Keystone"), and whether Sonar bills it.
- Use this account fills in the customer's name, address and contact from Sonar, and creating the customer links its billing, so its services and MRR come from Sonar from day one.
- When the account is already a NetOS customer (Hopebridge and Midwest Design Group on Precedent), the dialog says so. Link RN & billing to it shows what that does to the customer's MRR first, then links both, so nobody creates a duplicate.
- An account already linked in NetOS points straight to its customer: Link the RN to it.
- Search Sonar looks up accounts NetOS hasn't seen yet.
- See where each RN is. Every RN in the list has a small satellite snapshot of its GPS location; click it to open the NetOS map there. Create RF link… and New customer… open with a map of the RN and its BN, with a line between them and the distance.
- An RN that has failed over to another BN still shows under its home BN, with a note saying where it's connected right now.
- RF links not tied to any RN on that BN are listed at the bottom, so stale or renamed links are easy to spot.
- A Tarana node not yet matched to its FW Fleet BN shows a BN picker, with the BNs at that site listed first; choose one and its RNs appear. Seven of the eleven unmatched nodes already have a likely BN suggested.
- Error messages no longer show a raw web page when a server is unreachable.
September 30, 2026
Folders for photos and documents
- Add your own folders. Photos and documents on sites, customers and properties go into folders from one shared list. Pick a folder when you upload, or choose + New folder… to add one on the spot, and everyone can use it right away. A folder typed on your phone or in a SharePoint import joins the list too. Names match however they're capitalized, so "network design" files into "Network Design".
- Documents have folders now. The Documents tab gets the same folder picker and a folder filter, and each card shows its folder next to the document type.
- Network Design. There's a new Network Design folder. Tristan's 30 transport network design diagrams are filed there as supporting documents.
- A folder filter with counts. The filter lists only the folders that hold something on that record, with how many files are in each. If you upload while looking at a folder, the upload goes into that folder.
- Files land in the right tab.
- A diagram or floorplan uploaded as a document stays under Documents instead of turning up in Photos.
- A PDF picked on the Photos tab is filed as a document, and ones already there now open as PDFs instead of broken pictures.
- The Photos count at the top of each page counts only photos.
- Typing in the photo viewer no longer jumps to the next photo when you press the arrow keys.
- For admins: Admin → Catalogs → Photo & document folders. From there you can:
- rename a folder, and every file in it follows;
- choose whether it's offered for photos, documents or both;
- remove a folder, moving its files to another folder or leaving them unfiled.
Leaderboards and My Contributions: game on
- Today, This week, This month, All time. Leaderboards now has daily and weekly boards alongside the monthly and all-time ones. Days and weeks run on Indianapolis time, and weeks start Monday.
- Meet Xander. Xiber's cheetah mascot joins the pages in the brand's colors. The banner shows the team's points today, this week against a weekly team goal, the best day so far, yesterday's winner and last week's champion.
- The podium and the race. The top three stand on a podium. Everyone shows:
- how far they've moved since yesterday or last week;
- how many points it takes to pass the next person;
- a 7-day sparkline and their streak.
Teams is now a race, with Xander out front.
- Highlights. A live feed of what people are adding ("Josh Taylor added 33 site photos") and badges earned. It shows names and counts only.
- Streaks. Any day with points extends your streak, and weekends never break it. The longest streaks get their own card.
- Xander ranks. Levels are now Cub → Sprinter → Pacer → Cheetah → Blur → Xander. The point thresholds haven't changed. Each rank comes with a daily goal (Cub 20 up to Xander 120). Goals and streaks are for bragging rights and never earn points.
- My Contributions, redesigned:
- your rank ring;
- today against your daily goal;
- this week and this month with your rank on each board;
- your streak, and who you're chasing this week;
- your last two weeks against the goal line, and ways to earn;
- missions, rewards, and a badge collection that shows how to unlock the rest;
- your history grouped by day.
- New badges from the Xiberian values:
- Grit: a 10-day streak;
- Nimble: 25 corrections;
- Mindful: 10 confirmations of other people's work;
- Xealous: 200 points in a day;
- Win The Day: your daily goal on 5 days in one week;
- Pacer of the Week: finishing a week at #1.
Haley, Phil, Josh and Fernando already earned Xealous, and Phil is last week's Pacer of the Week.
- Celebrations. A new rank, a badge, or winning yesterday gets a one-time celebration with Xander. Everyone gets a first look at their Xander rank.
- Monday recap. Early in the week, My Contributions opens with last week: your points, rank, goal days and best day, the team's total, and the champion.
- On the Dashboard. Top contributors takes on the new look, lightly:
- the team's week against its goal;
- top three in podium colors;
- Xander ranks, streaks, and how far everyone has moved.
See the full leaderboard takes you to the whole board.
Feedback is now Bugs & Requests
- Report a problem from any page. Report a problem is in the top bar. It takes the page you're on along with it (a customer's page is named after the customer), so whoever picks it up can open it.
- Screenshots. Paste a screenshot straight into the report with Ctrl+V, drop files onto it, or pick them. You can add more later from the request.
- What kind, where, how urgent, and who. Choose Bug, Feature request, Data fix or Question. The category is guessed from the page and can be changed, or you can type your own. Set the urgency, and pick who should look at it if you know.
- Its own page. Bugs & Requests in the sidebar lists Mine, Assigned to me and Everything, with search and filters for status, kind and category. Each request has a page with its details, screenshots and a conversation.
- Triage. Executives and project managers set the status, urgency, category and owner, add internal notes the reporter doesn't see, and remove tests and duplicates. Needs triage lists what nobody has picked up yet, and the Dashboard counts it under Needs review.
- The owner gets a task. Assigning a request puts it in that person's Tasks. When they mark the task done, the request is done too: their note is posted and the reporter gets an email. Handing the task over moves the request with it.
- Emails. You hear when your request changes status or someone replies. The owner hears about replies and notes.
- Private by default. You see your own requests, and the ones assigned to you, in full. Other people's requests show as one line (title, kind, status), because a screenshot can show anything that was on screen.
Hand a task to someone else
- Hand over. On Tasks → Assigned to me, Hand over… gives your task to someone else. Pick the person and add a note saying why, if you like. They get an email with your note, and the task starts over as open for them.
- Reassign. Whoever assigned a task, and managers, can Reassign… it the same way from Assigned by me or Everyone.
- Nothing gets lost. The task shows who handed it over and their note. The person who first assigned it still sees it under Assigned by me, and so does the person who handed it over.
Convert to property: the building becomes the property
- A customer that's only the building goes away. Convert to property now works on commercial customers too. If the customer is just the building, with no revenue and no Sonar account, everything moves to the property and the customer record is removed:
- its RF links, circuits and monitoring devices;
- its photos, findings, SharePoint links and supporting documents;
- its tasks.
Old links to the customer open the property instead.
- Customers with money stay on as tenants. A bulk MDU contract stays on as the property's tenant, as before. So does a customer with revenue or a Sonar account. The preview says which will happen, and why.
- Two ways to make a property from a customer. On a customer's Property card:
- Convert to property is for a customer that is the building itself.
- Create the building's property is for a business in a building. The new property takes the customer as its tenant, so the customer isn't left outside it.
- 301MASS is fixed. The 301MASS customer is now part of the 301MASS property, along with its three LibreNMS devices. Ivy Hospitality and Ivy Hospitality - Upgrade are its tenants.
Up for grabs: sorted by where each job is
- Each "Add … to NetOS" task now says where the job is:
- Live, not billing (red): built, or signed long enough ago, but Sonar doesn't bill the contract's monthly charge. These are urgent and come first, because it's money we're losing.
- Live, billing (green): Sonar bills it, but NetOS doesn't have the record yet. These are high priority, highest value first.
- Live: built, with no amount on the contract or in Sonar. These are normal priority.
- Being built (blue): signed recently, and no closeout report has come in yet. These are low priority and sit at the bottom.
- Add as Installing. A job that's being built has an Add as Installing button instead of Add customer. It opens Add customer with the status set to Installing. The new Expected turn-up date is filled in from the contract: its start date, or about 60 days after it was signed. The customer is in NetOS as a placeholder until it goes live.
- It moves up by itself. If a job still isn't billing 30 days after its expected turn-up, it counts as live. If Sonar isn't billing it by then, it goes to the top.
- Ended jobs leave the list. If Sonar shows the account ended and the contract term is over, NetOS doesn't raise a task. A task nobody has picked up is cancelled with a note. If Sonar has the account again later, the task comes back.
- Mark it live. When a closeout report comes in for a customer or site that NetOS still has as Installing, Prospect or Planned, a Mark … live and check its billing task goes up for grabs. An Installing customer 30 days past its expected turn-up with no closeout report gets Check whether … is live. Both close by themselves once the record is set to Active.
- Billing alerts wait for the build. "Signed contract not billing" alerts don't fire while a job is being built. They start 30 days after its expected turn-up, and then say when it was due.
- Dashboard. The customers-and-sites-to-add count also shows how many are being built.
- Fewer duplicates. When NetOS reads a closeout report again and finds its real name or address, the old task is closed. It points to the task that replaced it, so the same job isn't listed twice. Xiber staff listed on a report, such as the project manager, are never taken for the customer.
September 29, 2026
What the document libraries find is now flagged
- Dashboard → Needs review → Supporting documents. The Dashboard now counts:
- documents waiting for someone to confirm a match;
- customers and sites to add, from closeout reports and contracts, with how many are up for grabs;
- signed contracts not billing in Sonar;
- addresses that disagree with their documents.
Each count opens the page that works it.
- Alerts → Billing. Each signed contract that Sonar doesn't bill gets a billing alert. That covers customers who aren't in NetOS yet, and customers who are but whose Sonar account bills nothing, or who have no Sonar account at all. The alert says which Sonar account it checked, or that the customer may be billed under another account.
- Alerts → Address. A customer, site or property whose address is in another state than its closeout report or contract gives, or in another city on another street, gets an address alert. A town named two ways, such as Ulen and Whitestown, IN, doesn't count.
- Filter Alerts by category. Click Billing, Address, Map and so on at the top of the list.
- Who sees what. Contract flags and all amounts only show for people who can see billing and customer revenue.
Signed contracts not in NetOS go up for grabs
- Contracts with revenue become tasks. A sales contract with a monthly or one-time charge, whose customer isn't in NetOS yet, now adds an "Add … to NetOS" task to Tasks → Up for grabs, just like a closeout report does. A contract and a closeout for the same address share one task.
- Matched with Sonar billing. NetOS looks for the customer's Sonar account by any account number printed in the contract, then by name and address. The task is worth that account's monthly revenue.
- Not billing yet? If Sonar isn't billing it, the task is worth the contract's own monthly charge and shows Signed contract, not billing in Sonar yet.
- Amounts stay private. Everyone can see and pick up these tasks. Dollar amounts, contract terms and the revenue waiting on the Dashboard only show for people who can see customer revenue. Task notes never include amounts.
- Every service address counts. A contract covering two sites, where NetOS has only one, raises a task for the other one (for example "Add Kinder Morgan (3565 Big 4 Rd.)"). The task is worth that site's share of the contract.
- Tenants too. A contract that matched only its building raises a task for the tenant it names, for example "Add Allegra Print and Imaging (tenant of Pyramids)".
- Price not read? A signed service agreement that lists services still counts even when NetOS couldn't read a price from it. The task shows Price not read from the contract.
- The right Sonar account for customers with several sites. A name alone no longer picks a Sonar account on another street or in another city. For a tenant, the Sonar account must carry the tenant's name, not just share the building's address.
Sales contracts: better reading and matching
- Sales contracts are linked. The shared contracts folder is now a document library called Sales contracts (restricted). NetOS checks it every hour, and new contracts are read and matched to customers, tenants, properties and sites.
- Photographed and scanned contracts are read too. Libraries can now read JPG, PNG, TIFF and HEIC files with OCR. This is on for sales contracts, and off for closeout folders, which are full of site photos. Change it with Also read photos and scans on the library in Admin → Document libraries.
- PDFs whose text is only a stamp or a footer are scanned with OCR too, including the signature page.
- Sonar account numbers count. A contract named like "ActioNet (30010) - Service Agreement.pdf", or one that prints "Account # 30010", is matched to the customer that Sonar account is linked to.
- Suite numbers tell tenants apart. Several tenants can share one building address. A contract that names "Suite 400" goes to the tenant in Suite 400.
- Contract terms on the record. NetOS reads each contract's monthly and one-time charges, term, dates, services and signers. They show as a Contract: line under Supporting docs and on the review page, for people who can see customer revenue.
- A second look before "no match". When nothing matches at first, NetOS tries again using the names, addresses and account numbers the AI read. A match found only this way waits for someone to confirm it.
Field technicians can add photos to customers and properties
- Site photos for field technicians. Field technicians could add photos to sites but not to customers or properties. NetOS refused the upload, because adding a photo counted as editing the customer. They can now add, caption and remove photos and documents on customers and properties too. Changing the customer or property itself still needs edit rights.
- Admins: this is a new permission, Add site photos & documents, in Admin → Users & Roles. Field Technicians, Project Managers and Network Engineers have it, so everyone who could upload before still can.
Tasks up for grabs, from closeout reports
- Up for grabs. Tasks can now wait in a shared pile that anyone can pick up. On Tasks, the Up for grabs tab lists them, highest value first.
- Pick up makes one yours, and Put back returns it to the pile if you can't finish it.
- Executives and project managers can Assign… a task to someone, mark it Not needed, or choose Up for grabs when assigning a new task.
- Closeout reports with no NetOS record become tasks. Every closeout report whose customer or site isn't in NetOS yet adds a task such as "Add Hix Wrecker HQ to NetOS". The task shows the report, the service address and the closeout date. Reports for the same address count as one job.
- Ranked by Sonar revenue. NetOS looks each job up in Sonar. When it finds the account, the task shows it (with Open in Sonar) and is worth that account's monthly revenue. The pile is sorted by that value, and $1,000/mo or more is marked urgent.
- One click to add it. Add customer on a task opens the Add customer form already filled in with the name and address from the report. Once the customer exists, the report links to it and the task closes by itself.
- On the Dashboard, your task card shows how many tasks are up for grabs and how much Sonar revenue is waiting on them.
Supporting documents from SharePoint
- Link SharePoint folders of supporting documents. In Admin → Document libraries, click Link a folder and paste the link to a SharePoint folder of closeout reports, sales contracts, or any other kind of document you name yourself. NetOS reads that folder and every folder inside it on its own. It looks again every 6 hours, or straight away when you click Scan now. Photos, videos and zip files are left out.
- NetOS reads each document and finds what it belongs to. It reads the text of PDFs (scanned ones too), Word, Excel, PowerPoint and e-mail files, then works out which customers, sites and properties each one is about. It uses the names and addresses in the file, its folder and its text, plus the AI model chosen in Admin → AI (Document library matching).
- Sure matches link on their own, but only when the document's name, folder or text backs them up.
- Everything else waits in Supporting docs (in the sidebar), where you can Link, choose Not this one, pick another record, or mark a file as not a supporting document. Once someone decides, NetOS never changes or re-suggests that choice.
- Supporting docs on every customer, site and property. Under Media, a new Supporting docs tab lists the linked documents. Each one opens in SharePoint with your own access.
- Link a document searches the file names, folders and text of every library, so you can find a contract by a street address or a customer name.
- A property also shows its tenants' documents.
- Sales contracts stay private. Libraries marked Restricted (Sales contracts are, by default) are only shown to people who can see customer revenue.
- Claude can do the matching. Admin → AI has a new Anthropic (Claude) choice, if you'd rather the matching ran on Claude than on the current model.
Customers list
- The Customers page opens straight to the list. The Add customer form used to sit open at the top and push the list off the first screen. It now opens only when you click Add customer, in a window with labelled sections. Closing it with unsaved details asks first, and once added you get a link to the new customer.
- A compact, data-dense list. It starts with one line per customer: type, service, location, property, what serves them, contact and MRR, with a totals row at the bottom. Click a column heading to sort.
- Fits the screen: every column, including MRR and the edit and delete buttons, fits without scrolling sideways on a laptop or larger screen. About 20 customers show at once. Text too long for its column ends in "…", and pointing at it shows the full text.
- Detailed view: click Detailed (next to Compact) for the fuller rows.
- Grouping: pick a grouping from the No grouping menu to group the list by type, state, market or city.
- Filters. Narrow the list by type, status, service or access technology, state, market, property (linked or not), serving path (has one or not), and customers whose map location needs fixing. The filters and sort stay in the page address, so you can bookmark or share a filtered list. Clear filters resets them.
- Editing from the list now opens the full customer Edit page.
- Property CAPEX and maintenance reserve can be edited for commercial customers too. Before, they could only be set when the customer was added.
Property form
- The property Edit page matches the site and customer forms. Save and Cancel stay at the bottom of the screen with quick links to each section, and a note shows when you have unsaved changes. Leaving or cancelling with unsaved changes asks first.
- Sections: Profile, Building (tenants, suites, floors), Location, Owner & manager and Access & notes.
- Property type: you pick it from a list (Office, Retail, Mixed use, Multifamily / residential, Industrial, Medical, Other), or choose Custom… to type your own. Types already saved stay as they are.
- Phone field: it brings up a phone keypad.
September 28, 2026
Site and customer forms
- Tidier Edit pages for sites and customers. Save and Cancel now stay at the bottom of the screen, with quick links to each section, so you no longer scroll to the end to save.
- Unsaved changes: a note shows when you have unsaved changes, and leaving or cancelling asks first.
- Sites: the site form is split into Identity, Location, Facility & access, Costs & CAPEX, Agreement & renewal and Links & notes.
- Units: amounts show their units ($, %, months, days, years, Mbps).
- The address suggestions no longer pop open on their own. The "Choose a normalized address" list used to open as soon as a form loaded and cover the State, Postal code and Latitude fields. Now it only appears when you type an address.
- Customer choices read naturally. For example: "MFC (multifamily)", "Active Ethernet", "XGS-PON", "DIA". Customers on Fixed wireless, Fiber or Positron now show that. Before, they showed the first choice in the list, XGS-PON. The add-on service checkboxes line up with the other fields, and Notes has room for more than one line.
RF links
- The Edit button on an RF link page works properly. The edit window used to be squeezed into the top of the page, so most of the form was cut off.
- Now: it opens as a proper window over the whole page. Save and Cancel stay visible while you scroll, and a save error shows inside the window.
- Unsaved changes: clicking outside the window no longer throws away your changes, and closing with unsaved changes asks first.
- Other windows: the same fix applies to Convert to property on customers and Merge provider on providers.
- A clearer RF link form. Every field has a label above it, so you can always tell which number is which. The fields are grouped into Path, Radio, Licensing, Costs and Install & notes.
- Units: amounts show their units ($, Mbps, MHz, months).
- Choices: they read naturally ("PtP", "Active", "Primary").
- Notes: the box has room for more than one line.
- Map colour: there's a colour picker.
Links to other systems
- "Open in" links on every record. Sites, properties, customers, RF links and circuits now show an Open in row under their name. It holds one-click links to the same thing in other systems:
- Sonar: the linked Sonar accounts.
- LibreNMS: the linked devices.
- SharePoint, OneDrive, Teams and monday.com: the record's folder and board links.
- Monitoring and agreement: the record's own monitoring and agreement addresses.
- Several links for one system: when a system has more than one link (a site's 12 LibreNMS devices, say), the button opens a list.
- Open in Sonar everywhere a Sonar account appears. Linked accounts on customer and property pages, Sonar reconcile and revenue reconciliation now have an Open in Sonar button, the same way LibreNMS devices do. Tickets NetOS creates in Sonar from findings link straight to the ticket.
- Admin → External links. This sets where those links go: the address pattern for Sonar accounts, Sonar tickets and (for later) monday.com items.
- Pasting a link: paste the address of any page you have open in Sonar, and NetOS works out the pattern.
- Testing: the Test link checks that it opens the right page.
Speed
- The XOS matches page loads about twice as fast. It takes about 1.5 seconds instead of about 3, with the same matches, and first loads after an update are quicker too.
September 27, 2026
Speed
- No more slow minutes after an update. Right after NetOS was updated, pages could take 2–5 seconds for about two minutes. Each part of the server was redoing the same name-matching work and rebuilding its list of pages.
- Now: that work is done once and shared, so pages are back to normal speed as soon as the update finishes. The "NetOS is updating" pause is also a little shorter.
- Match pages: the Sonar reconcile, XOS matches and Tarana matches pages load in about 1–4 seconds the first time, instead of up to 16.
- The Dashboard's review counts load right away. The "Needs review" card used to take about 8 seconds, because it re-ran the XOS, Tarana and Sonar matching in the background of every visit. It also slowed down whatever else the server was handling at that moment.
- What changed: NetOS now works the counts out every 5 minutes, and the Dashboard just reads them.
- Freshness: a count can be up to 5 minutes behind after you clear items from a queue. The queue pages themselves are always current.
Equipment CAPEX
- Sites and customers now carry their equipment too, and every device is counted once. Each LibreNMS device is counted at exactly one place: the site, property or customer it belongs to.
- How NetOS picks: the record whose name the device carries most specifically wins. "ccr2004.parkwood7" is the Parkwood 7 building's, while "ax2.abstractmodernart" is that tenant's own router. Ties go to the building.
- Radios on RF links: radios on an RF link that has CAPEX stay counted there.
- Changing it: you can change where any device is counted in Admin → Equipment CAPEX. The page also lists every device linked to several records, so you can check each one.
- Site equipment is shared downstream. Equipment counted at a site joins the site's CAPEX (payback and ROI) and depreciates monthly over its useful life, 5 years unless you set another per model, from the date LibreNMS first saw it. You can correct that date per device.
- Who pays: that depreciation is part of the site's cost, so every site, property, tenant and customer it serves carries its pro-rata share. Their Financial tabs show their share of upstream site CAPEX.
- Customers carry their own devices. A customer's own router (or other gear) adds to its build CAPEX. For a tenant it's added on top of its share of the building's equipment, and it counts in the building's build CAPEX too.
- Properties now count the equipment in the building. Every LibreNMS device linked to a property (switches, routers, OLTs and so on) adds its price to the property's build CAPEX. That flows into payback and ROI, and tenants inherit their share by the property's split. Monthly margins don't change.
- Radios on RF links: radios linked to an RF link that has CAPEX entered are counted there instead, so nothing is counted twice.
- Equipment prices live in Admin → Equipment CAPEX. LibreNMS doesn't record what equipment cost, so you enter one price per hardware model (for example, CRS326-24G-2S+).
- Needs a price: the page opens on the models that do: the ones with devices counted at a site, property or customer.
- Special cases: mark a model Not Xiber CAPEX (virtual routers, customer-owned gear). Open a model to give a single device its own price, or exclude it.
- Reminders: the Dashboard's Needs review shows how many devices still need a price. Site, property and customer Financial tabs say when their CAPEX is understated.
- More than one device per property. A property or site now picks up every LibreNMS device in the building (within 50 m) as a suggestion, up to 40, not just devices whose name matches.
- Confirm all: the Confirm all button on the Monitoring section links a building's gear in one click. Suggested devices don't count toward CAPEX until they're confirmed.
Monitoring
- RF links now show only their radios. Routers, OLTs, firewalls and power systems at a link's end used to attach to the RF link too, when their names matched the end's site. Now only radios attach (LibreNMS wireless devices, or the link's radio model); the rest stay with the site or building, along with their CAPEX. Links someone confirmed by hand are kept.
- LibreNMS devices on customer, RF link, site and property pages. NetOS now reads the LibreNMS inventory every 6 hours and links devices to NetOS records on its own. Each Overview tab has a Monitoring (LibreNMS) section showing each device's status (up or down), when it was last polled, its hardware and IP, and an Open in LibreNMS button. On RF links, devices are grouped by end.
- How matching works: NetOS compares each device's LibreNMS location to the record's, and its name to the record's name and address. Radio names that spell out both ends ("Poste to BSI Cinci") tie a radio to the right RF link.
- Confirming matches: confident matches are linked automatically. Less certain ones appear as Suggested, with Confirm and Not this one buttons, so you can link the right device. You can also link a device by hand.
- Reviewing suggestions: the Dashboard's Needs review shows how many suggestions are waiting. LibreNMS device suggestions lists them all.
- At launch: about 200 customers, 330 RF link ends and 50 sites had devices linked automatically.
- Security: NetOS never stores LibreNMS login or SNMP credentials.
- Fewer, better LibreNMS suggestions. Suggestions went from about 1,500 to under 400. NetOS now suggests only fairly strong matches, and at most 3 per record (or per RF link end).
- Shared buildings: a tenant in a shared building is no longer offered every router in the building just because they share an address.
- Search LibreNMS when there's no good match. When a record has no linked device, its Monitoring section opens a search right away.
- Nearby devices: the devices closest to the record are listed first, with their distance.
- Searching: you can also type any mix of name, hostname, IP, location or hardware (for example "poste siklut").
- Linking: pick a device and confirm the link. For RF links, choose the end; the nearest end is preselected.
- No match yet: the LibreNMS review page has a new No match yet tab. It lists customers, RF links, sites and properties that still have no device, each with a Find device button.
Maps
- Map snapshot on every Overview. Sites, properties, customers, circuits and RF links now show a small map of where they are on their Overview tab.
- Two-ended records: circuits and RF links show both ends, the line between them, and the straight-line distance.
- Views: sites, properties and customers open on satellite view (rooftops and towers show clearly); switch between Map and Satellite in the corner. A tenant without its own coordinates shows its building's location.
- Open in Map opens the full map centered on that record, with its details panel open. The View on Map buttons in page headers now do the same (before, they opened the default map view).
September 26, 2026
Costs & margins
- Properties now carry their share of the network that serves them. A property's cost used to count only the RF links and circuits landing on it, so a building fed over a $0 radio showed a 100% margin. Now its monthly cost includes a pro-rata share of every site upstream on its serving path.
- How the share works: at each hop, the building's share of a site is its revenue among everything that site serves, and the shares multiply up the chain. Added up over everything a site serves, the shares come to 100%, so nothing is lost or counted twice.
- Example: Parkwood 7 ($3,224 MRR) is fed Indy Telco → Expedient Carmel → Meridian Mark → INDOT_157 Carmel. It carries:
- 100% of INDOT_157's $185 rent;
- 57.84% of Meridian Mark's $1,125;
- 25.44% of Expedient Carmel's $549 and of the $1,100 dark fiber feeding it;
- 0.88% of Indy Telco's $6,000.
That comes to $1,307.95/mo. With a $40/mo reserve on its $6,000 radio (8% a year), the margin is 58.2%.
- On the property page: the header's Landed Cost is now Monthly Cost, and Margin is after it. The Commercial tab has a new Cost to Serve section, which shows the hop-by-hop breakdown and why each share is what it is, and a Building ROI section.
- Tenants inherit the building's cost. A new Tenant Split section on the property's Commercial tab divides the building's cost among its active tenants. For each tenant it shows monthly cost, margin, CAPEX share, payback and 5-year ROI.
- Choose how to split it:
- Revenue (the default): every paying tenant gets the building's margin %.
- Bandwidth: by committed Mbps.
- Equal.
- Anyone can preview a split. People who can edit properties can save it for that property with Use this split.
- Each tenant's Financial tab now shows its share instead of "attributed to the property", with the upstream costs listed. For example, Birge and Held is 26.36% of Parkwood 7: $355.38/mo, a $1,581.89 CAPEX share, paid back in 4 months.
- Customers get the same pro-rata share. Every customer is now charged exactly the way properties and site pages are: its serving links, plus its share of every upstream site, hop by hop. This applies on the customer's Financial tab and on the Stats page.
- Why it changed: the old calculation used a direct revenue ratio at each upstream site. It could also give one fixed share to every customer below a site. Across the portfolio it charged customers $81,032/mo of upstream cost, while the sites' pools actually hold $71,207/mo.
- Each row explains its share. Every row under Inherited Shared Costs now says what share of the site it takes and why. For example: "43.98% of Expedient Carmel (Meridian Mark's $5,574 of $12,674) → 25.44% to this customer".
- Circuits on a customer that no serving path uses now count. 48 customers have a circuit or RF link on their record that isn't part of a serving path, mostly off-net broadband and DIA (Spectrum, Comcast, Windstream and others). That's $28,797/mo that didn't show up anywhere.
- It's now in the customer's Direct Serving Cost, and the Financial tab lists each one.
- Example: Pacers' $3,600/mo ES/BB dark fiber.
- Customers with no serving path are flagged. 180 customers billing $130,589/mo have no serving path in NetOS, so they take no share of the network's cost. Their Financial tab now says so. Add the path from the site that serves them to fix it.
- Stats matches the detail pages. Customer and site rows on the Stats page now use the same calculation as the customer, property and site pages.
- See what's below the margin guideline. A new Below guideline page (in the sidebar, under Stats) lists every property, site and customer whose margin is under the guideline, worst first.
- Each row shows its revenue, full monthly cost and margin, plus the revenue it needs to reach the guideline.
- The guideline starts at 50% margin after full cost. People who can change settings can adjust it on that page.
- Each row explains itself:
- New (ramping): in service less than 12 months.
- Backup paths only: a site that carries nothing but backups.
- Non-billing endpoints only: a transit or IX site.
- The site's cost classification (pre-revenue, strategic redundancy, market overhead) where one is set.
- Where else it shows: the Dashboard's Needs review has the counts, and each property, site and customer page shows a callout when it's below.
- At launch: 2 properties, 37 sites and 79 customers were below 50%. Of those, 2 properties, 22 sites and 43 customers are losing money.
- Shared sites say who isn't paying yet. When a site serves locations that earn nothing there yet, Cost to Serve lists them, and lists the backup paths that take no share.
- Example: CCI_873099 Pyramids serves the Pyramids property plus:
- Catapult Technologies, billing $0 since April 15;
- INDOT_1236778 Whitestown, which has no customers yet;
- CCI_815963 Speedway, which only carries Scarborough LakeB's backup path;
- two backup links, Ed_Rose_Avant and Vivio10th.
- Pyramids is the only paying location, so it carries the tower until the others bill.
- Trade value counts as revenue. Some customers pay partly in trade, meaning goods or services worth money each month that Sonar never bills. Catapult and Pacers are examples.
- Where to enter it: the customer's Financial tab has a new Trade value section. Enter the monthly value, what's traded, and optional start and end dates.
- Documentation: upload the trade agreement or any other supporting documents in the same section.
- What it changes: trade value counts as that customer's revenue everywhere NetOS measures economics:
- its margin and ROI;
- its property's tenant split;
- the pro-rata share it takes of the sites that serve it, so a site's other customers carry less;
- the margin guideline.
- What it doesn't change: billed MRR and Sonar reconciliation stay billing-only, and commission is still calculated on billed revenue.
- Entering trade value needs the Edit customer financials permission.
- Heads-up: two buildings now show a negative margin.
- Pyramids: it's the only paying location of the six the CCI_873099 Pyramids tower serves. The others are new, backup-only, or backup links, so Pyramids carries the tower's $2,200/mo rent and upstream share until they bill.
- 965 Emerson Parkway: $200 MRR against $170 upstream share and a $57 reserve on its $8,500 radio.
Fixes
- Updates no longer look like errors. When we deploy new features or fixes, NetOS restarts for a few seconds.
- What you'll see now: instead of "Something went wrong", a NetOS is updating page explaining that nothing is broken and your data is safe. It reloads by itself as soon as we're back, usually within a minute.
- When something really is broken, the page says so and shows a reference code to send us.
- A site's "Agreement" link can no longer break the page. INDOT_157 Carmel's Agreement URL held contact details instead of a link, so clicking View agreement opened a broken page ("Something went wrong").
- A value that isn't a real link now shows as plain text. That applies to agreement, monitoring, provider-portal and Monday links everywhere they appear.
- Saving a new Agreement or Monitoring URL that isn't a web link now asks you to put contact details in Notes instead. An existing value never blocks other edits.
- A mistyped record address now shows "not found" instead of an error page.
- Sections open the way they should when you switch tabs. On detail pages, switching tabs could open a section collapsed or expanded based on whatever sat in the same spot on the previous tab. For example, the property's Cost to Serve opened collapsed. Each tab now opens its sections in their own remembered or default state.
September 25, 2026
Tasks
- Assign tasks to people. Executives and project managers can now assign work to anyone in NetOS. For example, a circuit with no service agreement can go to Haley: "Attach the service agreement".
- Assign is on every circuit, site, customer, property, RF link and provider page, next to Edit. It's also on each item in the Dashboard's Costs to enter.
- Pick the person, a common task (Attach the service agreement, Enter the cost, Verify this record, Add site photos, Build the site and service, Review) or type your own, an optional due date and priority, and notes.
- They get an email with the task and links to it and to the record. You get an email when they mark it done.
- Everybody has a task queue. My tasks is on the Dashboard, right under Top contributors, and there's a new Tasks page in the sidebar. Overdue and urgent tasks come first. Mark a task Start and Done (with a note of what you did), or Reopen it.
- For executives and project managers, the Tasks page also has Assigned by me (reassign or cancel) and Everyone.
Dashboard & Stats
- New Dashboard. The Dashboard now shows who's contributing and what needs attention:
- Contributors: this month's leaderboard, as before.
- Recent adds & changes: the latest 20 changes by everyone, with photo thumbnails and links to the record. Bursts are grouped, e.g. "added 12 photos to Pacers".
- Needs review: open counts for XOS PtP link matches, Tarana RN matches and the network hierarchy review. Billing roles also see Sonar account matches (by confidence and $/mo), billing changes to acknowledge and Sites to build. Each count links to the page that works it.
- Costs to enter: built sites, circuits and connections NetOS has no cost for yet. There were 30 on launch: 23 sites, 5 circuits and 2 connections. A connection covers things like the dark fiber from Gainbridge Fieldhouse to a new Noblesville site built from Sonar. Enter cost opens the record. No cost records an explicit $0 when something really costs nothing, such as owned fiber. It's for users who can edit costs.
- Stats. Everything that used to be on the Dashboard (KPIs, spend by provider, service mix, at-risk and top-cost lists, strategic investment, renewals) moved to the new Stats page, right under Dashboard in the sidebar.
Network links
- Structures & links within a property. A property's Network tab has a new Structures & links within this property section, for campuses and multi-building properties.
- New structure adds one of the property's own structures, such as a rooftop, an MDF/IDF room or another building, at the property's address.
- Add link connects a structure to another structure, or to the property itself (where the tenants are served), by fiber, copper/Ethernet, cross-connect, PtP wireless or microwave. You can mark it as a backup path. Its cost can be No cost (in-house cabling), a monthly amount, or Not known yet, which puts it on the Dashboard's Costs to enter.
- The links become part of the network hierarchy, so the property's serving path runs through its own structures (e.g. donor tower → Building A rooftop → Building B MDF → the property).
- Guard: a site that *feeds* the property from outside (like CCI_873099 Pyramids for the Pyramids property) can't be attached as one of its structures, because that would cut the property's serving path. Connect it with an RF link, circuit or cross-connect instead.
- Cross-connects between a site and a property now carry the serving path. A cross-connect used to be treated as inside one facility and never joined the network hierarchy. One that joins two different NetOS records at the same structure is a real hop, for example CCI_873099 Pyramids (tower site) → Pyramids (the property on the same building). The property now gets its serving path from the site, and NetOS uses the site end as the donor automatically. A cross-connect within a single site still stays out of the hierarchy. The circuit form now shows the donor-end control for cross-connects too.
- Link capacity on the serving path. The serving path diagram on customer, property and site pages now shows each link's capacity under its name, e.g. 10 Gbps on an E-band hop or 1 Gbps on a circuit. The figure is the bandwidth recorded on the circuit or RF link. Hovering "+ N parallel links" lists each parallel link with its capacity too. A hop with no bandwidth on its circuit or RF link shows no figure.
- Multi-band links. When an E-band link and a licensed microwave link run in parallel on the exact same path, NetOS now labels both as a Multi-band link. The microwave backs up the E-band: when rain fade brings the E-band down, traffic switches automatically to the microwave and the path stays up. It's a high-capacity, high-availability setup.
- Where you'll see it: a violet Multi-band badge beside both links in the RF links table and wherever an RF link appears on site, customer and property pages. Hover it for the capacity and backup speeds and the paired link.
- On the RF link page: a Multi-band link panel shows both halves (E-band for capacity, licensed microwave as the rain-fade backup), each with its radio, frequency and speed.
- How it's detected: automatically, from each link's frequency (E-band is 71–86 GHz; licensed microwave is 6–42 GHz, excluding unlicensed 24 GHz), its radio model or its licensed flag. Both links must be active and connect the same two sites.
- Today that's CCI_812093 Evansville ⟷ The Timbers: an Intracom GX80 at 10 Gbps backed by a SAF Integra-X at 2.2 Gbps.
Costs & margins
- Backup paths no longer pick up a share of a site's costs. A customer's backup (secondary) connection to a site used to take a share of that site's facility and transport costs. That share could be large: when none of the site's other connections carried revenue, its costs were split evenly across them. Pacers was being charged a third of the Equinix CH1 data center in Chicago ($2,522/mo) for its backup path there. Backup paths now work like backup links between sites: the backup circuit's own cost still counts, but the site's shared costs follow each customer's primary path only.
- Customers affected: Pacers (−$790 → +$1,732/mo margin), Scarborough LakeB (−$2,959 → +$1,650), Ed_Rose_Avant (−$800 → +$845), Vivio10th (+$7,253 → +$8,898) and PCKRD - The Packard (−$1,958 → −$45).
- Portfolio: attributed cost falls by $9,332/mo, from 56.2% to 58.9% attributed margin. Total network spend is unchanged; the difference now stays with the site as a regional cost.
Billing & Sonar
- Business accounts at a property become tenants. Linking a commercial Sonar account to a property now adds it as a tenant of that property and links the account to the tenant, instead of adding the revenue straight to the property. For example, "Birge and Held- Parkwood 7" becomes the tenant Birge and Held at Parkwood 7. The tenant's name comes from the account, without the property name. If a tenant with that name (or that Sonar account number) already exists, it's reused. The link preview says what will happen before anything is created. Residential, MDU and bulk accounts still link straight to the property. Set up in NetOS also suggests "tenant of …" when a new commercial account is at a property's address or names it. The one account linked the old way, #37482 Birge and Held at Parkwood 7, has been moved to its tenant.
- Pick what a Sonar line is really billed for. The service type NetOS suggests comes from Sonar's service name and can be wrong. For example, the Noblesville Event Center circuit is dark fiber, but Sonar calls it "Symmetrical Internet", so NetOS suggested DIA. Billing users can now change it:
- In Build site & service (and Set up in NetOS), each service line has a type picker: the suggestion, the NetOS presets, or Custom.
- On the customer's Service tab, Sonar lines have Change type. Use suggestion goes back to NetOS's guess.
- Your choice is kept across Sonar syncs. Sonar itself isn't changed.
- New presets: Dark fiber, Transport (EPL/EVPL), Wavelength and Colocation. Sonar names that mention dark fiber, EPL/EVPL or a wave are now suggested as those types automatically.
- Sites to build. When one Sonar account bills more than one location, NetOS now checks each service line for a matching NetOS site. For example, Pacers' account bills "Gainbridge Fieldhouse Internet Services" and "Noblesville Event Center Circuit", and NetOS had no Noblesville site. Each line with no site becomes a to-do.
- Where to see them: on Alerts ("Sonar bills \$2,500/mo for … but NetOS has no site for it yet"), on the new Sonar reconciliation → Sites to build tab, and in the customer's Sonar section.
- Build site & service: opens the assisted setup, filled in for that one line. The name comes from the line's location, the address from the line (or the Sonar account's service address), and the service and amount from the line. You can place the new site in the network hierarchy. Once it's created, the line's revenue counts at the new site instead of the linked customer.
- Assign here: when an existing customer or property matches the line's location, one click puts the line there.
- It's [the linked customer]: confirms the line is for the linked customer's own location.
- Not a separate site: takes a line off the list, for things like a room in the same building.
- Today's list has 15 lines. Among them: Pacers' Noblesville Event Center (\$2,500/mo), Versol's Milhaus line (\$7,200/mo), and IndyGO and Fishers Imports lines that match existing customers.
- Linked Sonar accounts always get their service lines. The Sonar sync used to fetch service lines only for accounts whose name looked close to a NetOS customer's, so a linked account like "Pacers Sports and Entertainment" (linked to Pacers) showed "0 services" and never took over the customer's revenue. Every linked account now has its lines fetched on the next sync, and right away when you link it.
- Refresh from Sonar. Each linked account in a customer's Financial tab (or a property's Commercial tab) has a Refresh from Sonar button that pulls its service lines and prices immediately. It's available to billing users.
- Find other Sonar accounts. The Sonar section now suggests other Sonar accounts that could be the right billing account.
- How suggestions are ranked: the customer's name appearing in the account name, a matching service address, service lines that mention the location, and whether Sonar bills the account every month.
- When it opens by itself: when the linked accounts bill nothing NetOS can count, with a note explaining why.
- Search Sonar asks Sonar directly for accounts NetOS hasn't seen yet.
- Linking: billing users can link a suggestion in one click. The usual warning appears first if linking would drop the customer's MRR sharply.
September 24, 2026
Billing & Sonar
- Sonar services get a real service type. Services pulled in from Sonar used to come through as "Other" or a generic "Internet/broadband" when NetOS didn't recognise the name. NetOS now reads the Sonar service name and picks the matching type:
- Internet plans ("100 Mbps Internet", "500M/500M", "Symmetrical Internet") become DIA. If NetOS already knew the customer as Bulk internet, that type is kept, unless the Sonar name itself says DIA.
- SD WAN becomes SD-WAN, and "Bulk MDU Services - Data" becomes Bulk internet.
- TV packages become Video/TV; phones, VoIP and fax lines become Voice; Wi-Fi and access points become Managed Wi-Fi; static IPs become Static IP block; and "Managed Security" becomes Managed security.
- Bundles count as their main product, so "Internet & WiFi" or "Internet + Static IP" is internet.
- Charges such as commission, capital recovery and fees get their own labels.
Nothing from Sonar is labelled "Other" or left blank any more. Service lines you've already reconciled were updated, and each customer's primary service now follows them. The service-line type list also gains SD-WAN, Video/TV, Managed security and Fees & charges.
Maps & records
- Maps no longer show "Map data not yet available". The Light, Gray and Dark maps now stop loading new detail past street level and simply enlarge what they have. Switching map styles keeps all your map layers.
- Confirm RF link records. RF link pages now have the Confirm this record chips in the header, like sites and customers.
- Provider facilities. A provider's site with no CAPEX entered now shows "—" instead of "Hidden".
Service providers
- Everything about a provider on one page. Open any provider from Service Providers. The header shows active circuits, monthly and annual spend, early-termination exposure, contracts ending in 90 days, and the downstream revenue its services support (ATT: 9 circuits, \$7,640/mo, supporting \$33,994/mo). The page is organized into tabs:
- Overview: contacts, NOC and escalation, portals, and PeeringDB details.
- Circuits: every circuit, with sites, customer, cost, term and contract.
- Facilities & Power: sites they provide and electrical services.
- Contracts & Terms: early-termination costs and what's ending in 30, 90 or 180 days.
- Quotes & Invoices.
- Financial: spend by service type and state, share of network spend, and any of their costs with no revenue.
- Map.
- Activity.
- Provider map. The Map tab shows where you have service with the provider: circuits, their sites, and the facilities and power they supply. Hover for details and click through to any record. Search by circuit, carrier ID, site, customer or city, and filter by service type, status, state and term end. An optional layer shows where the provider is present according to PeeringDB.
- PeeringDB details. Providers can now be matched to their PeeringDB network to pull in their ASN, website, looking glass, peering policy, NOC and abuse contacts, and internet exchange and facility presence. Name matches are suggestions you confirm under Service Providers → PeeringDB matches. NetOS data you entered is never overwritten.
- No more duplicate providers. A new provider or rename that matches an existing one apart from spaces or punctuation (e.g. "APX " vs "APX") is refused, with a link to the existing record. Admins also get Merge into… to combine two records, which moves every circuit, contract and site.
Network links
- XOS status wherever an RF link appears. RF links with an accepted XOS match now show a small XOS up · 9.9 Gbps badge (red XOS down when XOS reports it down) on site pages (Subtended Network), customer pages (RF links and serving path) and property pages. Hover it for the model, signal and data time; click it to open the link's XOS section.
- Richer XOS section on RF link pages. It now shows the same breakdown as the match review: the XOS path (e.g. Pacers ⟷ 1america), which XOS radio sits at which NetOS end and how far apart, a map, the match checklist, and More from XOS for live radio detail.
- XOS data stays fresh. XOS now updates itself from LibreNMS on its own schedule, so NetOS follows it. Every 30 minutes NetOS checks whether XOS has new data and, if so, refreshes Tarana RN details and point-to-point links right away. Before, it refreshed at three fixed times a day and could lag by up to 12 hours. Both were refreshed just now from XOS's latest update.
- See where an XOS link goes. Each XOS match card now starts with the path as XOS sees it, e.g. "XOS path: Pacers (125 S Pennsylvania St) ⟷ 1america (1 American Square) · 0.76 km". Each radio reads "Radio at Pacers, pointed at 1america". XOS has no site names, so they're read from the radio hostnames, which works for 253 of 270 radios.
- Map on every XOS match. A small map shows XOS's two radio positions (A and B, solid line) with the NetOS link's sites overlaid (A and Z, dashed), so you can see at a glance whether they line up. Toggle between Map and Satellite.
- More from XOS. Click it on any card to pull XOS's live detail: the pairing verdict, each radio's hardware, software version, uptime, last poll and ping, temperature and voltage, radio carrier status, and every port with its speed and current traffic, plus LibreNMS links.
- XOS matches explain themselves. Each card on RF Links → XOS matches now puts the XOS link and the NetOS link side by side, end by end:
- XOS side: each radio is labeled XOS side A or XOS side B (XOS's own order, which doesn't mean donor or downstream), with hostname, address, serial, management IP, connected status, coordinates and a LibreNMS link.
- NetOS side: labeled NetOS Z end · donor (upstream) or NetOS A end · downstream, with the site linked and the distance between the paired ends, e.g. "44 m apart".
- How this match was made: a checklist covering location, direction (including when XOS lists the ends the other way round), path length from both systems, equipment from both, and name similarity, each marked agrees, disagrees or unknown.
- Other possible NetOS links are listed with the same summary so you can pick the right one.
- Equipment conflicts are flagged. If NetOS lists a different radio vendor than XOS, the match can't be High and a parallel link with matching equipment ranks first. E.g. XOS's Ceragon IP-20C between CCI Evansville and The Timbers lines up with NetOS's SAF and Intracom links on that path, but it's probably a third radio NetOS doesn't have yet. Same vendor with a different model shows as a partial match, since XOS's model field can be generic.
- XOS data on point-to-point links. NetOS now reads the PtP microwave and e-band links in XOS (135 Ceragon and Intracom links) and matches them to NetOS RF links, mainly by where both ends are, whichever way round XOS lists them, plus name, radio model and path length. Review them at RF Links → XOS matches (
/rf-links/xos-matches); the first run found 62 High, 21 Medium and 52 Low suggestions. Nothing links until you Accept. A linked RF link gets an XOS section with capacity, signal, frequency, radios, firmware and status, and Apply to NetOS fills only empty fields. Linked links show an XOS badge on the RF Links list.
Everyday use
- Leaner lists. RF Links, Customers and Circuits now load only the columns their tables show. Editing a row fetches its full, current record first. Circuits dropped from 650 KB to about 420 KB and loads in about 0.2 s.
- Fixed: circuit endpoints on the Circuits list now click through. An endpoint links to its site or customer whenever the circuit is placed in the network hierarchy: the donor end to the donor site, the other end to what it feeds. 105 of 212 endpoints link today; the rest belong to circuits still waiting on the review queues.
- Fixed: the Circuits filter and bulk-edit rows no longer run off the side of the screen on laptop-width windows.
- NetOS is faster. The server now handles several requests at once instead of one at a time. Scheduled jobs (syncs, refreshes, emails) moved to their own background service so they no longer slow pages down. The financial waterfall and dashboard calculations were also reworked to avoid repeated work, with identical results. Typical load times: Dashboard 7.7 s → about 1.1 s, Financial 10 s → about 1.9 s, site and Sonar pages about 1 s. Pages can be slower for about 30 seconds right after an update while the server warms up.
- Lighter pages, especially on phones. Site pages used to download NetOS's entire circuit, RF link and customer lists just to fill form dropdowns. Those dropdowns now search as you type, so a site page dropped from 2.5 MB to about 240 KB and loads in about half a second. Mobile/Field went from 3.7 MB to 1.4 MB and shows full details for a site when you tap it. Financial went from 3.6 MB to 1.75 MB.
- Better on phones for the field team.
- Mobile/Field now opens with Sites near me (uses your location) and Recently viewed.
- On a phone, site pages lead with the address and Directions, access info, open findings and a big Add photos button.
- Add photos can open the camera directly and take several shots in one go, with per-photo progress and Retry. If you lose signal, photos wait and upload automatically when you're back online.
- Swipe left/right between photos in the viewer.
- Tabs scroll sideways instead of spilling off the screen.
- NetOS can be added to your home screen like an app.
- Also fixed: a phone-width display glitch on several review pages, and pages that scrolled sideways.
- Photos: create a finding or Sonar ticket right from the photo. Open a photo on a site's Media tab and use the ⋮ menu (or the buttons under Findings). Create finding starts a finding with this photo already attached, with an AI draft option. Create Sonar ticket uses the photo's existing finding or creates one first. The photo also lists the findings it's evidence for.
- Photo tags. Add tags like "antenna", "damage" or "roof access" to any photo; press Enter to add one, and tags you've used before are suggested. Tags show on thumbnails, and the Media tab can filter by tag.
- Photo location map shows the ground. The map under Location in a photo's details was nearly blank at rural sites, because the plain map has almost nothing to draw there at close zoom. It now opens on satellite imagery, where you can see the actual building or tower. A Satellite / Map toggle switches views, and you can zoom and pan (Ctrl/⌘ + scroll to zoom). The map also fills the panel width.
- Fixed: the map showed costs to everyone. Circuit, site and RF link costs and customer revenue on the network map now follow the same permissions as the rest of NetOS, so field roles see a dash instead.
Billing (Sonar)
- Assigned lines that aren't billing are flagged, not zeroed. If a customer's only Sonar revenue is service lines assigned to it from an account Sonar isn't billing, the customer keeps its NetOS MRR and is flagged Needs billing review. The flag shows on the Alerts page, in the customer's Sonar section and in revenue reconciliation. From the banner choose Keep NetOS MRR, Move line… or Same as account. Customers with a whole Sonar account linked still drop to \$0 when billing stops.
- Suite lines match the tenant in that suite. Lines like "Suite 122", "Ste 103" or "#1A" are suggested to the tenant customer in that suite at the same building: High when both the building address and the suite match. A suite number is never matched to another building. Tip: suite matching only works once tenant customers have their suite in their address or name (e.g. the 20 customers at 4201 Millersville Rd don't yet).
- Assign individual service lines to sites. One Sonar account can bill several locations. Fishers Imports NE's invoice covers 9550 E 126th St, 4529 W 96th St, 4302 Lafayette Rd and a relay at 12655 Parkside Dr. NetOS now reads the location from each service line and suggests the matching site (here Fishers Imports NE, NW, -4302 and NE 2). On the reconcile card, open Service lines (N locations) and use Use suggestion, Assign to…, Same as account or Accept all suggestions. Each line's revenue then counts at its own customer or property and flows up to the sites serving it. The same drop warning appears before any line moves, and the customer's Sonar section shows lines assigned in from other accounts.
- Convert a building to a property. On a building customer (type "mfc"), use More → Convert to property. NetOS creates the property, makes the customer its bulk tenant with MRR unchanged, and moves the building's feed (radio link, circuit or Starlink) onto the property. Small retail Sonar accounts can then link to the property without a customer record each. A preview shows exactly what will move first; for Union Station it's the Lakota Lakes POP radio link and the Starlink backup. The reconcile page links to this from building cards.
- Warning before a link would wipe out revenue. Linking a Sonar account makes Sonar that customer's revenue source, so linking a small retail account alone to a building customer would replace the building's revenue with just that account's. Link, Link selected and Link to this instead now check first and show the change, e.g. "Union Station Apartments: \$11,309/mo → \$100/mo", with Link anyway, Link only the others or Cancel. For small retail accounts, link them to a property, or link the building's bulk account at the same time.
- Set up in NetOS. For a Sonar account that bills but isn't in NetOS yet, click Set up in NetOS on its card (No match, Low and Medium tabs). A pre-filled form opens and creates the customer, links the Sonar account and places it in the hierarchy in one step. It includes:
- a suggested customer name, type (building or commercial), service address and contact;
- the Sonar services and billing total, with fees and taxes shown but not counted;
- a Possible duplicates check with Link to this instead, which found "The Villager" at the same address as "The Villager- Pool Phone";
- the nearest sites that could serve the customer.
The No match and Low tabs can be sorted by highest billing first. The old Create customer button now links the Sonar account too, instead of leaving an unlinked customer behind.
- Fixed: match card buttons now wrap on phones instead of running off the screen.
- Sonar vs NetOS on every match card. Each suggestion on Billing Reconcile (
/sonar/reconcile) shows what Sonar bills, what NetOS has today, and the difference, e.g. Tom Wood Audi: Sonar \$384/mo, NetOS \$434/mo, −\$50. - Apartment buildings match their customers. Sonar's residential and MDU accounts used to be compared only with NetOS properties, of which there are just six, so building contracts found nothing. They're now also compared with building customers (type "mfc"): Union Station Apartments, GALLERIE, Dublin Square, Raintree and others now match. Words like "Apartments" or "LLC" no longer drive a match, so "Gallerie Apartments" finds GALLERIE rather than Edgewater Apartments.
- Fixed: "Choose another" couldn't find existing buildings. It now searches customers and properties together, and each result says which it is.
- Unpriced accounts keep the NetOS MRR. If Sonar hasn't priced a service on a linked account, the customer keeps its NetOS revenue until the price appears in Sonar; the Sonar section says so.
- Billing access only. The Sonar pages, the revenue reconciliation and billing alerts are now limited to finance and billing roles. A new Billing Specialist role can work the reconciliation without the wider finance analytics, and Billing Reconcile is in the menu for those roles.
- Faster. The reconcile page and revenue reconciliation load in under a second instead of about 18 seconds.
Data cleanup
- Duplicate service providers merged. APX, ATT and VERSO Aerux had each been entered twice (the copies differed only by a trailing space or a comma), so some circuits sat under a copy nobody opened: APX showed no circuits at all. Each pair is now one record. APX has its 3 circuits, 3 contracts, account manager and escalation contacts, ATT has 9 circuits, and VERSO Aerux has its circuit and facility.
September 23, 2026
Network paths & hierarchy
- Cross-connects have no donor. Cross-connects join one service to another inside the same facility, so they no longer take a donor end, never join the site hierarchy, and the circuit form explains this instead of asking for one. Their cost stays with the facility. Two cross-connects that had been entered as site-to-site links became facility cost lines. *CCI_819824 Forest Hills is now fed by its real radio link (Indy Telco → Heyburn → Forest Hills), and Kokomo South by its Metronet EVPL.*
- Fixed: editing a hierarchy link (Subtended Network → edit) saved your change but then showed an error.
- Backup donors added: WACC is now a backup donor for CCI_873869 Southport, and the Indy Telco EVPL a backup for CCI 844497 Precedent (Fishers North stays primary). WACC → Majestic and BSI 1America → Indy Telco went back to the review page as direction conflicts.
- Seven Indy Telco circuits corrected: Cogent VPLS 400N Park Tower, BSI Huntington Center, BSI US Bank Cincinnati, Equinix CH1 and Heyburn; Comcast EVPL Walker Construction; Metronet EVPL Kokomo South. They were recorded as the remote site feeding Indy Telco. They now read Indy Telco → site, so each site shows its upstream path (e.g. Heyburn: Indy Telco → Heyburn). Three unclear ones (400N Park Tower → WOW Data Center cross-connect, Benge's Ace Hardware – Carmel, Kennmar) are on the review page under Circuit donor end for a decision.
- Fewer false review flags: a hand-entered circuit link is only flagged when its donor is wrong, not when its downstream is recorded as a customer instead of a site. Circuits hung under the site they serve ("backhaul") are no longer read as evidence of which end is the donor; that mistake had marked several remote sites as feeding Indy Telco.
- Properties keep their serving path when an RF link moves to them. Moving an RF link from a tenant to its property (the correct method) now updates the hierarchy straight away. A background check also runs every 30 minutes and repairs any customer or property link that has fallen out of step, so a serving path can't quietly go stale. *Fixed Gasoline Alley and Milkyway.*
- Parallel links show once. When two links carry the same hop (for example, Indy Telco feeds BSI 1America over both a circuit and a wireless link), the serving path shows the route once, marked "+ 1 parallel link", instead of two identical-looking paths.
- Direction fixes carry into the hierarchy. Setting a circuit's donor end, or editing or swapping ends on an RF link, now re-points any hierarchy link for it, including links entered by hand earlier. Background checks never rewrite a hand-entered link; they flag it on the review page instead. *Fixed CCI_840782 PCS Broadripple.*
- Approve or promote a path right on the serving path. Each path card has Make primary, and dashed (unconfirmed) paths have Confirm path / Confirm as backup. No trip to the review page is needed.
- More than one donor per site. A site can have a primary donor plus backups (e.g. Majestic Building: GOLD and BSI 1America). The serving path lists every path, numbered, with more than three collapsed. Hierarchy links show Primary / Backup badges with a Make primary button. Revenue and inherited cost flow only through the primary; a backup link's own cost shows as redundancy spend.
- Customer-hosted relays in the serving path. A customer fed by a radio hosted at another customer or property (e.g. Ed Rose Alexandria ← Ed_Rose_Avant) now shows the full chain up to the core.
- Circuits join the hierarchy automatically. Once a two-ended circuit has a donor end, saving it adds it to the donor site's Subtended Network and the serving path, and its monthly cost is counted in margins (+$12,625/mo across 14 circuits that were missing). Circuits that can't be placed automatically go to the review page instead of blocking the save.
- Serving path sections refresh themselves after you add a link on the same page.
Financial
- CAPEX for infrastructure sites. Each site's Financial tab has a new Capital section. Click Add CAPEX to enter what the site cost to build, plus optional salvage value, useful life (default 10 years) and depreciation start date. The monthly depreciation, (CAPEX − salvage) ÷ life, becomes part of the site's cost and flows down the hierarchy to the sites and customers it serves, just like rent. The section also shows payback and ROI based on everything the site serves ("served subtree"), and operating margin both before and after depreciation. The fields are also on the site edit form. The Financial page's Infrastructure Economics table gains Depreciation, Operating Margin, Margin After Dep. and Payback columns. Nothing changes until CAPEX is entered on a site; no site has any yet.
- "Commercial" is now "Financial" on site and RF link pages. Old
?view=commerciallinks still open it.
Billing (Sonar)
- When Sonar stops billing, NetOS stops counting it. If a linked Sonar account is cancelled or goes inactive, its services on the customer close on the next sync, and the customer's revenue and every site above it in the hierarchy update at once. If billing resumes, the services come back. Residential accounts on properties work the same way.
- You're told about every billing change. Each stop, restart or price change on a linked account shows up:
- on the Alerts page (a stop is critical), with the dollar change and the sites affected, e.g. "Sonar stopped billing account #20923 (Cancelled). \$200.00/mo removed from NetOS revenue";
- as a banner in the customer's or property's Sonar section, where accounts that aren't billing are marked "Not billing — not counted";
- on a new Billing changes tab on
/sonar/reconcile; - in an email summary to the admin after each sync.
Click Acknowledge once you've seen a change.
- Revenue reconciliation dashboard. Financial → Revenue reconciliation compares Sonar with NetOS in six sections: coverage, paying in Sonar but missing in NetOS, in NetOS but not billing in Sonar (plus delinquent accounts "at risk"), revenue that never reaches a site, cost without revenue, and price differences. Every name opens its page and each section downloads as CSV. Sections that depend on Sonar fill in as the sync brings accounts in.
- Cost without revenue now skips costs that are regional by design. Cross-connects, IX ports, IP transit (DIA circuits whose purpose is "internet", e.g. the Hurricane Electric and Cogent transit), data centers and aggregation sites are listed under Excluded instead, which took the list from 43 items (\$40,245/mo) to 22 (\$22,237/mo). DIAs bought for a specific customer stay in the list.
- Safer Sonar match suggestions. An account Sonar isn't billing (inactive or disconnected), one with a price NetOS can't read, or one showing \$0/mo is never graded High, even on an exact name match. These show as Medium with a chip explaining why, because linking one would set that customer's revenue to \$0 or undercount it. After the first full sync, 129 High suggestions remain.
- Sync now runs in the background. Sonar only lets NetOS look up about 5 accounts a minute, so a full pass takes a couple of hours. Sync now starts it and returns right away; the page shows "Sync running" and refreshes as accounts arrive. Lookups are paced to stay under Sonar's limit and retry automatically when they hit it.
- Sonar now sets revenue for linked customers. When a Sonar account is linked on
/sonar/reconcile, its recurring charges become the customer's services, each marked From Sonar #id and read-only, and contracted MRR becomes the Sonar total. Fees and taxes are shown but not counted. The customer's hand-entered services are set aside (greyed, not deleted), and the difference between the old NetOS figure and Sonar is recorded at link time. Unlinking the account brings the old services and MRR back. Services refresh after every Sonar sync. - Residential accounts count toward their property. Tenant/MDU accounts linked to a property add to the property's revenue ("Tenants \$X + Sonar residential \$Y") and flow up to the sites that serve it. Each account counts once.
- Sonar section on the customer Financial tab and the property Commercial tab: linked accounts with status, delinquency, recurring revenue vs fees, last invoice and the difference at link, plus Unlink. No accounts are linked yet, so no numbers have changed.
- Sonar billing reconciliation, first step. A new page,
/sonar/reconcile, matches Sonar billing accounts to NetOS customers (business accounts) and properties (residential and MDU tenant accounts, grouped by service address). Suggestions are graded High / Medium / Low with reasons, like the RN matching page. You can Link (several accounts can go to one customer, e.g. Canal Pointe's two accounts), pick another customer or property, Create customer from Sonar account, or mark an account Not a NetOS customer. Only recurring service charges count as revenue; taxes and fees are shown separately. Until the Sonar gateway offers a full account listing, Sync now (interim) looks up each NetOS customer by name, so coverage is partial. Linked accounts will start driving customer service lines in the next step.
Customers
- Service lines. A customer can now have several billed services (DIA, PtP, bulk internet, static IP block, managed Wi-Fi, voice, or your own type), each with bandwidth, MRC, term, status and what it's delivered over (Tarana RN, RF link or circuit). They're in the Services section on the customer's Service tab, for every customer, not just tenants. Contracted MRR is now the total of the active services. Every existing customer's service was carried over as its first line, and total MRR is unchanged.
Tarana
- Match Tarana RNs to customers in bulk — Customer → Service tab → Tarana RN → Match RNs in bulk, the header of Review network links, or go to
/tarana/rn-matches. Every RN in the FW Fleet map not yet attached to a customer gets a suggested customer, graded High / Medium / Low, with the reasons shown as chips: exact or similar name, distance from the RN's GPS to the customer, a street number in the RN's name, or an existing PtMP link on its BN. Up to three alternates are listed, and you can choose any other customer. Accept (or select several and Accept selected) attaches the RN exactly as if added by hand: its telemetry is saved and its PtMP link and serving path are built. Not a customer and Reject suggestion are remembered. First run: 30 High, 43 Medium, 37 Low, 15 with no suggestion. When a customer's stored location is far from the RN, the card says "Location disagrees", which is usually a billing address worth fixing. - Sharper RN match suggestions. After a BN is mapped, a customer's existing PtMP link on it no longer outweighs a real name match: INVST_3535 now suggests INVST 3535 LLC, not a Tom Wood store on the same node. "High" with an existing link needs a strong name or a street number. Note that suggestions never attach anything on their own; an RN is attached only when you click Accept.
- RNs on customers already served from another site attach as a backup path. E.g. 946 MLK is fed by an RF link from 500NM; accepting its Tarana RN used to fail with "Customer endpoint is already attributed to 500NM". The RN's link is now added as a backup. If the Tarana link is actually the main feed, click Make primary on the customer's serving path. A problem building the link no longer blocks attaching the RN.
- Fixed: on the RN matching page, Accept did nothing and "Accept selected" showed 0. Each card now starts with its suggested customer chosen, and High matches are pre-selected.
- Attaching an RN builds its link and serving path automatically. NetOS matches the RN's BN to the PtMP node (by BN serial, then BN name or sector), builds the PtMP link with a compatible subscriber radio, and the customer inherits the BN site's full serving path. *Canal Pointe now shows Indy Telco → BSI 1America → Canal Pointe.* If the BN moves (failover), the link follows. BNs NetOS can't match appear once under Tarana BN mapping on the review page, and a mapping is remembered on the node. Each PtMP node has a Tarana BN field.
- Tarana RN lookup (XOS FW Fleet). On a customer's Service tab, open Tarana RN → + Add RN endpoint to search the fleet by name, serial, site, sector or MAC. The chosen RN's telemetry (connection, BN, SLA, last speed test against baseline and peak, ping, traceroute, path loss, speed-test history) is saved on the customer, with "FW Fleet data as of …" and a Refresh from FW Fleet button. It refreshes automatically about 03:00, 09:00 and 15:00 UTC.
- BSI 1America 6 GHz North node updated to the new G2+ BN (serial S171M2251300060, carriers 5795 / 5870 / 5965 / 6545 MHz), which replaced Alpha North.
Data cleanup
- Old import labels fixed on 43 RF links, e.g. "MJSTC Majestic Building" → Majestic Building, HEYBURN → Heyburn, "INDOT DOT 157 ID 1236775…" → INDOT_157 Carmel. Link direction was kept as-is, so the review flags are still accurate.
Everyday use
- A quieter map. The Map now opens showing only data centers and towers, with no circuits, links, customer sites or properties. Open Layers to turn on what you need; each layer shows its count, and heavy layers load only when switched on. Your choices are remembered and kept in the URL, so a shared link opens the same view. Hovering a site now shows its type, address and counts, and clicking opens a side panel with key details, click-through links and Show connected links, which draws just that site's links.
- Topology retired. The Topology graph was too busy to be useful at today's data volume, so it's been removed from the menu. Old links go to the Map, which is getting sparser defaults and richer details.
- RF link detail pages. Click any RF link name (on the RF Links list, serving paths, hierarchy panels, review pages, customer and property pages) to open its own page: both ends as clickable cards (donor first), equipment and frequency, bandwidth, distance, MRC and tower rent, the hierarchy link it represents with its downstream serving path, any Tarana RN riding on it, documents and history. Edit, Swap ends and View on map are in the header.
- Click-through everywhere. On the RF Links list, the link name, A Loc and Z Loc open their pages. The same sweep covered circuits (label, sites, carrier), sites, customers, properties, electrical services, quotes, map pop-ups, financial tables, review cards, and Admin (users open their contribution history).
- Consistent click-through. Every endpoint or structure name that has its own page now links to it: properties (e.g. Parkwood 7 from INDOT 157), customers, circuits and RF links.
- Add forms stay out of the way. "Add to this site", "Add PtMP node" and photo/document uploads open from a button instead of always being expanded.
- Dashboard first. Dashboard is at the top of the menu and is the landing page.
- Leaderboard opt-out. Admins can hide a user from all leaderboards (Admin → Users & roles, "On leaderboard / Hidden"), and anyone can turn off Show me on the leaderboard on their Contributions page. Hidden users still earn points, levels and badges.
- Fixed: the customer page no longer errors for customers on either end of a customer-to-customer relay.
September 22, 2026
Network links & direction
- Review network links page (
/network/review, linked from RF Links and Circuits). It's styled like the properties review, with tabs for To review / Confirmed / Skipped / Resolved and cards showing the evidence. It covers site hierarchy gaps, link direction checks, circuit donor ends, and circuit hierarchy conflicts, with bulk actions and Re-check. - "Looks right" confirms a link direction and moves it to the Confirmed tab, instead of Skipped.
- Serving path on site, property and customer pages shows the full chain of donors, e.g. Indy Telco → Expedient Carmel → Meridian Mark → INDOT 157 → Parkwood 7.
- RF links between two sites join the hierarchy automatically, with Z as the donor.
- Clear donor/downstream labels on every link form. The donor end (Z) is listed first, with a "feeds" arrow, a live "Donor → Downstream" preview and a Swap ends button.
- Circuits have a donor end. Choose "A feeds Z" or "Z feeds A" on the circuit form, and suggestions come from the site hierarchy where available.
- PtMP links follow the same convention: the AP's site is on Z (donor) and the subscriber on A. All existing PtMP links were corrected.
- Fixed: the customer list's "Donor:" label showed the wrong end of RF links.
Admin & people
- Users & roles table on the Admin page: role chips, one-click Change role, search and filters, bulk role and team changes. Assigning a role someone already has no longer errors, and you can't remove the last Super Admin or your own Super Admin role.
- Functional teams (8 seeded teams) with a team leaderboard.
Contributions
- Daily caps explained. Uploads over the daily cap now show as "Daily cap reached" instead of a silent 0 points. Photo caps were raised to 360 points per user and 120 per site per day.
- Per-user contribution drill-down with links to the records and photos behind each point.
Photos & properties
- Photos inherit the site's location unless they have their own GPS or you set one.
- Properties: RF links and circuits can land at a property; tabbed property page with photos, links and findings; tenants inherit the property's network.
September 17–21, 2026
- Tabbed detail pages for infrastructure and customers, with a sticky header, KPI row and collapsible sections.
- Properties & address scrub: multi-tenant buildings as properties, with a grouping review page at
/properties/review. - Contributions & rewards: points ledger, scoring, leaderboards, verifications, missions, team leaderboards, recognition email, reward ledger, and a top-contributors card on the dashboard.
