<?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: Mateo Rivera</title>
    <description>The latest articles on DEV Community by Mateo Rivera (@mateor404).</description>
    <link>https://dev.to/mateor404</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3197789%2Fa0372e3b-26c1-49e0-8e20-28292b37d1f8.jpeg</url>
      <title>DEV Community: Mateo Rivera</title>
      <link>https://dev.to/mateor404</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mateor404"/>
    <language>en</language>
    <item>
      <title>Why I Stopped Relying on WAF Alone (And Added an API Firewall)</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Thu, 30 Apr 2026 01:03:28 +0000</pubDate>
      <link>https://dev.to/mateor404/why-i-stopped-relying-on-waf-alone-and-added-an-api-firewall-3b28</link>
      <guid>https://dev.to/mateor404/why-i-stopped-relying-on-waf-alone-and-added-an-api-firewall-3b28</guid>
      <description>&lt;p&gt;A couple of years ago, I sat through a post‑mortem that changed how I think about application security. We had a WAF in place—properly configured, signatures up to date, running in reverse proxy mode. Still, an attacker managed to walk right through. They just found an internal API endpoint that wasn’t properly protected and started pulling data that should have never been accessible.&lt;/p&gt;

&lt;p&gt;A WAF is great at stopping the noisy, obvious attacks, but it has a blind spot. It doesn’t really understand your API’s business logic, and it won’t stop someone who’s playing by the rules of HTTP but breaking the rules of your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfiva5sovttlcrgn77ft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfiva5sovttlcrgn77ft.png" alt="Unsplash, FlyD" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, web applications and APIs are the main entry points for almost any business. Transactions, customer data, partner integrations—everything flows through them. And as the number of services grows, so does the attack surface. What used to be mass automated scans is now giving way to something more subtle: carefully crafted requests that look legitimate but exploit flaws in how your API handles authorization or business logic.&lt;/p&gt;

&lt;p&gt;I’ve seen this trend play out in real incidents. According to recent industry reports, API‑related attacks have skyrocketed—some sources cite a 630% increase in 2024 alone, and a huge chunk of corporate applications carry API vulnerabilities that traditional web filters miss.&lt;/p&gt;

&lt;p&gt;That’s why, over the past year, I’ve moved to a two‑layer approach: a WAF at the front door, and an API Firewall that sits closer to the actual services. They’re not redundant; they cover different things. In this post, I’ll walk you through how I think about both, why they work better together, and what I’ve learned from running them in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A WAF alone won’t protect your APIs—it’s built for web forms and HTTP, not business logic.&lt;/li&gt;
&lt;li&gt;API attacks are growing fast; I’ve seen BOLA, mass assignment, and schema abuse slip right past a WAF.&lt;/li&gt;
&lt;li&gt;An API Firewall uses a positive (allowlist) model: if the request doesn’t match your spec, it’s blocked.&lt;/li&gt;
&lt;li&gt;Running both creates a two‑layer defense: WAF catches the noisy web attacks, API Firewall handles the subtle API‑layer abuse.&lt;/li&gt;
&lt;li&gt;Track incident trends, false positives, and MTTR—not just how many requests you block.&lt;/li&gt;
&lt;li&gt;Yes, maintaining specs takes work, but it’s cheaper than cleaning up a breach.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What a WAF Actually Does (And Where It Falls Short)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjsckp0vcxhdi3039b49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjsckp0vcxhdi3039b49.png" alt=" " width="798" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve ever deployed a WAF, you know it’s basically a gatekeeper that sits between the internet and your application. It inspects every incoming HTTP request—headers, parameters, the body, even the context—and decides whether to let it through or drop it on the spot.&lt;br&gt;
A traditional firewall works at lower levels: IP addresses, ports, protocols. It’s great for segmenting networks or blocking traffic from a known bad IP. But a WAF operates at the application layer. It understands HTTP, and that’s its superpower. For example, a firewall in a platform like &lt;a href="//ispsystem.com/billmanager"&gt;BILLmanager&lt;/a&gt; lets you implement classic network screening—blocking unwanted traffic based on protocol, source IP, and destination address.&lt;/p&gt;

&lt;p&gt;I’ve run WAFs in a few different ways depending on the infrastructure. &lt;/p&gt;

&lt;p&gt;The most common setup is reverse proxy mode: all traffic hits the WAF first, gets inspected, and only then is forwarded to the backend. It gives you centralized control, but you do take a latency hit—though in practice, it’s usually negligible if you size things right. Transparent proxy is another option; the WAF doesn’t change the destination address, so the client feels like it’s talking directly to the server. Bridge mode is a more low‑level option—it sits inline at the link layer—and passive mode just gets a copy of traffic for analysis, which is fine for monitoring but won’t block anything.&lt;/p&gt;

&lt;p&gt;In my experience, reverse proxy strikes the best balance for most setups unless you have strict latency requirements or legacy constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Decides What to Block
&lt;/h2&gt;

&lt;p&gt;Under the hood, a WAF uses a mix of techniques. The oldest is signature‑based detection: it looks for known attack patterns—SQL injection strings, XSS payloads, that kind of thing. This is fast and effective for known threats, but it’s a cat‑and‑mouse game. Attackers tweak their payloads, and if your signatures aren’t constantly updated, things slip through.&lt;/p&gt;

&lt;p&gt;Behavioral analysis is a step up. The WAF learns what normal traffic looks like for your application—typical request rates, common parameters, expected user journeys—and flags anything that deviates. It’s more flexible, but it takes time to tune. I’ve spent weeks adjusting thresholds to avoid false positives that would otherwise block legitimate users.&lt;/p&gt;

&lt;p&gt;Some modern WAFs also use machine learning models to detect anomalies that don’t match any known signature. When it works, it’s impressive. But I’ve seen it go wrong when the training data is noisy or the model doesn’t understand the application’s actual behavior. It’s not a magic bullet.&lt;/p&gt;

&lt;p&gt;In practice, I rely on all three: signatures for the low‑hanging fruit, behavioral rules for weird patterns, and ML as a catch-all—but always with manual oversight.&lt;/p&gt;

&lt;p&gt;Once the WAF makes a decision, it can do a few things: block the request outright, drop the source IP into a quarantine list, or even sanitize the request (strip out malicious parts) and forward it. It’s a lot like an antivirus, but for web traffic. A good WAF also integrates with other tools—SIEM, identity systems, maybe an anti‑fraud service.&lt;/p&gt;

&lt;p&gt;Before putting any WAF into production, I run a few sanity checks. Functional tests to make sure it doesn’t break legitimate traffic, load tests to see how it behaves under peak traffic, and failover tests because the last thing you want is a WAF outage taking down your app. But the most interesting tests are the red‑team style ones: I try to bypass it with obfuscated payloads, or see if it catches subtle API abuse. That’s often where you find the gaps—and why I eventually added an API Firewall to the mix.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Missing Piece—API Firewall
&lt;/h2&gt;

&lt;p&gt;APIs are tightly coupled with business logic. They process sensitive data and are often exposed to the outside world. Any mistake in an API can be extremely costly.&lt;/p&gt;

&lt;p&gt;Industry data shows a sharp rise in attacks targeting APIs. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40,000+ API incidents &lt;a href="https://www.imperva.com/resources/resource-library/reports/imperva-api-threat-report/" rel="noopener noreferrer"&gt;observed&lt;/a&gt; in H1 2025 across 4,000+ environments, 44% of advanced bot activity now targets APIs.&lt;/li&gt;
&lt;li&gt;87% of surveyed organizations &lt;a href="https://www.globenewswire.com/news-release/2026/03/17/3256958/0/en/AI-Transformation-at-Risk-APIs-Emerge-as-the-Primary-Attack-Surface-Akamai-Research-Finds.html" rel="noopener noreferrer"&gt;reported&lt;/a&gt; experiencing an API-related security incident in 2025, the average number of daily API attacks rose 113% year over year.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An API Firewall is designed specifically to protect APIs. It inspects every incoming call, evaluating its structure, frequency, context, and compliance with the security policy.&lt;/p&gt;

&lt;p&gt;Unlike solutions built for general web traffic, an API Firewall understands application‑layer protocols—REST, SOAP, GraphQL, gRPC, JSON‑RPC, and others. It doesn’t just look at headers; it analyzes the request body, schema, data types, parameters, and even client behavior. This makes it possible to catch attacks that slip past classic filters: BOLA, mass assignment, schema poisoning, and more.&lt;br&gt;
So if an API Firewall is so good, why keep the WAF? Because they cover different threats. The WAF catches SQL injection attempts, XSS, and other classic web attacks that still come in through forms and front‑end endpoints. The API Firewall catches the more subtle, logic‑level abuse that targets the service layer. Running both gives you two layers of defense: the WAF filters the noise, and the API Firewall ensures what’s left still plays by the rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  WAF + API Firewall: Why I Run Both
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9koae982h7bw26p04p1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9koae982h7bw26p04p1f.png" alt=" " width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me give you a concrete example. Imagine you have an e‑commerce site. There’s a web frontend for desktop users and a mobile app that talks directly to APIs.&lt;/p&gt;

&lt;p&gt;When an attacker tries to inject SQL through a search box on the website, the WAF sitting in front of the web server spots the malicious pattern and blocks it. Classic. WAF earns its keep.&lt;br&gt;
But what happens when the attack comes through the mobile app? Say someone discovers they can call an API endpoint like /api/v2/payments without proper authorization and start pulling transaction data. The WAF sees an HTTPS request—nothing obviously malicious. No SQL, no XSS. It passes.&lt;/p&gt;

&lt;p&gt;This is where the API Firewall steps in. It checks whether that endpoint is supposed to be accessible, whether the request schema matches what the API expects, and whether the user token has the right permissions. If anything’s off, it blocks the call. Data stays safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Focus Areas
&lt;/h2&gt;

&lt;p&gt;WAF and API Firewall operate at different levels. Here’s how I think about the split:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;WAF&lt;/th&gt;
&lt;th&gt;API Firewall&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What it understands&lt;/td&gt;
&lt;td&gt;HTTP, web forms, URLs&lt;/td&gt;
&lt;td&gt;REST, GraphQL, gRPC, others&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What it blocks&lt;/td&gt;
&lt;td&gt;SQL injection, XSS, known exploits&lt;/td&gt;
&lt;td&gt;BOLA, mass assignment, schema violations, rate abuse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best at protecting&lt;/td&gt;
&lt;td&gt;Frontend apps, traditional websites&lt;/td&gt;
&lt;td&gt;APIs, microservices, mobile backends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blind spots&lt;/td&gt;
&lt;td&gt;Business logic, API-specific flaws&lt;/td&gt;
&lt;td&gt;XSS, CSRF, classic web attacks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you only run a WAF, your APIs are essentially unprotected against the kinds of attacks that exploit business logic. If you only run an API Firewall, your frontend forms are sitting ducks for injection attacks.&lt;/p&gt;

&lt;p&gt;Modern applications aren’t just plain HTML forms anymore. I’m seeing more WebSocket connections for real‑time features, gRPC for internal microservices, and GraphQL endpoints that aggregate data from multiple sources. These technologies speed up development, but they also open new attack surfaces that traditional WAFs weren’t designed for. That’s why the two need to work together—not just coexist, but actually share context. &lt;/p&gt;

&lt;h2&gt;
  
  
  Two Ways to Think About Blocking
&lt;/h2&gt;

&lt;p&gt;When I started combining WAF and API Firewall, I realized I was actually using two fundamentally different security models. Understanding the difference helped me tune each tool for what it does best.&lt;/p&gt;

&lt;h3&gt;
  
  
  Negative Model (Denylist)
&lt;/h3&gt;

&lt;p&gt;This is the classic WAF approach. The rule is simple: everything is allowed unless it matches a known bad pattern. You maintain a list of signatures for SQL injection, XSS, brute‑force attempts, and so on. As long as a request doesn’t trip any of those rules, it gets through.&lt;/p&gt;

&lt;p&gt;When I use it: For the web frontend—the public‑facing site where traffic is diverse and attackers throw all kinds of exploits. The negative model covers a broad range of threats without me having to specify exactly what good traffic should look like.&lt;br&gt;
What I’ve learned: It’s quick to set up, but it’s only as good as your signature database. If you miss an update, or if the attacker uses a variant that isn’t yet in the rules, you’re exposed. Also, false positives can be annoying—legitimate users sometimes trigger rules because they typed something that looks like an attack. Tuning it takes time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Positive Model (Allowlist)
&lt;/h3&gt;

&lt;p&gt;This is the philosophy I use with the API Firewall. Instead of listing what’s bad, I define exactly what’s allowed. The API Firewall validates each request against a strict specification. Anything that doesn’t match is rejected.&lt;/p&gt;

&lt;p&gt;Why I like it for APIs: Once you have a solid spec, the positive model is incredibly precise. It blocks requests that have extra parameters, wrong data types, or call endpoints that don’t exist. It also makes it trivial to enforce rate limits per endpoint, because the rule is “this client can call this path at this frequency.”&lt;br&gt;
The catch: You need an up‑to‑date spec. If your API documentation lags behind the actual code, the positive model will start blocking legitimate traffic.&lt;/p&gt;

&lt;p&gt;For the frontend applications, I stick with a WAF in negative model. It’s the right tool for catching the spray‑and‑pray attacks that still hit every public‑facing site.&lt;/p&gt;

&lt;p&gt;For the APIs—especially those handling payments, user data, or core business logic—I use the API Firewall with a positive model. It gives me the confidence that even if an attacker figures out the endpoint names, they still can’t send malformed requests or abuse authorization.&lt;/p&gt;

&lt;p&gt;When I run both together, I get the best of both worlds. The WAF blocks the noisy stuff; the API Firewall enforces strict contracts. I’ve stopped thinking of them as competing products and started treating them as complementary layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Measure Whether This Tandem Is Actually Working
&lt;/h2&gt;

&lt;p&gt;Eventually, I settled on a few metrics that actually tell me whether the setup is improving security without breaking the user experience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Incident Trends&lt;br&gt;
This is the obvious one, but I look at it in a specific way. Instead of counting all blocked requests, I track successful attacks that reached the application. When I first added the API Firewall, that number dropped by about 80% over two months. Not because the WAF got worse, but because the API Firewall caught the stuff the WAF wasn’t designed to see.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MTTR (Mean Time to Respond)&lt;br&gt;
When something does slip through, I measure how long it takes to detect and contain. With both layers feeding into a centralized log (SIEM), I’ve cut my MTTR roughly in half. The API Firewall provides structured data about which endpoint was hit, what the payload looked like, and whether the token was valid. That context saves hours of digging through WAF logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;False Positives&lt;br&gt;
False positives are the silent killer of security tools. If a WAF blocks a legitimate user, you lose trust. If an API Firewall rejects a valid call because the spec is outdated, someone will eventually ask to “just turn it off.”&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I track false positive rates separately for each layer. For the WAF, I monitor how many requests get blocked that later turn out to be legitimate (usually from support tickets or user complaints). For the API Firewall, I look at rejected calls that match a known, authorized client. If the rate goes above 0.5% on either, I dig in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attack stop ratio
A more subtle metric I’ve started tracking is attack stop ratio—how many attacks are stopped by the WAF versus how many reach the API Firewall. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve aggregated all of this into a simple dashboard—nothing fancy, just a few graphs and a weekly summary. It shows trends over months, not just real‑time spikes. That way I can see if a new API deployment introduced more false positives, or if a signature update actually reduced incident rates.&lt;/p&gt;

&lt;p&gt;The point isn’t to hit arbitrary numbers. It’s to know, with data, whether the two layers are working together or just adding complexity. So far, the tandem has paid off, but only because I keep an eye on these metrics and tune accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layered Defense Isn’t Just a Buzzword
&lt;/h2&gt;

&lt;p&gt;After running this tandem for over a year now, I’ve come to see it as less of a “nice to have” and more of a necessity. The days when you could put a WAF at the edge and call it done are over. Modern applications are too distributed, and APIs have become the primary way data moves between services and clients.&lt;/p&gt;

&lt;p&gt;The WAF is my outer perimeter. It handles the noise—the automated scans, the injection attempts, the obvious probes. It keeps the attack surface manageable. The API Firewall understands the contracts my services expect, enforces them, and stops the requests that look perfectly fine to a generic HTTP filter but violate how my application is supposed to behave.&lt;/p&gt;

&lt;p&gt;When they work together, they cover both ends of the spectrum: the technical exploits and the logic‑level abuse.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I’ve Learned
&lt;/h3&gt;

&lt;p&gt;If I had to distill this into practical takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don’t assume your WAF sees your APIs. Most WAFs were built for web forms and HTML. If you expose GraphQL, gRPC, or even REST with complex JSON schemas, you need something that speaks those protocols.&lt;/li&gt;
&lt;li&gt;Positive model for APIs is a game changer. It requires maintaining specs, but the precision it gives you is worth the overhead. I’d rather update an OpenAPI file than chase a data breach.&lt;/li&gt;
&lt;li&gt;Metrics matter. I track false positives, incident trends, and layer efficiency. It helps me tune without breaking things.&lt;/li&gt;
&lt;li&gt;One tool won’t cover everything. I tried both extremes: WAF alone, then API Firewall alone. Both left gaps. The combination is what actually moved the needle.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What About You?
&lt;/h3&gt;

&lt;p&gt;I’m curious how others are handling this. Are you still running just a WAF? Have you added API‑specific protection? What’s been your experience with false positives or deployment complexity?&lt;/p&gt;

&lt;p&gt;If you’re working with microservices, mobile backends, or anything that exposes APIs to the outside world, I’d love to hear what your stack looks like. Drop a comment—I’m always looking to learn from how other teams solve these problems.&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
    <item>
      <title>How to Customize the Service Catalog in BILLmanager</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Sat, 27 Sep 2025 23:32:49 +0000</pubDate>
      <link>https://dev.to/mateor404/how-to-customize-the-service-catalog-in-billmanager-f4a</link>
      <guid>https://dev.to/mateor404/how-to-customize-the-service-catalog-in-billmanager-f4a</guid>
      <description>&lt;p&gt;Many providers offer similar services at comparable prices — for instance, nearly identical VPS configurations that cost about the same. Yet, some companies make it easy for customers to find the right plan and complete their order, while others leave users confused during the selection process, causing them to leave without buying anything.&lt;/p&gt;

&lt;p&gt;The issue usually isn't the services themselves, but how they're presented. Even small differences in how a service catalog is organized can significantly impact customer behavior.&lt;br&gt;
BILLmanager lets you do more than just list your services; it allows you to structure them so that customers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the differences between plans at a glance,&lt;/li&gt;
&lt;li&gt;See all available options exactly when they need them,&lt;/li&gt;
&lt;li&gt;Quickly assemble the ideal package of services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ve previously covered how the BILLmanager service catalog works and why a well-thought-out "storefront" reduces the load on your support team, helps customers choose and order services faster, and enables providers to test new monetization ideas more quickly.&lt;/p&gt;

&lt;p&gt;In this article, we’ll break down how to configure the service catalog display, set up plan grouping and filtering, and make your hosting services clear and visible to users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Catalog Display
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can choose the best way to present your services — either as a classic list or in a modern card-based format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;br&gt;
This setting can be adjusted individually for each product type. Simply select the desired option in the "Tariff plan order form" section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2isgjr0374q5qlwaloi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2isgjr0374q5qlwaloi.png" alt=" " width="476" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan and Product Type Icons
&lt;/h2&gt;

&lt;p&gt;Visual design helps customers navigate your catalog. In BILLmanager, you can upload custom icons for service plans as well as for entire product types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to edit a tariff plan or product type.&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, upload an image in the optimal resolution.&lt;/li&gt;
&lt;li&gt;Configure the display parameters.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1anrkbqbbdq6mscy0kig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1anrkbqbbdq6mscy0kig.png" alt=" " width="512" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grouping Tariffs
&lt;/h2&gt;

&lt;p&gt;When you have a large number of service plans, grouping them by specific characteristics (filter groups) can be extremely helpful. For instance, this allows you to organize plans based on technical parameters. This gives potential customers the ability to filter plans by the criteria that matter most to them and quickly select the right service. A single plan can belong to multiple groups simultaneously.&lt;/p&gt;

&lt;p&gt;Additionally, filter values can be used as tags, which can be color-coded for emphasis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the "Filter Groups" section.&lt;/li&gt;
&lt;li&gt;Create a new group and configure its parameters.&lt;/li&gt;
&lt;li&gt;For the created group, select "Values" → "Add" and define the necessary parameters.&lt;/li&gt;
&lt;li&gt;Select a value, click the "Tariff", and assign the desired plans using the "Enable" and "Disable" buttons.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Filtering Tariffs&lt;/strong&gt;&lt;br&gt;
In BILLmanager, you can set up an intuitive system for logically categorizing your service plans, helping customers quickly find the right services based on key parameters. This feature is especially useful when a single product type contains many variants with different specifications. You can use it to highlight plans with specific technical characteristics, like 2 CPUs, or filter them by name.&lt;/p&gt;

&lt;p&gt;Once configured, the left-hand menu in the "Products/Services" section will be structured as follows:&lt;br&gt;
— Product Type (Level 1)&lt;br&gt;
— — Product Subtype (Level 2)&lt;/p&gt;

&lt;p&gt;When a user navigates to a Product Subtype, they will see all the plans assigned to that subtype.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd892n7bqtc0ggkithhme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd892n7bqtc0ggkithhme.png" alt=" " width="312" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To set up a subtype, go to Products → Product Types → select a type → the Subtypes button. Click the “New” button to add a subtype.&lt;/li&gt;
&lt;li&gt;Activate the required tariff for this subtype. Go to Products → Product types → select a type → “Subtypes” button → select a subtype → “Tariffs” button → select a tariff → “On” button.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Adding Text Descriptions
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can create detailed plan descriptions to help customers make informed decisions. These can include both technical specifications and marketing information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter your text description when creating or editing a tariff plan.&lt;/li&gt;
&lt;li&gt;By default, BILLmanager will collapse long descriptions, showing only the first three lines of text.&lt;/li&gt;
&lt;li&gt;To make descriptions always display in full, go to Product Types → Tariff plan order form settings and enable the "Disclose description in the order" option. This is useful if you want customers to see all plan details immediately before purchase.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Displaying Parameters
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you have flexible control over how customers see the available add-ons for each service plan. This helps prevent interface clutter and focuses attention on the most important options.&lt;br&gt;
By default, a plan's card displays all available add-ons: six are shown directly on the card, while the rest appear after clicking the "Show more" link. You can adjust the number of add-ons displayed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Tariff Plans → Options.&lt;/li&gt;
&lt;li&gt;Select the desired add-ons and click "Edit".&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, disable the "Hide on the tariff card" option.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Number of Displayed Service Plans
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can choose how many service plan options a customer sees at once when browsing the catalog. This is especially useful for providers with a large catalogue of services.&lt;/p&gt;

&lt;p&gt;By default, three plan cards are displayed, but you can configure this number to fit your needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locate the configuration file. By default, it is located at /usr/local/mgr5/etc/billmgr.conf.&lt;/li&gt;
&lt;li&gt;In the configuration file, find the PricelistPerItemtype parameter.&lt;/li&gt;
&lt;li&gt;Set this parameter to your desired value.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Plan Prioritization
&lt;/h2&gt;

&lt;p&gt;To promote specific products and services, BILLmanager allows you to manually control the display order of service plans and add-ons using a priority-based sorting feature.&lt;/p&gt;

&lt;p&gt;Plans with a higher priority are automatically moved to the top of the list. This function is available for both main service plans and add-ons.&lt;/p&gt;

&lt;p&gt;How to configure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the editing form for the service plan.&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, in the "Sorting" field enter the desired numeric value. The lower the number, the higher the tariff plan will appear in the list.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpms9kk5ep0c69f7sbf99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpms9kk5ep0c69f7sbf99.png" alt=" " width="600" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A well-configured service catalog is more than just a list of plans—it's a powerful tool for increasing sales and reducing the load on your support team. With BILLmanager, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexibly customize display using cards and filters,&lt;/li&gt;
&lt;li&gt;Guide customer attention effectively,&lt;/li&gt;
&lt;li&gt;Offer relevant services and useful add-ons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to see how it works in practice? &lt;a href="https://www.ispsystem.com/billmanager" rel="noopener noreferrer"&gt;👉 Try for Free&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Customize the Service Catalog in BILLmanager</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Sat, 27 Sep 2025 20:44:39 +0000</pubDate>
      <link>https://dev.to/mateor404/how-to-customize-the-service-catalog-in-billmanager-52f9</link>
      <guid>https://dev.to/mateor404/how-to-customize-the-service-catalog-in-billmanager-52f9</guid>
      <description>&lt;p&gt;Many providers offer similar services at comparable prices — for instance, nearly identical VPS configurations that cost about the same. Yet, some companies make it easy for customers to find the right plan and complete their order, while others leave users confused during the selection process, causing them to leave without buying anything.&lt;/p&gt;

&lt;p&gt;The issue usually isn't the services themselves, but how they're presented. Even small differences in how a service catalog is organized can significantly impact customer behavior.&lt;/p&gt;

&lt;p&gt;BILLmanager lets you do more than just list your services; it allows you to structure them so that customers can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the differences between plans at a glance,&lt;/li&gt;
&lt;li&gt;See all available options exactly when they need them,&lt;/li&gt;
&lt;li&gt;Quickly assemble the ideal package of services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ve previously covered &lt;a href="https://dev.to/mateor404/how-the-service-catalog-works-in-billmanager-30p8"&gt;how the BILLmanager service catalog works&lt;/a&gt; and why a well-thought-out "storefront" reduces the load on your support team, helps customers choose and order services faster, and enables providers to test new monetization ideas more quickly.&lt;/p&gt;

&lt;p&gt;In this article, we’ll break down how to configure the service catalog display, set up plan grouping and filtering, and make your hosting services clear and visible to users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Catalog Display
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can choose the best way to present your services — either as a classic list or in a modern card-based format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;br&gt;
This setting can be adjusted individually for each product type. Simply select the desired option in the "Tariff plan order form" section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyag5457jly8vxbzjbft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkyag5457jly8vxbzjbft.png" alt=" " width="577" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan and Product Type Icons
&lt;/h2&gt;

&lt;p&gt;Visual design helps customers navigate your catalog. In BILLmanager, you can upload custom icons for service plans as well as for entire product types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to edit a tariff plan or product type.&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, upload an image in the optimal resolution.&lt;/li&gt;
&lt;li&gt;Configure the display parameters.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3go1xbzesgsycxkqgptx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3go1xbzesgsycxkqgptx.png" alt=" " width="457" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grouping Tariffs
&lt;/h2&gt;

&lt;p&gt;When you have a large number of service plans, grouping them by specific characteristics (filter groups) can be extremely helpful. For instance, this allows you to organize plans based on technical parameters. This gives potential customers the ability to filter plans by the criteria that matter most to them and quickly select the right service. A single plan can belong to multiple groups simultaneously.&lt;/p&gt;

&lt;p&gt;Additionally, filter values can be used as tags, which can be color-coded for emphasis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the "Filter Groups" section.&lt;/li&gt;
&lt;li&gt;Create a new group and configure its parameters.&lt;/li&gt;
&lt;li&gt;For the created group, select "Values" → "Add" and define the necessary parameters.&lt;/li&gt;
&lt;li&gt;Select a value, click the "Tariff", and assign the desired plans using the "Enable" and "Disable" buttons.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Filtering Tariffs
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can set up an intuitive system for logically categorizing your service plans, helping customers quickly find the right services based on key parameters. This feature is especially useful when a single product type contains many variants with different specifications. You can use it to highlight plans with specific technical characteristics, like 2 CPUs, or filter them by name.&lt;/p&gt;

&lt;p&gt;Once configured, the left-hand menu in the "Products/Services" section will be structured as follows:&lt;br&gt;
— Product Type (Level 1)&lt;br&gt;
— — Product Subtype (Level 2)&lt;/p&gt;

&lt;p&gt;When a user navigates to a Product Subtype, they will see all the plans assigned to that subtype.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To set up a subtype, go to Products → Product Types → select a type → the Subtypes button. Click the “New” button to add a subtype.&lt;/li&gt;
&lt;li&gt;Activate the required tariff for this subtype. Go to Products → Product types → select a type → “Subtypes” button → select a subtype → “Tariffs” button → select a tariff → “On” button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfe9rbmubqkrztrvhllp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfe9rbmubqkrztrvhllp.png" alt=" " width="274" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Text Descriptions
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can create detailed plan descriptions to help customers make informed decisions. These can include both technical specifications and marketing information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter your text description when creating or editing a tariff plan.&lt;/li&gt;
&lt;li&gt;By default, BILLmanager will collapse long descriptions, showing only the first three lines of text.&lt;/li&gt;
&lt;li&gt;To make descriptions always display in full, go to Product Types → Tariff plan order form settings and enable the "Disclose description in the order" option. This is useful if you want customers to see all plan details immediately before purchase.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Displaying Parameters
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you have flexible control over how customers see the available add-ons for each service plan. This helps prevent interface clutter and focuses attention on the most important options.&lt;/p&gt;

&lt;p&gt;By default, a plan's card displays all available add-ons: six are shown directly on the card, while the rest appear after clicking the "Show more" link. You can adjust the number of add-ons displayed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Tariff Plans → Options.&lt;/li&gt;
&lt;li&gt;Select the desired add-ons and click "Edit".&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, disable the "Hide on the tariff card" option.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Number of Displayed Tariffs
&lt;/h2&gt;

&lt;p&gt;In BILLmanager, you can choose how many service plan options a customer sees at once when browsing the catalog. This is especially useful for providers with a large portfolio of plans.&lt;br&gt;
By default, three plan cards are displayed, but you can configure this number to fit your needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Locate the configuration file. By default, it is located at /usr/local/mgr5/etc/billmgr.conf.&lt;/li&gt;
&lt;li&gt;In the configuration file, find the PricelistPerItemtype parameter.&lt;/li&gt;
&lt;li&gt;Set this parameter to your desired value.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tariff Prioritization
&lt;/h2&gt;

&lt;p&gt;To promote specific products and services, BILLmanager allows you to manually control the display order of service plans and add-ons using a priority-based sorting feature.&lt;br&gt;
Plans with a higher priority are automatically moved to the top of the list. This function is available for both main service plans and add-ons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the editing form for the service plan.&lt;/li&gt;
&lt;li&gt;In the "Service order configuration" section, in the "Sort" field enter the desired numeric value. The lower the number, the higher the tariff plan will appear in the list.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz0l90zz0eejpi7q5r1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz0l90zz0eejpi7q5r1e.png" alt=" " width="600" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A well-configured service catalog is more than just a list of plans—it's a powerful tool for increasing sales and reducing the load on your support team. With BILLmanager, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexibly customize display using cards and filters,&lt;/li&gt;
&lt;li&gt;Guide customer attention effectively,&lt;/li&gt;
&lt;li&gt;Offer relevant services and useful add-ons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to see how it works in practice? &lt;br&gt;
👉 &lt;a href="https://www.ispsystem.com/billmanager" rel="noopener noreferrer"&gt;Try for Free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>software</category>
      <category>cloud</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>How the Service Catalog Works in BILLmanager</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Sat, 27 Sep 2025 20:07:08 +0000</pubDate>
      <link>https://dev.to/mateor404/how-the-service-catalog-works-in-billmanager-30p8</link>
      <guid>https://dev.to/mateor404/how-the-service-catalog-works-in-billmanager-30p8</guid>
      <description>&lt;p&gt;A service provider's product catalog is more than just a list of available services—it's a core monetization engine. Its structure determines whether a customer gets stuck at the selection stage, how often your support team gets questions about pricing plans, and how quickly you can test new hypotheses regarding your prices and bundled offers.&lt;/p&gt;

&lt;p&gt;A well-designed catalog reduces the load on your support team, increases conversion rates, and allows for faster hypothesis testing.&lt;/p&gt;

&lt;p&gt;In this article, I'll break down how the BILLmanager service catalog is built.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88arfrgybyakknex493q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88arfrgybyakknex493q.png" alt=" " width="793" height="458"&gt;&lt;/a&gt;&lt;br&gt;
Unsplash, Janis Ringli&lt;/p&gt;

&lt;h2&gt;
  
  
  The Structure of the BILLmanager Service Catalog
&lt;/h2&gt;

&lt;p&gt;The service catalog in BILLmanager is built as a flexible hierarchy designed to help customers easily find the solutions they need. It consists of several key components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Types — the main service categories.&lt;/li&gt;
&lt;li&gt;Product Subtypes — more detailed classifications within those categories.&lt;/li&gt;
&lt;li&gt;Tariff Plans — pre-configured packages with fixed parameters and prices.&lt;/li&gt;
&lt;li&gt;Tariff Bundles — collections of plans that can be offered as bundled solutions.&lt;/li&gt;
&lt;li&gt;Add-ons — additional services or goods that can be attached to a main order.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Product Types
&lt;/h3&gt;

&lt;p&gt;Product Types in BILLmanager are the foundational structure for classifying your services. They determine how tariff plans are grouped in the catalog and displayed to customers. Each tariff plan can belong to only one product type.&lt;/p&gt;

&lt;p&gt;BILLmanager comes pre-configured with standard categories like Web Hosting, Virtual Private Servers (VPS), Dedicated Servers, Domains, SSL Certificates, and Third-Party Licenses. You can also create custom product types to match your specific service offerings, such as Cybersecurity or Cloud Storage.&lt;/p&gt;

&lt;p&gt;Using product types helps customers find what they need faster, without having to sift through a massive, unsorted list of services. For the provider, it eliminates backend chaos—all services are automatically organized onto their own dedicated "shelves."&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Subtypes
&lt;/h3&gt;

&lt;p&gt;For more precise service classification, BILLmanager offers Product Subtypes. The rules for tariff plans work the same way here—each plan can belong to only one subtype.&lt;/p&gt;

&lt;p&gt;Unlike product types, there are no pre-configured options for subtypes; the provider creates them independently based on their service structure. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For the Virtual Private Servers (VPS) product type, you could create subtypes like Basic, Premium, and For Development.&lt;/li&gt;
&lt;li&gt;For the Web Hosting type—Shared, WordPress-Optimized.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using subtypes makes the catalog more user-friendly: customers immediately see specialized categories and spend less time choosing, while the provider gains a clear and structured system for managing their tariff plans.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tariff Plans
&lt;/h3&gt;

&lt;p&gt;A Tariff Plan in BILLmanager is a ready-made commercial offer with a fixed set of resources and a set price. It is the final unit a customer can select when ordering a service.&lt;/p&gt;

&lt;p&gt;The parameters that make up a plan vary by service type. For instance, the set of characteristics for a VPS will differ from those for web hosting. In some cases, there is built-in flexibility—the customer can customize certain configuration parameters before placing their order.&lt;/p&gt;

&lt;p&gt;The structure of a tariff plan includes add-ons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mandatory add-ons (e.g., a base amount of disk space for a VPS).&lt;/li&gt;
&lt;li&gt;Optional add-ons (e.g., an additional IP address, backup services, etc.).
Tariff plans allow you to standardize your offerings while providing the necessary flexibility for different service categories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tariff Bundles
&lt;/h3&gt;

&lt;p&gt;Bundles in BILLmanager are a tool for combining multiple services into ready-made packaged deals. They allow customers to sign up for comprehensive solutions with a single click, while providers can increase the average order value through cross-selling.&lt;/p&gt;

&lt;p&gt;Bundles allow you to set special pricing, either at a discounted rate or as a fixed package price. After payment, all services within the bundle are activated through the standard process—just as if they had been ordered individually.&lt;/p&gt;

&lt;p&gt;For example, you can use a bundle to create a "Business Startup Kit" that includes everything needed for a quick launch—like a domain, web hosting, and an SSL certificate—or any other package you can think of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Related products (Customers also buy)
&lt;/h3&gt;

&lt;p&gt;Related products in BILLmanager are additional services that are automatically offered to a customer during the checkout process for their main order. They help increase the average order value and enhance the customer experience through timely, relevant recommendations.&lt;/p&gt;

&lt;p&gt;When a tariff plan is added to the cart, the system suggests relevant related products (for example, when ordering a virtual server, it might suggest a domain or an SSL certificate). The customer can immediately add these needed services to their order without having to go back to the main catalog.&lt;/p&gt;

&lt;p&gt;All these suggestions are configured by the administrator and displayed as clear, understandable options.&lt;/p&gt;

&lt;p&gt;A well-organized service catalog in &lt;a href="https://www.ispsystem.com/platforms" rel="noopener noreferrer"&gt;BILLmanager&lt;/a&gt; allows the provider to create comprehensive offerings, simplifies sales scaling through packaged deals, and increases the average order value via automated add-on suggestions. At the same time, the customer benefits from an intuitive service navigation system, the ability to choose either ready-made bundles or individual services, and complete transparency regarding the provider's offerings and pricing.&lt;/p&gt;

&lt;p&gt;In the next article, I will cover the catalog customization capabilities in BILLmanager—how to choose its display mode, configure tariff plan grouping—and how these features reduce the time it takes to choose and order services.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>software</category>
    </item>
    <item>
      <title>How to Sell VPN as a SaaS Using VMmanager — Setup in 3 Steps</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Mon, 30 Jun 2025 20:47:14 +0000</pubDate>
      <link>https://dev.to/mateor404/how-to-sell-vpn-as-a-saas-using-vmmanager-setup-in-3-steps-13je</link>
      <guid>https://dev.to/mateor404/how-to-sell-vpn-as-a-saas-using-vmmanager-setup-in-3-steps-13je</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7e1pmnf6geaipcd7ervv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7e1pmnf6geaipcd7ervv.png" alt="Image description" width="782" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With VMmanager, you can quickly create a new service for your customers by selling VPN servers using the SaaS model. The platform includes ready-made templates and tools to help you launch this service.&lt;/p&gt;

&lt;p&gt;This enables you to easily and cost-effectively offer a higher-value product compared to traditional VPS/VDS rentals.&lt;/p&gt;

&lt;p&gt;For customers, this means getting a fully configured VPN without having to administer the guest OS of the virtual machine. Potential clients for this service include individuals and businesses willing to pay for a secure, anonymous VPN solution.&lt;/p&gt;

&lt;p&gt;VMmanager offers two popular VPN server implementations: OpenVPN and WireGuard. Choose the one that best suits your needs. You can also customize your own software as a service (SaaS) based on the existing templates. Below, I’ll explain how to set up a VPN for your customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up a VPN Service — A Step-by-Step Guide
&lt;/h2&gt;

&lt;p&gt;A SaaS-based VPN is a virtual machine (VM) with pre-deployed software, that is installed automatically using scripts.&lt;br&gt;
To configure the VPN service following this guide, you’ll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A cluster of nodes in the desired geographic location&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ispsystem.com/vmmanager" rel="noopener noreferrer"&gt;VMmanager 6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ispsystem.com/billmanager" rel="noopener noreferrer"&gt;BILLmanager&lt;/a&gt; (for service billing and managing user access to the installation script)
Let’s get started!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Step 1: Create a New VM Configuration
&lt;/h3&gt;

&lt;p&gt;For example: &lt;strong&gt;VPN-server-WG1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This configuration will be used later in BILLmanager to set up billing. Additionally, the VPN server installation script will only be available for this configuration. More information is provided below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25wbn17jeu95akw9uiup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25wbn17jeu95akw9uiup.png" alt="Image description" width="531" height="401"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Configure the VPN Script
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the "Scripts" section&lt;/li&gt;
&lt;li&gt;Choose the OpenVPN or WireGuard VPN script&lt;/li&gt;
&lt;li&gt;Click "Copy" to duplicate the script&lt;/li&gt;
&lt;li&gt;A new window will open where you can modify the parameters of the copied script:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hfjgrivazqf7xcdlw0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hfjgrivazqf7xcdlw0d.png" alt="Image description" width="780" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter the name of the script&lt;/li&gt;
&lt;li&gt;Set access to "All"&lt;/li&gt;
&lt;li&gt;Check the "Hide script contents" box (recommended to avoid exposing unnecessary technical details to clients and simplify service usage)&lt;/li&gt;
&lt;li&gt;Add a filter to restrict execution to the previously created configuration (VPN-server-WG1). This ensures the script will only be available to VMs with this configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Step 3: Configure Email Notifications
&lt;/h3&gt;

&lt;p&gt;Complete the HTML template with your custom message in the same section to set up an email notification.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div&amp;gt;
&amp;lt;img src="https://www.ispsystem.com/pictures/icon_wireguard_1.jpg" alt="Wireguard" style="width:33px;padding-right:5px; vertical-align: middle;"&amp;gt;
&amp;lt;h1 style="display:inline; vertical-align: middle;"&amp;gt;Your WireGuard server is ready&amp;lt;/h1&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div style="width: 600px"&amp;gt;
&amp;lt;p style="margin-top: 10px;"&amp;gt;To start using it, please:&amp;lt;/p&amp;gt;
&amp;lt;ol style="padding-left:20px;"&amp;gt;
&amp;lt;li&amp;gt;Download and install the client on your device:&amp;lt;/li&amp;gt;
&amp;lt;div class="download" style="margin:10px 0 10px -15px;"&amp;gt;
&amp;lt;a href="https://www.wireguard.com/install/"&amp;gt;&amp;lt;img src="https://www.ispsystem.com/pictures/download-windows-linux.jpg" alt="windows" class="windows" style="width:194px;"&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href="https://play.google.com/store/apps/details?id=com.wireguard.android&amp;amp;amp;hl=ru&amp;amp;amp;gl=US"&amp;gt;&amp;lt;img src="https://www.ispsystem.com/pictures/download-android.jpg" alt="android" class="android" style="width:137px;"&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href="https://apps.apple.com/ru/app/wireguard/id1441195209"&amp;gt;&amp;lt;img src="https://www.ispsystem.com/pictures/download-apple.jpg" alt="ios" class="ios" style="width:137px;"&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;li style="margin-bottom: 10px;"&amp;gt;Import the file attached to this email into WireGuard&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Make a connection&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s how the WireGuard setup notification email will appear to your clients:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi0up8cjny3rtkxuadtk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi0up8cjny3rtkxuadtk.png" alt="Image description" width="787" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The BILLmanager integration uses the virtual machine template created in Step 1. This template is linked to a specific tariff plan that includes the service cost. You can configure the integration following the official documentation.&lt;/p&gt;

&lt;p&gt;Customers who purchase this tariff can then run the VPN installation script on their virtual machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Customers Order the VPN Service: WireGuard Example
&lt;/h2&gt;

&lt;p&gt;The customer journey for ordering a VPN through BILLmanager is straightforward.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ordering the VM: First, the customer selects a tariff plan linked to the VPN-server-WG1 configuration.&lt;/li&gt;
&lt;li&gt;Script execution. After provisioning, the customer logs into VMmanager 6 and runs the pre-configured VPN installation script on their VM.&lt;/li&gt;
&lt;li&gt;Email. Once the script has finished running, the customer receives an email containing setup instructions and a VPN configuration file. The email also includes download links for client apps that are pre-configured for all major operating systems, including Windows, macOS, Linux, Android, and iOS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This workflow can be applied to other SaaS services. Just prepare an installation script for the additional software or use pre-built VMmanager templates.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>vpn</category>
      <category>tutorial</category>
      <category>howto</category>
    </item>
    <item>
      <title>How to build a flat L2 network between VMs and hardware in different locations</title>
      <dc:creator>Mateo Rivera</dc:creator>
      <pubDate>Mon, 26 May 2025 00:33:48 +0000</pubDate>
      <link>https://dev.to/mateor404/how-to-build-a-flat-l2-network-between-vms-and-hardware-in-different-locations-1gk2</link>
      <guid>https://dev.to/mateor404/how-to-build-a-flat-l2-network-between-vms-and-hardware-in-different-locations-1gk2</guid>
      <description>&lt;p&gt;Hello everyone! My name is Mateo. I'm a software developer and network engineer from Argentina.&lt;/p&gt;

&lt;p&gt;At my company, we use a wide variety of technical solutions: open-source software, proprietary solutions, and many others. While there are many useful software product manuals available, official documentation does not always cover solving complex problems and corner cases. So I will be preparing useful articles and sharing my own experience in this field on my blog.&lt;/p&gt;

&lt;p&gt;For now, I have chosen to focus on the products offered by ISPsystem: VMmanager and DCImanager. This article covers the flat networks workflow. I hope you enjoy reading and find the information useful!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bmrvtmj8uwzyn6ve6j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bmrvtmj8uwzyn6ve6j0.png" alt="Unsplash, Shubham Dhage" width="789" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your infrastructure includes both VMs and physical servers, you may one day find that you need to connect them to the single network. L3 connectivity is not always the answer. And sometimes, you need to combine services into an L2 network.&lt;/p&gt;

&lt;p&gt;For example, you have a platform installed on a virtual machine to manage your physical IT infrastructure. If all your hardware is located in one site and you have access to network equipment, you can solve the problem by configuring VLANs on switch ports and in the hypervisor.&lt;/p&gt;

&lt;p&gt;But what if the servers and VMs are geographically distributed, and you don't have access to switches and routers in the data center? So, you will need to configure L2VPN between the sites.&lt;br&gt;
Here's how you can solve this problem.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;We’ll use VxLAN tunnels and the BGP EVPN dynamic routing protocol to connect two networks.&lt;/p&gt;

&lt;p&gt;If you already have VMmanager, turn on the "Virtual Networks" technology for your cluster. VMmanager will set up the BGP FRR daemon on the cluster nodes and create VxLAN tunnels.&lt;br&gt;
Here’s an example.&lt;/p&gt;

&lt;p&gt;Let's assume we have a Juniper QFX5100 physical switch with VxLAN and BGP EVPN support. Let's connect a physical server to port xe-0/0/1.&lt;/p&gt;

&lt;p&gt;VMmanager cluster consists of two nodes connected to a switch. Node 1 hosts a virtual machine that is connected to a virtual network. A physical server located at another site is connected to the Juniper QFX switch via port XE-0/0/1. A routable network is configured between the QFX switch and nodes 1 and 2.&lt;/p&gt;
&lt;h2&gt;
  
  
  The setup process
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Configure the switch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect the QFX to the routable network so that the address on the lo0.0 interface is accessible from the VMmanager cluster nodes (in our example, this is 10.3.0.47).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the AS number to use. In this example it is 62200:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;routing-options {
  router-id 10.3.0.47;
  autonomous-system 62200;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
Configure VTEP:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch-options {
  vtep-source-interface lo0.0;
  route-distinguisher 10.3.0.47:1;
  vrf-target target:62200:1;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
Configure BGP and specify all nodes of your VMmanager cluster as neighbors:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;protocols {
    bgp {
        group VMmanager {
            type internal;
            local-address 10.3.0.47;
            family evpn {
                signaling;
            }
            peer-as 62200;
            neighbor 172.31.33.2 {
                cluster 10.3.0.47;
            }
            neighbor 172.31.33.3 {
                cluster 10.3.0.47;
            }
        }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Set up VMmanager
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the cluster settings, turn on "Virtual Networks" and switch to Route Reflector mode.&lt;/li&gt;
&lt;li&gt;Set the local autonomous system to 62200.&lt;/li&gt;
&lt;li&gt;Add QFX 10.3.0.47 with autonomous system 62200 to the neighbors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s assume that &lt;a href="mailto:johndoe@ispsystem.net"&gt;johndoe@ispsystem.net&lt;/a&gt; is our default VMmanager user. Log in to the administrator user account and do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new virtual network: 192.168.10.0/24.&lt;/li&gt;
&lt;li&gt;Create a new virtual machine in this virtual network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After creating the VM, go to the “Network Settings” section and copy the VxLAN number. In our example, the interface is connected to vxbr1194142, which means that our VNI will be 1194142.&lt;/p&gt;
&lt;h3&gt;
  
  
  Return to the QFX configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Add the EVPN protocol settings:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;protocols {
    evpn {
        vni-options {
            vni 1194142 {
                vrf-target target:62200:1194142;
            }
        }
        encapsulation vxlan;
        multicast-mode ingress-replication;
        extended-vni-list all;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Please note: it is crucial to specify vrf-target = target:ASN:VNI, otherwise the routes will not be established and there will be no connectivity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Create a VLAN:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vlans {
    test {
        vlan-id 100;
        vxlan {
            vni 1194142;
            ingress-node-replication;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
Connect the following port to this VLAN:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interfaces {
    xe-0/0/1 {
        ether-options {
            auto-negotiation;
        }
        unit 0 {
            family ethernet-switching {
                interface-mode access;
                vlan {
                    members test;
                }
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Done! Now the VM you created and the server are on the same flat network.&lt;/p&gt;
&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;Let's check the connection on our server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root&amp;gt; show evpn database
Instance: default-switch
VLAN  DomainId  MAC address        Active source                  Timestamp        IP address
     1194142    00:1e:67:ca:6d:a9  xe-0/0/1.0                     Mar 12 15:44:40  192.168.13.3
     1194142    52:54:00:6b:33:a6  172.31.33.2                    Mar 12 14:12:26
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also, let's check the connection on the VM Manager node. Run the vtysh command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;show evpn mac vni 1194142
Number of MACs (local and remote) known for this VNI: 2
Flags: N=sync-neighs, I=local-inactive, P=peer-active, X=peer-proxy
MAC               Type   Flags Intf/Remote ES/VTEP            VLAN  Seq #'s
00:1e:67:ca:6d:a9 remote       10.3.0.47                            0/0
52:54:00:6b:33:a6 local        vm13706_vxlan0                       0/0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other servers can be added to this network by simply assigning the VLAN to the appropriate port. In addition, we can create more virtual machines for the user in this VxLAN. They will all be inside the virtual network.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;We combined virtual machines and physical servers in different locations into a flat, non-routable L2 network. Now, we can manage physical servers through DCImanager or deploy a private network between virtual and physical servers to complete other tasks.&lt;/p&gt;

&lt;p&gt;The most important feature of this approach is that it does not involve routing. With VxLAN, traffic is encapsulated and appears to external routers as UDP traffic between two points. &lt;/p&gt;

&lt;p&gt;I hope this mini-tutorial was helpful and saved you some time. I plan to publish new tutorials on my blog, so stay tuned for updates and subscribe!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>cloud</category>
      <category>network</category>
    </item>
  </channel>
</rss>
