<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Puria Moradi</title>
    <description>The latest articles on DEV Community by Puria Moradi (@puria_moradi_22edc4ca9e1d).</description>
    <link>https://dev.to/puria_moradi_22edc4ca9e1d</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4036807%2F03cf4a82-33a1-40dc-8a22-4bf4c48ad04a.png</url>
      <title>DEV Community: Puria Moradi</title>
      <link>https://dev.to/puria_moradi_22edc4ca9e1d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/puria_moradi_22edc4ca9e1d"/>
    <language>en</language>
    <item>
      <title>A Practical Data Model for Safer Boiler Service Requests</title>
      <dc:creator>Puria Moradi</dc:creator>
      <pubDate>Wed, 02 Sep 2026 23:17:42 +0000</pubDate>
      <link>https://dev.to/puria_moradi_22edc4ca9e1d/a-practical-data-model-for-safer-boiler-service-requests-4dm9</link>
      <guid>https://dev.to/puria_moradi_22edc4ca9e1d/a-practical-data-model-for-safer-boiler-service-requests-4dm9</guid>
      <description>&lt;p&gt;Boiler repair often starts with a vague message: “It stopped working,” “the radiators are cold,” or “the pressure keeps changing.” Those descriptions are valid from a homeowner’s perspective, but they are not enough to route a request, estimate urgency, or prepare a technician. A small, human-readable data model can turn the first contact into a structured service record without asking the customer to diagnose the appliance.&lt;/p&gt;

&lt;p&gt;This article proposes a lightweight intake schema for heating-service teams. The design is useful for a web form, call-center application, CRM integration, or a simple internal API. Its purpose is not automated diagnosis. It captures observable facts, keeps safety decisions explicit, and gives the field technician a consistent starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design goals
&lt;/h2&gt;

&lt;p&gt;A useful intake model should satisfy five requirements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Customers can answer the questions without opening the boiler.&lt;/li&gt;
&lt;li&gt;Safety-critical observations are separated from ordinary symptoms.&lt;/li&gt;
&lt;li&gt;The original customer wording is preserved.&lt;/li&gt;
&lt;li&gt;Routing data is structured enough for filtering and assignment.&lt;/li&gt;
&lt;li&gt;Every update is auditable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The distinction between observation and diagnosis matters. An error code is an observation. “The pump is broken” is a diagnosis unless a qualified technician has tested it. Storing those ideas in different fields prevents a telephone guess from becoming an assumed fact later in the workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  A compact JSON example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"requestId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SR-2026-004281"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"createdAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-03T09:40:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"preferredContact"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"serviceArea"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"north-west district"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"availabilityWindow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"14:00-18:00"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"appliance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wall-mounted-combi-boiler"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"brand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Butaneh"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"modelText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"customer-reported model label"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"approximateAgeYears"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"observations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"customerDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hot water turns cold after two minutes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"errorCodeText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pressureBar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"affectsHotWater"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"affectsHeating"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"startedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-02T18:30:00+04:30"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"frequency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"every-use"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"safety"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"gasOdor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"smoke"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"burningSmell"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"waterNearElectricalParts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"unusualLoudNoise"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"consent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"diagnosticVisitApproved"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"repairApprovalStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not-requested"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Treat safety as a routing decision
&lt;/h2&gt;

&lt;p&gt;Safety answers should trigger a defined operational path. If a customer reports a gas odor, smoke, a burning smell, severe noise, or water near electrical components, the system should not display ordinary troubleshooting instructions. It should present the organization’s approved emergency guidance and place the request in a safety-review queue.&lt;/p&gt;

&lt;p&gt;Do not ask customers to remove covers, adjust combustion components, test wiring, or manipulate gas fittings. The application can request visible information such as the displayed pressure or error text. It must not transfer the technical risk to the person reporting the fault.&lt;/p&gt;

&lt;p&gt;One implementation pattern is a simple derived field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;requiresSafetyReview&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;safety&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That expression is intentionally conservative. A trained dispatcher can refine the response, but the software should never silently downgrade a positive safety report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserve provenance
&lt;/h2&gt;

&lt;p&gt;Service records change. A dispatcher may correct a model name, a technician may add measurements, and a customer may clarify that a symptom occurs only during hot-water use. Instead of overwriting the original values, attach provenance to important facts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"field"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"observations.pressureBar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"technician-measurement"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recordedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-03T11:15:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"actorId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tech-184"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prevents a technician measurement from being confused with a customer reading. It also helps support staff understand why the routing decision changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate visit approval from repair approval
&lt;/h2&gt;

&lt;p&gt;Agreeing to a diagnostic visit is not the same as approving a repair. Model these states independently. After inspection, the service record can add a quotation containing labor, parts, taxes, travel fees, and a validity period. Only then should the customer’s repair approval be recorded.&lt;/p&gt;

&lt;p&gt;Useful states include &lt;code&gt;not-requested&lt;/code&gt;, &lt;code&gt;pending&lt;/code&gt;, &lt;code&gt;approved&lt;/code&gt;, &lt;code&gt;declined&lt;/code&gt;, and &lt;code&gt;expired&lt;/code&gt;. Record the timestamp and approval channel. This approach reduces billing disputes and makes it clear whether extra work discovered during the visit requires new consent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the handoff readable
&lt;/h2&gt;

&lt;p&gt;Technicians should not need to interpret raw JSON on a phone. Generate a short field summary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Wall-mounted combi boiler, approximately six years old.
Hot water becomes cold after two minutes; heating is unaffected.
No error code reported. Displayed pressure: 1.2 bar.
No safety warning selected. Symptom occurs on every use.
Customer is available from 14:00 to 18:00.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The summary should link back to the full record and show when each fact was collected. Keep it descriptive. It must not invent a likely failed component.&lt;/p&gt;

&lt;p&gt;For a Persian-language example of how customers can prepare model, location, error-code, and symptom details before contacting a service team, see the &lt;a href="https://butan24.ir/" rel="noopener noreferrer"&gt;نمایندگی رسمی بوتان service page&lt;/a&gt;. The same intake principles apply regardless of the front-end language: collect observable facts, flag safety conditions, and confirm scope before work begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate without becoming hostile
&lt;/h2&gt;

&lt;p&gt;Validation should catch impossible or incomplete values while allowing uncertainty. For example, a pressure field may accept &lt;code&gt;unknown&lt;/code&gt; rather than forcing a number. Model text should remain free-form because labels can contain spacing, punctuation, and regional variants. Dates should be stored with time zones, and customer-facing timestamps should be rendered in the local format.&lt;/p&gt;

&lt;p&gt;Avoid making photographs mandatory. Images can help when a label or display is readable, but users may have limited bandwidth or unsafe access to the appliance. A missing photo must not block a safety-related request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure workflow quality
&lt;/h2&gt;

&lt;p&gt;Once the model is stable, operational metrics become more reliable. Teams can measure the percentage of requests with a model, the time from intake to assignment, first-visit completion, repeat visits for the same symptom, quotation approval time, and warranty callbacks. These metrics evaluate the process, not the customer.&lt;/p&gt;

&lt;p&gt;Review missing-field rates carefully. If many callers cannot answer a question, the label may be unclear or the field may not belong in initial intake. A good schema evolves from real conversations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A structured boiler-service request is a coordination tool, not a diagnostic engine. The best model preserves the customer’s description, records visible facts, isolates safety signals, tracks consent, and keeps an audit trail. When the system produces a concise technician handoff without guessing at the fault, it improves routing and transparency while respecting the boundary between information collection and professional diagnosis.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A Safe, Structured Workflow for Logging Boiler Faults Before Calling a Technician</title>
      <dc:creator>Puria Moradi</dc:creator>
      <pubDate>Wed, 02 Sep 2026 22:16:15 +0000</pubDate>
      <link>https://dev.to/puria_moradi_22edc4ca9e1d/a-safe-structured-workflow-for-logging-boiler-faults-before-calling-a-technician-3836</link>
      <guid>https://dev.to/puria_moradi_22edc4ca9e1d/a-safe-structured-workflow-for-logging-boiler-faults-before-calling-a-technician-3836</guid>
      <description>&lt;p&gt;When a residential boiler stops working, the first instinct is often to reset it repeatedly or search the error code and order the first component mentioned online. That approach loses useful evidence and can turn a small diagnostic task into an expensive parts-swapping exercise.&lt;/p&gt;

&lt;p&gt;A better approach is to treat the appliance as a system that produces observable signals. You do not need to open the casing or touch gas and electrical components. You only need a repeatable way to capture the context in which the problem occurs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a minimal incident record
&lt;/h2&gt;

&lt;p&gt;Create one note for each incident and capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the complete boiler model;&lt;/li&gt;
&lt;li&gt;the displayed error code;&lt;/li&gt;
&lt;li&gt;system pressure while cold;&lt;/li&gt;
&lt;li&gt;system pressure after heating starts;&lt;/li&gt;
&lt;li&gt;whether domestic hot water works;&lt;/li&gt;
&lt;li&gt;whether every radiator is affected;&lt;/li&gt;
&lt;li&gt;the time between startup and failure;&lt;/li&gt;
&lt;li&gt;unusual sound, smell, leakage, or vibration;&lt;/li&gt;
&lt;li&gt;recent maintenance or component replacement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is similar to writing a useful bug report. “It does not work” is hard to reproduce. “Heating stops after four minutes, hot water still works, pressure rises from 1.2 to 2.4 bar, and error X appears” gives a technician a much better starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate the operating modes
&lt;/h2&gt;

&lt;p&gt;Residential combination boilers commonly serve two different user-visible functions: domestic hot water and space heating. Test and report them separately.&lt;/p&gt;

&lt;p&gt;If hot water works but radiators remain cold, the diagnostic path is different from a complete shutdown. If only one radiator is cold, the issue may be local to that branch rather than the boiler itself. Recording these distinctions reduces unnecessary inspection and prevents unrelated components from being blamed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preserve the original error state
&lt;/h2&gt;

&lt;p&gt;Take a photo of the display before performing a permitted reset. Note what the boiler was doing when the code appeared. Did the error occur immediately, during ignition, after several minutes of heating, or only when a hot-water tap was opened?&lt;/p&gt;

&lt;p&gt;One reset performed according to the manufacturer’s user instructions may clear a temporary stop. Repeated resets are not a repair strategy. They may remove the exact state that needs to be observed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Record pressure as a time series
&lt;/h2&gt;

&lt;p&gt;A single pressure reading is useful, but a small time series is better:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;08:00 — system cold — 1.2 bar
08:20 — heating active — 1.8 bar
12:00 — heating off — 1.1 bar
Next morning — system cold — 0.7 bar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does not diagnose the component. It shows the pattern. A technician can then investigate the relevant parts of the sealed heating circuit with appropriate tools.&lt;/p&gt;

&lt;p&gt;Do not keep adding water merely to hide a recurring pressure loss. If the system repeatedly needs adjustment, the underlying cause still exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capture sound and location
&lt;/h2&gt;

&lt;p&gt;“The boiler is noisy” is too broad. Describe the sound and when it happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clicking during ignition;&lt;/li&gt;
&lt;li&gt;a boiling or kettling sound after heating starts;&lt;/li&gt;
&lt;li&gt;vibration from the casing or nearby pipework;&lt;/li&gt;
&lt;li&gt;a sudden knock when the burner stops;&lt;/li&gt;
&lt;li&gt;continuous pump-like noise with cold radiators.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A short video can be more useful than a long verbal explanation, provided it can be recorded without approaching a leak, hot surface, or unsafe electrical area.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a simple decision tree
&lt;/h2&gt;

&lt;p&gt;You can organize the observations without diagnosing internal components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is there a gas smell, burning smell, major leak, or severe noise? Stop and follow the appropriate emergency procedure.&lt;/li&gt;
&lt;li&gt;Is the display on and is an error code visible? Photograph it.&lt;/li&gt;
&lt;li&gt;Does domestic hot water work?&lt;/li&gt;
&lt;li&gt;Does space heating work?&lt;/li&gt;
&lt;li&gt;Are all radiators affected or only one zone?&lt;/li&gt;
&lt;li&gt;Is pressure stable between cold and operating conditions?&lt;/li&gt;
&lt;li&gt;Did the issue begin after maintenance, power interruption, or a settings change?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The output of this decision tree is a compact incident report, not a DIY repair instruction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Localized documentation matters
&lt;/h2&gt;

&lt;p&gt;Model naming, error-code presentation, service coverage, and the information requested during booking can vary by market. For Persian-language users, this &lt;a href="https://iranradiiator.ir/" rel="noopener noreferrer"&gt;Iran Radiator service guide&lt;/a&gt; provides a local intake reference. A useful request should include the model, error code, pressure reading, neighborhood, and whether the issue affects hot water, heating, or both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define the service outcome
&lt;/h2&gt;

&lt;p&gt;The end of a service visit should produce more than “the boiler is running.” Ask for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the observed cause;&lt;/li&gt;
&lt;li&gt;the tests performed;&lt;/li&gt;
&lt;li&gt;the action taken;&lt;/li&gt;
&lt;li&gt;the identity and condition of any replaced component;&lt;/li&gt;
&lt;li&gt;separate parts and labor costs;&lt;/li&gt;
&lt;li&gt;warranty scope and duration;&lt;/li&gt;
&lt;li&gt;a test of both hot-water and heating modes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the visit, keep recording pressure and behavior for several days. If the fault returns, you now have before-and-after data rather than a vague description.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety boundary
&lt;/h2&gt;

&lt;p&gt;The logging workflow is intentionally external and observational. It does not include removing the cover, measuring live electrical circuits, changing gas settings, modifying a flue, or bypassing safety controls. Those tasks require qualified personnel and appropriate instruments.&lt;/p&gt;

&lt;p&gt;If there is a suspected gas leak, burning smell, significant water leak near electrical parts, or any sign of unsafe combustion, stop normal troubleshooting and follow the relevant emergency guidance for your location.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Good boiler diagnostics begin with a reproducible report. Separate hot water from heating, preserve the error state, record pressure over time, identify which radiators are affected, and document recent changes. This small amount of structured data helps a qualified technician test the right systems first and reduces the risk of speculative component replacement.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>iot</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
