For propane & fuel distributors on ADDS

Stop entering ADDS records one at a time.

Energy Tools is a Blazor-based operations toolkit for propane and fuel distributors using ADDS / SmartConnect. Import acquisitions, update pricing, and bulk-edit delivery locations through validated Excel uploads — with full error reporting, retries, and a real-time progress view.

From $4,000/year. Core platform + the extension modules you actually need. No per-seat pricing, no surprises.

In production with active customers Hosted on Azure or self-host Built on .NET 10 & Blazor
[ASSET: hero-screenshot.png]
energy-tools.app / acquisitions / batches / b-2207
Acquisitions
Upload
Templates
Batches
Pricing
Deviator
SLPP
Admin
Users & roles
Audit log
Acquisitions / Batches / b-2207 · Paraco — Q2 acquisition

Batch in progress

Started 2 min ago · Operator: morgan.r
14.7%  ·  Processing account 412 / 2,800
Accounts
412 / 2,800
Tanks
980 / 6,200
Transactions
0 / 14,500
Errors
3
Row
Account
Stage
Status
410
Hartley, R. — Athens OH
CustMaster
OK
411
Vandermark Farms LLC
AddTank ×3
OK
412
Greenfield Propane Co.
UploadTrans
RETRY
407
K. Doyle (resi)
AddWdms
FIELD
The problem

ADDS is powerful. Doing things one record at a time is not.

If you run ADDS, you already know the pattern:

  • Acquisitions take weeks. New customers, tanks, service locations, WDMS meters, opening transactions — each one keyed in by hand, one form at a time, with no preview of what will fail until you hit save.
  • Pricing changes are a quarterly fire drill. Pulling the right tanks out of ARDB, calculating new deviations, applying them to the right price_sub_level / base_price_code combinations, then walking them back into ADDS.
  • Mass updates don’t exist. Need to retag 800 delivery locations? Hope you have a free week.
  • Errors surface late. A bad field on row 47 of a spreadsheet means stopping, fixing, and re-keying everything after it.

Energy Tools was built to do all of this in bulk — validated, audited, and retried automatically — against the same ADDS SmartConnect endpoints your team already uses.

The modules

A required platform, plus the tools you actually need.

Energy Tools is sold as a required Core module plus one, two, or three extension modules. Core is the platform everything runs on — users, roles, audit, hosting. The extensions are where the real work happens: acquisitions, pricing, and plan-price imports. You’ll need Core plus at least one extension to use the product (so $4,000/year minimum, $6,000/year for the full suite).

Required · Core

Core

$3,000 / year

Platform, users, roles, audit, 2FA, hosting. Every Energy Tools customer needs Core.

Always included
Extension

Acquisitions Tool

$1,000 / year

Bulk customer onboarding + delivery location bulk updates.

Extension

Deviator Tool

$1,000 / year

Tank-level price deviation analysis + batch updates.

Extension

SLPP Importer

$1,000 / year

Bulk Service Level Plan Price imports with full audit log.

3.1 · Core Module

The platform every Energy Tools customer runs on.

Required — every subscription includes it.

$3,000
per year

What it is

Core is the Energy Tools chassis — the secure, audited, hosted web application that the three extension modules plug into. It has very little user-facing functionality on its own. Its job is to be the place where your extensions live.

Why it’s a separate SKU

Because the platform is real work and real cost — Azure hosting, identity infrastructure, audit, the connectivity to ADDS and ARDB. Core is what makes Energy Tools a product rather than a script collection.

Why you can’t buy Core alone

Core’s user-facing surface is intentionally small. Without at least one extension, there is nothing to do once you log in. We don’t sell Core by itself because we’d be taking your money without giving you a tool.

What’s included

  • The hosted Blazor application — Azure-hosted Linux web app on .NET 10, with HTTPS / HSTS enforced and antiforgery tokens on every form.
  • User management. ASP.NET Identity with email + password sign-in, password reset, account lockout, personal-data export and delete, and full self-service for the user.
  • Two-factor authentication. TOTP authenticator apps plus recovery codes — turn it on per-user or require it organization-wide.
  • Role-based access. Three role tiers out of the box: SuperAdmin, Admin, User. Extensions check role on every page.
  • Full audit trail. Every record Energy Tools writes is stamped with CreatedBy, CreatedAt, ModifiedBy, ModifiedAt automatically. No code path skips it.
  • Per-extension licensing. Encrypted license flags decide which extension modules are turned on for your tenant — a customer can’t enable an unpaid module.
  • The Azure SQL database, the SignalR progress hub, the SOAP/ARDB connectivity layers, the Polly retry policies. Every extension uses these.
Locked into every suite — visualized in the configurator below.
3.2 · Acquisitions Tool

Move a whole book of business into ADDS in one batch.

Plus bulk delivery-location updates for records already in ADDS.

$1,000
per year

What it does

  1. Template Generator. Produces an Excel workbook pre-shaped for ADDS field types and templates — one sheet each for accounts (CustMaster), delivery locations (tanks), service locations, WDMS metered locations, and opening transactions. Generated from your live ADDS configuration, so columns match your CompanyId’s actual field set.
  2. Acquisitions Upload. Drag in the populated workbook. Energy Tools validates every field against ADDS data types and lengths before it ever calls SmartConnect — bad dates, oversize strings, non-numerics in numeric columns are caught up front.
  3. Acquisitions Batches. Each upload becomes a batch you can review, edit, and execute. Live counters tick up as records land; every row finishes with a status (Completed, CompletedWithWarnings, Failed) and an actionable error message.

Also includes — Bulk delivery-location updates

The same upload-validate-batch pattern, applied to delivery/tank records that already exist in ADDS. Reassign salespeople, change price codes, update deviations, or correct legacy data across hundreds of locations at once. This is the only extension that ships with two distinct tools in one SKU.

“Validate before you commit.”
“One batch, one progress bar, one audit trail.”
“Resume-safe — failed rows are isolated, not catastrophic.”
[ASSET: screenshot-acquisitions-upload.png]
energy-tools.app / acquisitions / upload
Acquisitions / Upload · Paraco_Q2_book.xlsx

Pre-flight validation

2,800 rows · 4 sheets · validated against your live ADDS schema
Valid rows
2,743
Warnings
54
Field errors
3
Row
Field
Value
Issue
47
cust_master.zip
"43055-1242a"
NUMERIC
118
tanks.acq_date
"2025-13-04"
DATE
1,402
cust_master.notes
512 chars
TRUNCATE
2,011
wdms.meter_no
"M-44A-9"
FORMAT

Under the hood

  • Calls AddCustMaster, AddTank, AddService, AddWdms, and UploadTransactions on SmartConnect — the same SOAP endpoints your existing tools use.
  • Account-level primary email is saved via SaveContactInfoWithDocuments with the standard document selections (Statements, Delivery Tickets, Dunning Letters, Delivery & Other Invoices with suppress_print=1).
  • Transactions are uploaded in a single batched call rather than per-row.
  • Configurable account / tank / service / WDMS template IDs (defaults -900 / -901 / -902 / -903) — overridable per batch.
  • ADDS-assigned account numbers are mapped back onto your imported transactions automatically.
  • Polly retry policy on every SOAP call with exponential backoff; per-record failures never kill the batch.
Adds $1,000/yr to your suite total.
3.3 · Deviator Tool

Find the tanks that need a price change. Change them. Move on.

Live ARDB-backed query + Deviator Batches for audit.

$1,000
per year

What it does

The Deviator pulls live data from your ARDB pricing database and lets you slice it down to exactly the tanks that need attention:

  • Filter by acquisition date, division, category, product, sales type, base price code, sub-level, current price, current deviation, deviation date, next-delivery date, degree-day-next, will-call status, ticket-selected status, company-owned vs. customer-owned, and trailing annual volume (Equal / Not Equal / Less / Greater).
  • See the full picture per tank: account, address, division, sales type, current price, current deviation, customer price, effective date, latest ticket-selected date, next delivery date, plus the active Plan Price for both the location and the customer (priority, plan code, $/gal, start/end dates).
  • Auto-computes 2-year trailing annual volume at both account and tank levels — so you can spot whether a price change is worth the conversation before you make it.
  • Save the result as a Deviator Batch. Capture which deviations you applied, when, and why. Browse historical batches from the Deviator Logs page.
[ASSET: screenshot-deviator-filter.png]
energy-tools.app / deviator / query
Deviator / Query

Filtered: 482 tanks

Division=ATH · Sub-level=RES-2 · TAV > 800 gal · Not will-call
division: ATH
sub_level: RES-2
tav: > 800
willcall: no
cust_owned: any
+ add filter
Acct
Customer
Price
Dev.
TAV
1027841
Hartley, R.
$3.49
–0.20
1,240
1027892
Vandermark Farms
$3.49
–0.35
4,820
1027931
Greenfield Propane
$3.55
0.00
910
1027944
Doyle, K.
$3.49
–0.10
880
1027978
Lake View Lodge
$3.55
–0.05
2,140

Why it’s better than spreadsheets

  • The filters compile to direct queries against ACCOUNTS, TANKS, PRICES_DTL, PLAN_PRICE, and TRANS_MAIN — no exports, no manual joins, no stale data.
  • Profit/loss math uses both account-level and tank-level volume, the same way your operations analysts already think about it.
  • Will-call tanks, terminated accounts, and missing price effective dates are handled by the query, not by you remembering to filter them out.
Adds $1,000/yr to your suite total.
3.4 · SLPP Importer

Plan-price updates without the per-customer click-through.

Bulk imports via cPlanPriceService, with row-level logs.

$1,000
per year

What it does

  • Bulk-imports plan prices into ADDS via the cPlanPriceService SOAP endpoints.
  • Every import produces an SLPP Importer Log with row-level detail: which customer/tank, what price, what status, what error if any.
  • Drill from the log list into per-row detail to investigate failures.

Who it’s for

Anyone who currently keeps a spreadsheet of customer plan prices and updates them in ADDS by hand each quarter.

[ASSET: screenshot-slpp-log.png]
energy-tools.app / slpp / logs / imp-0418
SLPP / Logs / imp-0418

Plan price import · Completed with warnings

1,847 rows · cPlanPriceService · operator: morgan.r · 2 min 14s
Updated
1,832
Skipped
12
Failed
3
Row
Account / tank
$/gal
Status
1
Hartley, R. / T-1
$3.29
OK
2
Vandermark / T-3
$3.29
OK
3
Greenfield / T-2
$3.39
SKIP
4
Doyle, K. / T-1
$3.29
OK
5
Lake View Lodge / T-7
$3.49
FAIL
Adds $1,000/yr to your suite total.
How it works

How a batch moves through Energy Tools.

Every batch runs the same path: validated locally, persisted to Azure SQL, then replayed against ADDS through SmartConnect. The processor itself can run in-process for small loads, as a standalone executable for batch boxes, or as an Azure WebJob for high-volume work — same code, three deployment shapes, chosen via a single config setting.

While a batch runs, the browser is connected to a SignalR hub that pushes progress events as ADDS confirms each record. You don’t have to refresh and you don’t have to wonder.

INPUT Excel workbook BROWSER Upload page validates types · lengths · dates vs ADDS schema AZURE SQL · status: Pending Batch + child rows persisted EF Core 10 · retry-on-failure user clicks Execute DISPATCH Batch Execution Service LOCAL MODE AcquisitionsBatchProcessor.exe spawned process IN-PROCESS Runs inside the web app lowest latency WEBJOB MODE Azure WebJob trigger Managed Identity or Basic Auth BATCHPROCESSOR ENGINE Polly retries · per-row error capture ADDS SMARTCONNECT · SOAP / WCF over HTTPS AddCustMaster AddTank AddService AddWdms SaveContactInfo… UploadTransactions SignalR push · live progress + error counts
Integrations & architecture

What Energy Tools talks to.

SystemDirectionProtocol
ADDS / SmartConnect Write (and read for templates) SOAP / WCF over HTTPS
ARDB pricing database
Sybase ASE
Read AdoNetCore.AseClient
Azure SQL Database
Energy Tools’s own data
Read / write EF Core 10
Azure Web Apps Hosting Linux App Service
Azure WebJobs
optional batch processor host
Trigger HTTPS trigger

Tech stack

  • runtime.NET 10 on Linux App Service
  • uiBlazor Server with Telerik UI for Blazor
  • dataEntity Framework Core 10 against Azure SQL
  • realtimeSignalR for live progress
  • resiliencePolly for retry and resilience
  • identityASP.NET Identity with cookies + 2FA
  • ci/cdAzure DevOps Pipelines; multi-target Web App deploys per customer

Deployment shapes

Pick the one that fits how your IT operates. Same code base, three deployment shapes.

Hosted by us
We run Energy Tools in our Azure tenant — fastest path, no IT lift on your side.
Your Azure tenant
We deploy into your subscription; you own the keys, we own the maintenance.
Your data center
Self-host on any Linux box that can run .NET 10 — useful if ADDS lives on-prem and you’d rather keep Energy Tools next to it.
Security & reliability

Built to survive a security review.

Authentication & authorization

  • ASP.NET Identity with cookie-based auth, HSTS, antiforgery tokens on every form.
  • Role-based access: SuperAdmin / Admin / User, plus per-feature flags so a tenant can enable Acquisitions without enabling Pricing (or vice versa).
  • Two-factor authentication (TOTP authenticator apps) with recovery codes.
  • Password reset, email confirmation, account lockout.

Auditability

  • Every domain table inherits BaseEntityCreatedAt, CreatedBy, ModifiedAt, ModifiedBy are stamped automatically on every write from the authenticated user.
  • Every batch records who uploaded it, who executed it, when it started, when it finished, and how many errors it produced.
  • Every external SOAP call is logged with the batch and record context.

Resilience

  • Polly retry policies on every external call with exponential backoff.
  • Entity Framework retry-on-failure for transient SQL errors.
  • Per-record error isolation — one bad row never aborts a 2,000-row batch.
  • Failed rows are captured in dedicated validation-failure tables for review and re-upload.

Hosting

  • HTTPS-only, HSTS enforced in production.
  • Secrets in Azure Key Vault (or App Service application settings) — never in source.
  • Optional Managed Identity for WebJob orchestration (no shared service-account credentials).
Who it’s for

If you recognize yourself here, you’re a fit.

You’ll get the most out of Energy Tools if…

  • You run ADDS / SmartConnect as your customer information system.
  • You make acquisitions — buying small distributors and onboarding their customer books.
  • You run a pricing operation that involves deviations, plan prices, or recurring rate updates.
  • Your team currently does any of the above through the ADDS UI, one record at a time.
  • You have at least one person who knows what cust_master, WDMS, or PRICES_DTL means.

You probably don’t need Energy Tools if…

  • You’re not on ADDS. Energy Tools is purpose-built for the ADDS object model and field conventions; it isn’t a generic CIS tool.
  • You’re a single-truck operation with a few hundred customers. The ROI shows up at scale.
About

Built by engineers who live inside ADDS.

Energy Tools is built and operated by Extra Nerds, LLC — a US-based custom-software shop based in Athens, Ohio, working with businesses since 2005.

  • We know the SmartConnect contracts. Years inside the ADDS object model — the SOAP signatures, the data-type quirks, the failure modes. We’ve hit the edge cases so you don’t have to.
  • Developed with an anchor customer. Energy Tools was built in collaboration with a working propane distributor running it in production today.
  • Small, senior team. You’ll talk to engineers, not account managers.
[ASSET: team-photo.jpg — optional]
Team photo
4 : 5 portrait
Build your suite

Pick the tools you need. Pay for those. Nothing else.

Every Energy Tools subscription includes the Core module (the platform, users, and audit). Add the extension modules you actually need — one, two, or three of them. Change your mind later by emailing us; we’ll prorate.

Build your EnergySuite

Core + at least one extension

Annual subscription · Cancel or change at any time

Core Module Required

Platform, users, roles, 2FA, audit trail, hosting.

Required — every Energy Tools subscription includes it.

$3,000 / yr
Total $3,000/ year
Want to talk first? Book a 30-minute call →
Billed annually. One invoice, one renewal date.
No per-seat pricing. Add as many users as your business needs at no extra cost.
Change your suite anytime. Add or remove extensions mid-term; we prorate.
Your data is yours. Cancel anytime and we’ll export everything Energy Tools holds. ADDS remains your system of record throughout.
Suite configurationAnnual price
Core + 1 extension (any)$4,000
Core + 2 extensions$5,000
Core + 3 extensions (the full suite)$6,000
FAQ

Questions we get from buyers at the configurator.

Pricing & subscription

Core is the platform — the hosted Blazor app, the user management, the audit trail, the database, the connectivity layer to ADDS and ARDB. Every extension module runs inside it. Core has very little user-facing functionality on its own; we don’t sell it standalone because there’s nothing to do with Core alone. Pairing Core with at least one extension is how you get a working tool.
User management (ASP.NET Identity with cookies + 2FA), three role tiers (SuperAdmin / Admin / User), password reset, account lockout, the audit trail that stamps every record with who created or modified it, and the platform itself — the Azure-hosted web app, the database, the SignalR progress hub, and the SOAP/ARDB connectivity layers that every extension uses.
Yes. The minimum configuration is Core + one extension at $4,000/year.
Core + all three extensions = $6,000/year. There are three configurations in between: $4,000 (1 extension), $5,000 (2 extensions), $6,000 (3 extensions).
Annually, in one invoice.
Yes.
No. The price you see is the price for your whole organization, regardless of how many users you create.
A guided demo on your own data is the typical starting point. Use the “Book a 30-minute call” link below to schedule one.
ADDS remains your system of record throughout. On cancellation we export anything Energy Tools holds (batches, validation results, audit records) and hand it over.
Yes. Bulk updates to existing delivery/tank records ship as part of the Acquisitions Tool — same upload-and-batch pattern, applied to records that already exist in ADDS.

Product & IT

Energy Tools calls standard SmartConnect SOAP endpoints (AddCustMaster, AddTank, AddService, AddWdms, UploadTransactions, cPlanPriceService, cContactInfoService, cUtilityService). If your ADDS deployment exposes those endpoints — which is the standard configuration — Energy Tools works.
In an Azure SQL Database dedicated to your tenant. ADDS remains the system of record; Energy Tools stores only the batches, validation results, and audit metadata it needs to operate.
Yes, on any Linux host running .NET 10 with line-of-sight to ADDS and ARDB.
Each row is isolated. A failure on row 47 doesn’t stop rows 48–2,000. Failed rows are flagged with the ADDS error code and field-level descriptions, and you can fix and re-upload just those rows.
Today we support ASP.NET Identity with email + password and optional 2FA. SSO is on the roadmap — happy to discuss your IdP.
Typically 2–4 weeks for a standard ADDS deployment, longer if you want custom field mappings.
The batch state is in Azure SQL, not in memory. The operator restarts the batch from the Batches page; failed and completed rows are not re-processed.
Ready?

From $4,000/year. Configure your suite in 30 seconds.

Build your suite.

Pick your extensions. See the price. Start your subscription.

Minimum $4,000/year (Core + 1 extension). Maximum $6,000/year (the full suite).

Want to talk first?

A $4–6k/year decision is worth a 30-minute conversation. Bring an ADDS person and a question — we’ll walk through how the suite would work on your data, and you can decide afterward.

Talk to us first

Book a 30-minute call.

Tell us a bit about your ADDS setup and which modules look relevant. We’ll get back within one business day with a calendar link.

Or reach out directly
LinkedInextranerds
HoursMon–Fri · 9–6 ET

We typically reply within one business day.