{"id":"69e75fb24d2339ed1bc8806c","title":"2026 04 21 Using Ramblers Salesforce Mock","path":"how-to/technical-articles/2026-04-21-using-ramblers-salesforce-mock","contentMarkdown":"# 21-Apr-2026 — Using the Ramblers Salesforce Mock Server\n\n_____\n\nA practical walkthrough for developers loading member data into the Ramblers Salesforce mock and calling the API against it. Companion to the [architecture article](https://www.ngx-ramblers.org.uk/how-to/technical-articles/2026-04-21-ramblers-salesforce-mock-server), which covers the design and internals; this series just gets you signed in, loaded with data, and making calls.\n\nThe service is live at **[salesforce-mock.ngx-ramblers.org.uk](https://salesforce-mock.ngx-ramblers.org.uk)**.\n\n## Who this is for\n\nDevelopers integrating with the day-one Ramblers Salesforce contract from any consumer side — currently NGX-Ramblers, MailMan, and the Ramblers Head Office Salesforce team are the three first-class consumers. Each operator gets their own login, their own tenants, their own API tokens, and their own ingested data; per-operator isolation is enforced in MongoDB on every query, so nothing leaks between teams.\n\n## The end-to-end flow\n\n```mermaid\nflowchart LR\n    A[\"1. Get an<br/>operator account\"] --> B[\"2. Sign in<br/>at /admin/login\"]\n    B --> C[\"3. Create a tenant<br/>(groupCode<br/>or areaCode)\"]\n    C --> D[\"4. Generate an<br/>API token\"]\n    D --> E[\"5. Load member data<br/>(upload or generate)\"]\n    E --> F[\"6. Call the API<br/>with your token\"]\n```\n\nSix steps — the sub-pages below pick up the detail. Read them in order on a first pass; come back to individual pages when you need a refresher.\n\n## Getting an account and signing in\n\nOperator provisioning, then the two sign-in tabs (username + password, or bootstrap token).\n\n## Tenants and API tokens\n\nTenant codes (group or area), token generation, the one-time-reveal security model, and revocation.\n\n## Loading member data\n\nUpload a real Insight Hub xlsx, generate synthetic data with configurable consent / roles / region / email patterns, or download the current dataset back out.\n\n## Calling the API\n\nList members with incremental sync (?since=) and lapsed-member opt-in (?includeExpired=), writeback consent changes, or try-it-out interactively in Swagger UI.\n\n## Lifecycle scenarios\n\nShape a ?since= delta on demand: soft-remove, add, and amend members so a consumer's next incremental pull returns exactly the added / updated / removed changes you want to test.\n\n## Release notes and versioning\n\nThe /admin/release-notes view, the public /admin/api/version endpoint, and how the build-time snapshot gets baked in.\n\n## Root operator tasks\n\nProvisioning new operators via the dashboard panel or the admin API, plus deployment-time bootstrap variables.","contentHtml":"<h1>21-Apr-2026 — Using the Ramblers Salesforce Mock Server</h1>\n<hr>\n<p>A practical walkthrough for developers loading member data into the Ramblers Salesforce mock and calling the API against it. Companion to the <a href=\"https://www.ngx-ramblers.org.uk/how-to/technical-articles/2026-04-21-ramblers-salesforce-mock-server\">architecture article</a>, which covers the design and internals; this series just gets you signed in, loaded with data, and making calls.</p>\n<p>The service is live at <strong><a href=\"https://salesforce-mock.ngx-ramblers.org.uk\">salesforce-mock.ngx-ramblers.org.uk</a></strong>.</p>\n<h2>Who this is for</h2>\n<p>Developers integrating with the day-one Ramblers Salesforce contract from any consumer side — currently NGX-Ramblers, MailMan, and the Ramblers Head Office Salesforce team are the three first-class consumers. Each operator gets their own login, their own tenants, their own API tokens, and their own ingested data; per-operator isolation is enforced in MongoDB on every query, so nothing leaks between teams.</p>\n<h2>The end-to-end flow</h2>\n<pre><code class=\"language-mermaid\">flowchart LR\n    A[&quot;1. Get an&lt;br/&gt;operator account&quot;] --&gt; B[&quot;2. Sign in&lt;br/&gt;at /admin/login&quot;]\n    B --&gt; C[&quot;3. Create a tenant&lt;br/&gt;(groupCode&lt;br/&gt;or areaCode)&quot;]\n    C --&gt; D[&quot;4. Generate an&lt;br/&gt;API token&quot;]\n    D --&gt; E[&quot;5. Load member data&lt;br/&gt;(upload or generate)&quot;]\n    E --&gt; F[&quot;6. Call the API&lt;br/&gt;with your token&quot;]\n</code></pre>\n<p>Six steps — the sub-pages below pick up the detail. Read them in order on a first pass; come back to individual pages when you need a refresher.</p>\n<h2>Getting an account and signing in</h2>\n<p>Operator provisioning, then the two sign-in tabs (username + password, or bootstrap token).</p>\n<h2>Tenants and API tokens</h2>\n<p>Tenant codes (group or area), token generation, the one-time-reveal security model, and revocation.</p>\n<h2>Loading member data</h2>\n<p>Upload a real Insight Hub xlsx, generate synthetic data with configurable consent / roles / region / email patterns, or download the current dataset back out.</p>\n<h2>Calling the API</h2>\n<p>List members with incremental sync (?since=) and lapsed-member opt-in (?includeExpired=), writeback consent changes, or try-it-out interactively in Swagger UI.</p>\n<h2>Lifecycle scenarios</h2>\n<p>Shape a ?since= delta on demand: soft-remove, add, and amend members so a consumer&#39;s next incremental pull returns exactly the added / updated / removed changes you want to test.</p>\n<h2>Release notes and versioning</h2>\n<p>The /admin/release-notes view, the public /admin/api/version endpoint, and how the build-time snapshot gets baked in.</p>\n<h2>Root operator tasks</h2>\n<p>Provisioning new operators via the dashboard panel or the admin API, plus deployment-time bootstrap variables.</p>\n"}