בכמה חברות נוצרים פורטאל לקוחות ופלטפורמת רישוי נפרדים: הפורטאל נבנה „ללקוחות“ (הורדות, כרטיסים, נתוני לקוח), בעוד נושא הרישוי מתנהל „במוצר“ (הפעלה, מפתחי רישיון, תקופות תוקף). כל עוד שניהם קטנים, זה מתקבל על הדעת. ברגע שמתחברים כמה מוצרים, מהדורות, חוזי תחזוקה, מנדנטים, חשבונות שותפים או מודלים תפעוליים שונים (On-Prem ו-Cloud), המצב מתהפך: תפקידים אינם עקביים, הורדות אינן ניתנות לשיוך חד־משמעי, התמיכה אינה רואה מה אכן מורשה, והתחזוקה הפנימית הופכת ליקרה.
חיבור נקי בין פלטפורמת רישוי ופורטאל לקוחות אינו אינטגרציה קוסמטית, אלא החלטה מקצועית: מדובר במודל דומיין משותף, בזהויות עמידות, בהרשאות שניתן לעקוב אחריהן ובתהליכים שיישארו יציבים תחת עומס, במקרי קצה ובמשך שנים. מי שניגש לכך בעקביות מרוויח לא רק „פורטאל יפה יותר“, אלא בעיקר פחות עבודה ידנית, פחות שגיאות, מחזורי שחרור מהירים יותר ויכולת ביקורת טובה יותר.
המאמר הבא מתאר באופן פרקטי כיצד לתכנן ולממש את פלטפורמת הרישוי והפורטאל כשרשרת מערכתית משולבת: ממודל הנתונים דרך אימות, REST-ממשקים ומכניקת הורדה/עדכון ועד לתפעול, מיגרציה ומודרניזציה של תוכנה קיימת (לדוגמה Delphi-מבוססות). המטרה היא גישה שמצד אחד תקנית מבחינה טכנית ומצד שני ברורה למחלקות B2B, לתמיכה וללקוחות.
מדוע הקישור נכשל לעתים קרובות: נקודות שבר טיפוסיות
בעשייה המעשית הקישור נכשל לא בגלל „חוסר טכנולוגיה“, אלא בגלל מונחים ואחריות לא אחידים. אנו רואים את נקודות השבר הללו בתדירות גבוהה במיוחד:
- זהויות נפרדות: לקוחות נכנסים לפורטאל באמצעות אימייל/סיסמה, במוצר קיים מפתח רישיון או טביעת מכונה שאין לה שיוך נקי לחשבון הפורטאל.
- ישויות לא אחידות: „לקוח“, „חברה“, „מנדנט“, „מיקום“ ו“חוזה“ משמעותם ב-CRM, במערכת רישוי ובפורטאל שונים זה מזה.
- הסמכת הרשאות שנוספו היסטורית: זכויות הורדה, זכויות אדמיניסטרציה וזכויות תמיכה נוצרות כמקרי חריגים („תן לאדם הזה גישה“), ללא מודל תפקידים וללא כללים מתועדים.
- תהליך גרסאות ושחרור ללא הפורטאל: גרסאות מופצות כקבצים בתיקיות, בעוד שהפורטאל רק „מציע הורדות איפשהו“; תיקוני חירום, ערוצי בטא או קווי LTS אינם מיוצגים.
- חוסר מעקב: מי ייחס מתי איזו רישיון? מי הוריד מה ומתי? מה היה בתוקף בזמן תקרית?
- תמיכה ללא הקשר: כרטיסי תמיכה בפורטאל, מצב רישוי בשרתי רישוי, מצבי התקנה אינם מתועדים בעקביות; הפתרון עולה זמן וכסף.
הפתרון אינו לחבר עוד מסד נתונים או כלי נוסף. המכריע הוא ליבה משותפת: מודל דומיין שמבין גם פורטאל וגם רישוי – ושכבת אינטגרציה שמתועדת, מתורגמנת בגרסאות ונושאת מבחינה תפעולית.
מודל דומיין משותף: בסיס לעקביות
„לחבר בצורה נקייה“ פירושו בראש ובראשונה: אותם ישויות מקצועיות בשני העולמות. זה נשמע טריוויאלי אך הוא ההשפעה החשובה ביותר נגד עבודות תחזוקה ומקרי חריג.
אילו ישויות כמעט תמיד תזדקקו להן
למרות שכל עסק שונה, סט של ישויות ליבה שמתאים להרחבה מאוחר יותר מוכיח את עצמו:
- ארגון / חשבון: הישות המשפטית (לקוח) או חשבון שותף.
- משתמש: אנשים טבעיים, אופציונלית עם MFA ו-SSO.
- תפקידים ומדיניות: זכויות לא „ללחוץ תכונה־תכונה“, אלא כמכלולים של תפקידים + מדיניות מבוססת כללים.
- מוצר: מזוהה חד־משמעית (קו מוצר), כולל רעיון מהדורה/מודול.
- רישיון: זכות חוזית/שימוש (תקופה, היקף, דגלי תכונה, מושבים, סביבות).
- התקנה / הפעלה: יחידת שימוש קונקרטית (למשל מופע, מנדנט, מכשיר, מכולה).
- ערוץ שחרור: Stable, LTS, Beta; ניתן להגדיר לפי מוצר/מהדורה.
- ארטיפקט / הורדה: מתקין, חבילה, תמונת מכולה, קובץ חתימה, סכימות בדיקה.
- חוזה / תחזוקה: רמת תמיכה, זכאות לעדכונים, פרמטרי SLA.
חשוב להפריד בין „רישיון“ (זכות) לבין „התקנה/הפעלה“ (שימוש בפועל). מערכות רבות מערבבות בין השניים; אז כל שינוי בתשתית (שרת חדש, וירטואליזציה, קונטיינריזציה) הופך לגיהינום רישוי.
רב־מנדנטיות ומבנים בהקשר B2B
לקוחות B2B מצפים לעתים למבנים היררכיים: Konzern > Gesellschaft > Standort; או שותף > לקוח קצה; או ארגון IT שמנהל מספר מנדנטים תפעוליים. תכננו את המבנים האלה בפורטאל ובמערכת הרישוי יחד:
- היררכיות: ארגונים יכולים להכיל תת־ארגונים.
- ניהול מועבר: IT מרכזי מנהל משתמשים, אך אתרים מנהלים תפקידים מקומיים.
- שיוך חוזים: חוזה יכול לחול ברמת הקונצרן או ברמת המיקום.
ללא יכולת זו ייווצרו מאוחר יותר „חשבונות צל“ או פתרונות עקיפה (למשל מספר חשבונות פורטאל עבור אותו לקוח) שפוגעים באיכות הנתונים לאורך זמן.
זהות, כניסה ואמון: להגדיר אימות נכון
הקשר קם ונסמך על זהויות. אם הפורטאל ופלטפורמת הרישוי משתמשים בדרכי אימות שונות, ניהול משתמשים, זכויות ותמיכה יהפכו למורכבים לאורך זמן.
SSO, MFA וספקי זהות חיצוניים
בסביבת B2B תרחישים נפוצים הם:
- פורטאל עם כניסה מקומית (אימייל + MFA) עבור לקוחות קטנים יותר.
- SSO דרך ספק זהות (למשל Entra ID/Azure AD, Keycloak, Okta) עבור לקוחות גדולים.
- היברידי: SSO לחשבונות ארגוניים, כניסה מקומית לשותפים/חיצוניים.
חיוני שיהיה גוף משתמשים אחיד בפורטאל שיכול לקשור זהויות חיצוניות. שרת הרישוי לא צריך לספק „ממשק כניסה“ בעצמו, אלא לצרוך הרשאה דרך טוקנים/טענות. זה מצמצם את שטח הפגיעה ומונע ניהול חשבונות כפול.
הרשאות מבוססות טוקן עבור APIs
לאינטגרציה בין פורטאל הלקוחות, שרת הרישוי ובמידת הצורך המוצר/קליינט, APIs המבוססים על REST עם הרשאות מבוססות טוקן (Access Tokens קצרים־מועד, אם צריך Refresh Tokens, Scopes ברורים) הם הסטנדרט. המלצות טיפוסיות מהשטח:
- Scopes לפי דומיין (למשל license:read, license:assign, downloads:read, org:admin).
- טוקנים שירות־אל־שירות לאינטגרציות Backend (פורטאל ↔ פלטפורמת רישוי), לא להשתמש בסיסמאות משתמשים.
- הפרדה ברורה בין „משתמש פועל“ ל“מערכת פועלת“ (Impersonation רק במוד מודע וניתן לאיתור).
כך יכול הפורטאל להציג, למשל, סיכומי רישיונות בלי להכיל את „לוגיקת הרישיון“ עצמה. ולהיפך — שרת הרישוי יכול לשחרר הורדות בלי להכיר סשנים של הפורטאל.
מודל תפקידים והרשאות: פחות מקרי חריג, יותר שליטה
הסיבה הנפוצה לשינויים מאוחרים היא מושג הרשאות גס מדי. „אדמין“ ו“משתמש“ לא מספיקים כאשר לחברה יש כמה מחלקות, שותפים, ריזלרים או ספקי שירות חיצוניים.
תפקידים במקום עיגולי תכונה — אבל בשילוב מדיניות
מודל דו־שכבתי מוכח כיעיל:
- תפקידים כמכלולים ברורים (למשל Admin לקוח, מנהל רישיונות, מנהל הורדות, איש קשר תמיכה, Admin חשבוניות).
- מדיניות כחוקים על ההקשר (למשל „יכול להקצות רישיונות רק לארגון ולתת־ארגונים שלו“, „יכול לראות הורדות LTS רק כאשר תחזוקה פעילה“).
כך הפורטאל נשאר ברור למשתמשים, בעוד שבפנים יש את הגמישות מבלי להמציא תפקיד חדש לכל מקרה־פרט.
Audit-Logging כחובה, לא כתוספת
בעיקר בהקצאות רישיון ושחרור הורדות, יכולת מעקב היא קריטית. תכננו אירועי Audit מההתחלה:
- מי יצר/שינה/שיוך איזה רישיון?
- איזו התקנה הופעלה או הושבתה?
- אילו ארטיפקטים הורדו ומתי?
- אילו תפקידים הוענקו?
יומני Audit אינם רק לצורך ציות. הם מקצרים משמעותית זמני תמיכה, כי מחלוקות („היה לנו גישה“) ניתנות להכרעה על סמך עובדות.
הורדות, גרסאות ונתיבי עדכון: לאחד פורטאל ולוגיקת רישוי
פורטאל לקוחות נשפט לעתים קרובות על ידי אזור ההורדות. כשיש שם אי־סדר, כל הפלטפורמה נראית לא מקצועית — גם אם הרישוי נכון. מצד שני, תהליכי שחרור טובים נעצרים אם הפורטאל לא יודע לייצג את השחרורים בצורה נקיה.
ערוצי שחרור, תחזוקה והרשאות
מודל חזק מקשר בין נראות שחרור למצב תחזוקה ופרמטרי רישיון:
- אילו גרסאות הלקוח רשאי לראות? (למשל רק במהלך תחזוקה, רק LTS)
- אילו פלטפורמות? (Windows, Linux, macOS; במידת הצורך Windows 11 ARM64)
- איזו מהדורה/מודולים? (למשל תוספים רק עם רישיון מתאים)
- איזו סביבה? (ייצור מול בדיקות/QA; רישיונות מסוימים מאפשרים מופעי בדיקה נוספים)
טכנית זה אומר: הורדות אינן „ממויינות בתיקיות“, אלא ארטיפקטים מאוחסנים עם מטא־דטה (מוצר, גרסה, ערוץ, פלטפורמה, hash, חתימה, תלותים) ומונגשות דרך API של הפלטפורמה/פורטאל עם סלקציה מבוססת רישוי.
אינטגריטיות: חתימות, hash וארטיפקטים שאפשר לעקוב אחריהם
באפליקציות B2B מנגנוני שלמות הם סימן איכות:
- Checksums (למשל SHA-256) מוצגים בפורטאל.
- חתימות דיגיטליות למתקינים/חבילות (בהתאם לטכנולוגיה).
- ארטיפקטים בלתי ניתנים לשינוי: מספר גרסה מפנה תמיד לאותו חבילת בינארי.
כך אזור ההורדות לא רק „נוח“, אלא גם חזק מבחינה תפעולית ובטיחותית.
עדכוני דלתא, מתקינים לא מקוונים ולקוחות „Air-Gap“
סביבות ארגוניות רבות מוגבלות: פרוקסי, ללא הרשאות אדמין, Air-Gap, תהליכי שינוי מחמירים. לכן יש לתכנן נתיבי עדכון מרובים:
- עדכון מקוון דרך API/Repository (נוח, אך לא תמיד אפשרי).
- חבילות לא מקוונות (מתקינים מרוכזים + תלותים + חתימות).
- שרשראות עדכון מתועדות (למשל „מ-7.2 ל-7.6 רק דרך ביניים 7.4“).
הפורטאל צריך להסביר נתיבים אלה ולהציע אוטומטית את החבילות המתאימות — בהתאם למצב הרישיון ולמצב ההתקנה הקיים.
לממש רישוי טכנית: מקוון, לא מקוון והיברידי
„שרת רישוי“ נשמע כרכיב יחיד. במציאות זה שילוב של נתוני רישיון, חתימות, לוגיקת הפעלה ואינטגרציות בתוך המוצר.
סוגי רישיונות שכדאי להפריד באופן ברור
- Named User: הרישיון קשור למשתמש (הפורטאל מוביל בנושא זהות).
- Concurrent / Floating: שימוש מקביל מוגבל; דורש ניטור זמנים.
- Device/Server: קשירה לחומרה/VM/קונטיינר; צריך כללים ברורים מהו „החלפת חומרה“.
- מבוסס תכונה/מודול: דגלי תכונה כחלק מהרישיון.
- מבוסס שימוש: צריכה (למשל עסקאות) דורשת Metering ודיווח.
במיוחד בצורות מעורבות, מודל נתונים חזק הוא גורלי כדי שפורטאל ופלטפורמת הרישוי יתארו את אותה אמת.
רישיונות לא מקוונים: מציאות בסביבת B2B
רבים מהארגונים זקוקים להפעלה לא מקוונת. פתרון יציב כולל:
- קבצי רישיון חתומים (למשל JSON/XML + חתימה), שהמוצר יכול לאמת מקומית.
- Challenge-Response להפעלות שבהן מעורב fingerprint חומרה/מופע.
- ביטול/שינויים כתהליך: לא מקוון אינו „לעולם לא לשנות“, אלא „שינויים מתוכננים וממסודרים“.
הפורטאל כאן מרכזי: עליו לנהל בקשות לא מקוונות (איזו התקנה, מהי המטרה), לספק קבצים ולהראות היסטוריה. בלי פורטאל, רישוי לא מקוון נגמר בדרך כלל ב-PingPong באימייל ובהעתקות בלתי נשלטות.
ארכיטקטורה: להפריד פורטאל, פלטפורמת רישוי ומוצר בעזרת REST-שרתים
טכנית זה נקי כאשר פורטאל ופלטפורמת רישוי אינם „מלאבסים“ באותה בסיס קוד, אלא מדברים דרך ממשקי API ברורים. זה נכון במיוחד כשמתבצעת מודרניזציה של תוכנה קיימת (למשל יישום Delphi-VCL) או תוספות רכיבי רשת.
Layer-3 ארכיטקטורה כהנחיה
מבנה מוכח הוא הפרדה ל:
- Presentation: פורטאל ווב, אפי־UI למנהלים, Self-Service.
- Business-Services: לוגיקת רישוי, הרשאות, כללי חוזים, בחירת הורדות.
- Data Access: מסד נתונים, אחסון, Audit-Store, Queueing.
ההפרדה אינה מטרה בפני עצמה. היא מאפשרת ל-UX של הפורטאל להשתנות ללא שבירת כללי הרישוי — ולגרום להחלטות רישוי שניתנות לבדיקה ולגרסאות.
REST-API: גרסאות, דפוסי שגיאה, אידמפוטנטיות
כאשר פורטאל ופלטפורמת רישוי מקושרים דרך REST, פרטים טכניים קובעים את יכולת התחזוקה:
- גרסאות API: לפרוס שינויים שוברי־תאימות בצורה מבוקרת (למשל /v1, /v2 או מבוסס header).
- נקודות קצה אידמפוטנטיות לשיוכים („set license assignment“ במקום „add“ בלי הגנות).
- קודי שגיאה ברורים (409 בסכסוכים, 403 בחוסר זכויות, 422 בחוסר תוקף מקצועי).
- Correlation-IDs למעקב בין Portal ↔ Service ↔ DB.
כך ניתנים לפתור תקלות תמיכה ואינטגרציה מהר יותר, כי הלוגים והתגובות עקביים.
Delphi-, C#- ו־Hybrid סביבות — אינטגרציה פרגמטית
חברות רבות פועלות עם מערכות Delphi גדלות ומשלימות אותן בפורטאלים או שירותי ווב. אינטגרציה נקייה משמעותה פי־יתר:
- הקליינט הקיים (למשל VCL) צורך מידע רישוי דרך REST-API במקום מקבצים מקומיים או DBs פרופרייטאריים.
- הלוגיקה המקצועית נשארת ב-Service, לא בפורטאל ולא ב“מתקין“.
- גישה לנתונים ממודרנשת (למשל משכבת גישה עתיקה לריפוזיטוריות ברורות, ב־Delphi לעתים עם BDE-החלפה עם חיבור טבעי), כדי שתכונות רישוי ופורטאל לא יכשלו בגלל חבויות ישנות.
במיוחד במודרניזציה בשלבים, ההפרדה הזו חשובה: ניתן לפתח את הפורטאל ופלטפורמת הרישוי בעוד הקליינט הדסקטופ מתקדם בשלבים.
תפעול ובטיחות: מה שחשוב באמת ביום־יום
פלטפורמה מחוברת היטב אינה רק פונקציונלית — היא כזו שלא דורשת טיפול מיוחד בתפעול. זה כולל יציבות, ניטור, תהליכים ברורים ואמצעי אבטחה שאינם חוסמים עבודה תקינה.
ניטור, התראות ויכולת מעקב
- ניטור טכני: השהיות, שיעורי שגיאות, אורך תורים, מצב DB.
- ניטור עסקי: מספר הפעלות בתקופות, דפוסי הורדה חריגים, הקצאות שנכשלו.
- Traceability: מזהי בקשה רציפים, לוגים מובנים, חיפוש מרכזי בלוגים.
הפורטאל אינו רק „פרונטאנד“, אלא מקור חשוב לנתוני תהליך: איפה לקוחות נוטשים? אילו פעולות יוצרות כרטיסי תמיכה? אלה רמזים קונקרטיים על חיכוך בתהליך הרישוי.
Rate Limiting, הגנה מפני ניצול ושמירה על נתונים רגישים
APIs של הורדה ורישוי הם יעד אטרקטיבי לניצול. אמצעים מקובלים:
- Rate Limiting למשתמש/ארגון/IP לנקודות קצה קריטיות.
- URLים חתומים להורדה בתוקף קצר במקום „קישורים סטטיים“.
- Least Privilege במודל התפקידים, במיוחד עבור חשבונות שותפים.
- הפרדה בין PII ונתוני רישוי, כשמתאים, יחד עם כללי מחיקה/שימור ברורים.
כך המערכת נשארת עמידה מבלי להעמיס על תהליכים לגיטימיים של לקוחות.
שירותים על Windows ו־Linux: תפעול ניתן לתכנון במקום פתרון חא־אוט
תלוי בסביבה, שירותי רישוי ועבודות רקע פועלים כ־Windows-Services או Linux-Services. המכריע אינו מערכת ההפעלה, אלא מסגרת תפעולית עקבית:
- פריסת קוד מסודרת (קונפיגורבילית, לשחזור, ניתנת לביטול).
- ניהול קונפיגורציה (Secrets, Connection Strings, תעודות).
- משימות מתוזמנות (למשל סנכרון מצב חוזים, אינדוקס ארטיפקטים, יצירת דוחות).
אם יסודות אלה חסרים, כל הרחבה (מוצר חדש, ערוץ חדש, לקוח חדש עם SSO) תהפוך ליקרה באופן בלתי פרופורציונלי.
מיגרציה: ממערכת צומחת לפלטפורמה מחוברת
נדיר שמתחילים מאפס. בדרך כלל כבר קיימים מפתחות רישיון, נתוני לקוחות ב-CRM/ERP, אזור הורדות ב-SharePoint או FTP, ומנגנוני הפעלה היסטוריים במוצר. מיגרציה מוצלחת מכבדת את הקיים ומובילה אותו בבקרה למודל חדש.
ניקוי נתונים ומיפוי: לתכנן בריאליות
מסלול הקריטי הוא לרוב לא היישום, אלא איכות הנתונים. צעדים סבירים:
- לאחד מונחים: מהו „לקוח“, מהו „מנדנט“, מהי „התקנה“?
- להגדיר טבלאות מיפוי: קודי מוצר ישנים ↔ מזהי מוצר חדשים, סוגי רישיון ישנים ↔ דגמי רישיון חדשים.
- זיהוי כפילויות: חברות/אנשים כפולים, אימיילים חוזרים, דומיינים שגויים.
- תאריך־מפתח ושלב מעבר: תפעול מקביל קצר ככל האפשר, אך ארוך כפי שצריך.
חשוב במיוחד: כלל ברור מהו המערכת המובילה (פורטאל/פלטפורמת רישוי מול ERP/CRM) ואיך מתבצע סנכרון.
הטמעה מדורגת ללא „Big Bang“
מפת דרכים פרקטית לרבות סביבות B2B:
- שלב 1: כניסה לפורטאל, נתוני לקוח בסיסיים, מודל תפקידים, הורדות בסיסיות (עדיין ללא סינון רישיוני חמור).
- שלב 2: להכניס ישויות רישיון, לשלב מצב תחזוקה, לסנן הורדות לפי כללים.
- שלב 3: הפעלות/התקנות, תהליכים לא מקוונים, השלמת Audit-Logs.
- שלב 4: אינטגרציה עמוקה למוצר (עדכון אוטומטי, Self-Service, Telemetry/Metering אם רצוי).
כך ניתן לספק ערך מהיר (פחות הורדות ידניות, הגדרות ברורות) בעוד סוגיות הרישוי וההפעלה המורכבות נמשכות בבקרה.
הבטחת איכות: בדיקות, Staging ו“מציאויות שקריות“
לתהליכי רישוי ופורטאל יש הרבה מקרי קצה: תום תחזוקה, ביטולים חלקיים, הורדה מהמהדורה, החלפת חומרה, החלפת אנשי קשר, גישת שותפים, משתמשים חסומים. אם מקרי הקצה האלה מתגלים רק בהפעלה, זה עולה זמן תמיכה ופוגע באמון.
מקרי בדיקה שנשכחים לעתים קרובות
- תחזוקה מסתיימת היום: אילו הורדות יהיו נגישות מחר?
- משתמש עוזב את החברה: מה קורה לזכויות Named-User?
- ארגון מתחלק/ממוזג: האם היסטוריית הרישיונות נשמרת ברת־מעקב?
- רישיון לא מקוון מתחדש: האם הקובץ הישן נותר בתוקף?
- שותף מנהל לקוחות קצה: הפרדה ברורה, ללא דליפות נתונים.
הגדרה טובה מספקת סביבות Staging עם נתוני אמת אנונימיים או נתוני בדיקה ריאליסטיים, כדי שההתנהגות לא תעבוד רק „בלולאה“ אלא גם בתנאים דומים לייצור.
סיכום: פלטפורמה אחת, תהליך אחד, אמת אחת
לחבר בפירוט פלטפורמת רישוי ופורטאל לקוחות פירושו לחשוב על כל השרשרת: זהות, תפקידים, לוגיקת חוזים/תחזוקה, שחרורים, הורדות, הפעלות ויכולת בדיקה. כאשר האלמנטים האלה נשענים על מודל דומיין משותף ו-APIs יציבים, נוצר מערכת שמקנה קנה מידה: יותר מוצרים, יותר מבני לקוחות, יותר פלטפורמות — ללא גידול מעריכי במקרי חריג.
עבור חברות B2B זה אינו רק עניין IT. זה עניין יעילות וסיכונים: פחות שחרורים ידניים, עדכונים מהירים יותר, תהליכי תמיכה ברורים יותר ויכולת מעקב משופרת. מבחינה טכנית, ארכיטקטורה מבודדת עם REST-Services והשכבות הנכונות משתלמת — במיוחד כשיישומים צומחים (למשל מערכות Delphi) ממודרנזים בשלבים ומצורפים לפורטאלי רשת.
אם אתם מעוניינים לקונסוליד את מערכות הרישוי והפורטאל הקיימות או לבנות מודל חדש עם תפקידים ברורים, ערוצי הורדה ומנגנוני הפעלה יציבים, נשמח לדון בארכיטקטורת יעד ובהתוואי מיגרציה ריאלי: https://net-base-software-gmbh.de/kontakt/