Implementation plan

July 30, 2026 · View on GitHub

Drafted: 2026-07-27. Revised: 2026-07-27, after the primary-source pass closed task 0.1 and turned up a bundled product that changes the shape of the decision.

Scope is one subscriber (D4), hosted PBX (D3), one cellular line (D1), recording in the SIP layer (D2 — under challenge).

Phases are ordered so that nothing irreversible happens until the things that could invalidate the plan have been tested. Number porting and contract exits are the irreversible parts, and they sit in Phase 3, not Phase 1.


The fork this plan now turns on

There are two architectures on the table, and Phase 0 exists to choose between them. Everything after Phase 0 branches.

Route A — bundled, domestic. An Israeli cloud-PBX vendor supplies the cellular SIM as a PBX extension. One subscription holds the mobile number and the PBX, so the personal 05x stays a real mobile number (M3, M3a, M4, M5 all satisfied by construction) while its calls sit inside a system that can record them (S4). This is D1 option (c), and it plausibly takes the business number too — which would close the last open architectural question. It also puts the port-in and the configuration on the vendor rather than on Daniel (M10).

Route B — DIY. One cheap MVNO cellular line for the personal number, Twilio or Zadarma for the business and household lines, recording and retention built over the Recordings API. Fully specified, known assemblable, more moving parts owned personally. This is what the plan assumed before.

Route A is strictly better if it is real. It is unverified, and the way to find out is a phone call, not more research. Route B is the fallback and does not go away — so Phase 0 tests both in parallel and neither track blocks the other.


Phase 0 — Answer the blockers

No money spent, no numbers moved. Any of these coming back wrong changes the plan.

Track A — the vendor call (new, and now the highest-value hour available)

#TaskWhy it blocksDone when
A.1Call Voicenter and work vendor questions §A — one seat for a sole trader; real 05x on a named network; port-in from Pelephone; bank OTP and consumer WhatsAppFour answers decide whether Route A exists at all. Any "no" ends Route A and the plan reverts to B unchangedAll four answered, and A2–A4 confirmed in writing
A.2If §A passes, work §B–§D of the same document — both numbers on one account, recording retention semantics, plain SIP credentials, push while roaming, all-in price, will they build itTurns "the product exists" into "the product does what the spec needs"Scoring sheet filled in
A.3Get a second and third quote — Entersys, Voxia, Telecall, Rimon, Bezeq International, Cellcom BusinessOne vendor is a data point, not a market. Entersys' five-extension minimum is an unsourced "no" worth re-testingTwo more scoring sheets, or a documented "they don't do this"

The single question that matters most is A2: is the SIM extension a real 05x on a real mobile network, and which operator's? The regulation permits a port only between mobile licensees, so if they cannot name the network, the port-in claim cannot be true either.

Track B — the DIY blockers (carried forward)

#TaskWhy it blocksDone when
B.1Test Zoiper push against a Twilio SIP Domain, from a foreign network (VPN exit or a hotspot abroad)Decides whether the incumbent survives or a new PBX is needed; also decides whether the travel scenario works at all. Still the deciding test for Route BA call placed to the DID rings a backgrounded, screen-off handset on a foreign network
B.2Ask the target MVNO: does the plan include roaming, is roaming enabled by default, is receiving SMS abroad freeThe 2FA-while-travelling design depends on itAnswered by the carrier, not by the app or the website
B.3Check whether Israeli mobile-type DIDs exist on Twilio and are SMS-capable—Done 2026-07-30. They do: +972 53x, SMS: true, $15/mo, no address requirement — read from Twilio's AvailablePhoneNumbers/IL/Mobile API, with the re-run command, in the SMS/WhatsApp note

Track C — porting groundwork (applies to both routes)

#TaskWhy it blocksDone when
C.1Ask Pelephone the cost of exiting: early-termination charges, device balances outstanding, notice periodCost and timing of Phase 3Written answer or a call reference
C.2Confirm there is no porting block on the business number§2a of the regulation lets a business subscriber block portability in writing, and §5(a)(4) makes it a valid rejection reason. It would fail the port at the moment it is attempted, silently until thenPelephone confirms no block, or it is lifted

C.1 shrank. The regulation settles what used to be the open part of it: neither a debt nor a live contract can be grounds to refuse a port (§5(a)). The question is only what leaving costs, not whether the numbers can leave.

Then decide

#TaskDone when
D.1Choose Route A or Route B, and record it in decisions.mdDecision written down with the vendor answers that justified it
D.2Settle the business number's fate — second SIM on the same account (Route A), a fixed/07x DID that cannot receive SMS, or a new mobile-type number if B.3 shows one existsRecorded in decisions.md. This is the last unresolved architectural question
D.3If Route A wins, replace D2; if it loses, restate D2 on the better groundsdecisions.md reflects reality
D.4Update costs.md with real quoted pricesThe cost model stops being indicative

Gate: do not proceed to Phase 1 until A.1, D.1 and D.2 are answered. B.1 is required only if Route B wins.

Recommended order of attack: A.1 first — it is one phone call, it is free, and it can collapse the entire fork in twenty minutes. B.1 and C.1 while waiting for a call back. B.3 takes five minutes and should just be done.


Phase 1 — Build the SIP layer in parallel, on new numbers

Everything here is additive. The Pelephone lines keep working untouched, so there is no cutover risk and no rush.

If Route A

  1. Order one seat with the extensions agreed in A.2, on a new number — not yet the ported one.
  2. Have the vendor build the call flows (§D of the vendor questions), or build them in their portal: business announcement → ring group → voicemail → transcription emailed; household ring group, no announcement.
  3. Register the three devices — desk phone, desktop softphone, Android — each on its own extension.
  4. Prove the endpoint requirements yourself, because this is where vendors oversell: plain SIP credentials work with a non-vendor client (M11), push survives a backgrounded screen-off handset, TCP or TLS signalling is available.
  5. Test recording end to end, including the retention behaviour B10 promised.

Acceptance: as Route B below, plus a recording that auto-deletes on schedule and a starred one that does not.

If Route B

  1. Pick the PBX, per the shortlist in hosted PBX options: Twilio SIP Domains if B.1 passed, Zadarma if it did not.
  2. Provision two DIDs — one business, one home. Twilio Israeli local numbers are $5.50/month; keep the existing Twilio home line if it is already one.
  3. Create three extensions, one per device — desk phone, desktop softphone, Zoiper on Android. Never one shared account; Zoiper's push breaks on simultaneous registration of the same account.
  4. Set the re-registration interval to ≥3600 s on the PBX. Zoiper asks for this explicitly and it is a battery-life requirement, not a preference.
  5. Register the desk phone on two line appearances, business and home.
  6. Rebuild the call flows that already exist today:
    • Business: name announcement → ring group across extensions → voicemail → transcription emailed
    • Home: ring group, no announcement
  7. Use TCP or TLS for signalling, not UDP — the CGNAT problem on foreign mobile networks.

Acceptance: call each new DID from an outside phone; both ring the right endpoints, voicemail records, transcription arrives by email.

Phase 2 — Recording and retention

Route A: mostly bought, not built — but verify against S5 rather than against the brochure. If the vendor's retention is a flat period with no per-call exemption, the starring layer still gets built, over their API instead of Twilio's. The acceptance test below does not change.

Route B: a build, per D2.

  1. Enable recording on both lines.
  2. Write the retention job: keep everything for 7 days, delete on expiry, and honour a "starred" flag that exempts a recording indefinitely. Against Twilio this is a small script over the Recordings API on a daily schedule.
  3. Give it a way to review and star — the minimum is a list with playback and a star toggle. Do not build more than that until it has been used for a month.
  4. Transcription: do not use Twilio's $0.05/min on full recordings. Use the AssemblyAI path already working locally, or Whisper.

Acceptance: a call recorded today is gone in eight days; a starred one is not.

Phase 3 — Cutover

The irreversible phase. Only start once Phases 1 and 2 have been running happily for a couple of weeks.

  1. Port the personal 05x from Pelephone — to the chosen MVNO under Route B, or onto the vendor's SIM under Route A. Either way it is a mobile-to-mobile port, so 2FA, WhatsApp and emergency calling keep working throughout.
    • Keep the line live and receiving until the port completes: the receiving provider must verify possession by SMS or a call to the number itself (§4(a)(1a)).
    • Expect the changeover itself to take under half an hour — the regulation caps it at that for mobile subscribers. Plan the day around a short window, not a lost afternoon.
  2. Handle the business number per the D.2 decision.
  3. Run in parallel for a period. Keep the old arrangement reachable until inbound calls are demonstrably arriving on the new one. This period is about habits and inbound reachability, not about porting downtime — see the note above.
  4. Cancel Pelephone once nothing is landing there.

Rollback: until step 4, the old lines still work. After step 4, recovery means another port — which is why step 3 is not optional.

Phase 4 — Travel readiness

Before the next US trip, not before the cutover.

  1. Confirm the Israeli SIM is in slot 1 with mobile data off and roaming enabled.
  2. Buy a US prepaid physical SIM on arrival (~$30/30 days) for slot 2. Nothing to arrange in advance.
  3. Verify before departure that push and inbound calling work over a foreign network — this is B.1 repeated as a pre-flight check, not a new task.

Deferred

Not scoped, not scheduled, and nothing above should foreclose them.

  • S8 — Home Assistant integration. Ruled out of the critical path by D3. If revived, it is a separate local Asterisk for intercom and automations only, with no PSTN call depending on it.
  • M12 / S9 / S10 — second subscriber. Deferred by D4. Adding a person later means adding extensions and a DID.
  • WhatsApp Business API (S1) on the business number. Independent of everything above; do it after the number situation settles.

Open items carried forward

Tracked here so they do not get lost between documents:

  • Is Route A real? (A.1) — collapses or confirms the whole fork
  • Whether Zoiper push works against Twilio (B.1) — determines the PBX under Route B
  • The business number's fate (D.2) — the last unresolved architectural question. Now cheaper to settle: B.3 came back positive, so a $15/mo Twilio IL mobile DID both receives SMS and can carry WhatsApp Business API (S1)
  • Whether a Twilio IL mobile number passes Israeli bank OTP filtering (M3a) — replaces B.3 as the live risk; only a real test answers it
  • Zadarma's actual free-tier terms, if it becomes the choice
  • The Voicenter feature-to-tier mapping — recording may sit above the ₪80 Business tier, which would change the cost model

Closed

  • 0.1 — confirm the portability rule from the regulation Done 2026-07-27. Confirmed at source: an 05x can be ported only between mobile licensees, never to a VoIP or fixed one. See the research note §1.
  • Whether a contract or debt can block the port Answered: it cannot (§5(a)). Only the exit cost remains open, as C.1.