<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.comfac.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BabiSender</id>
	<title>MediawikiCIT - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.comfac.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BabiSender"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php/Special:Contributions/BabiSender"/>
	<updated>2026-06-05T09:46:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=107</id>
		<title>Troubleshooting: Access &amp; Permission Issues</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=107"/>
		<updated>2026-03-02T02:03:08Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: /* Related Pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access &amp;amp; Permission Issues ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing trouble finding specific pages, or receiving the error &amp;quot;Only administrators can make changes&amp;quot; even though you already have administrator or super administrator privileges, you likely need to set up &#039;&#039;&#039;Two-Factor Authentication (2FA)&#039;&#039;&#039; first.&lt;br /&gt;
&lt;br /&gt;
=== Why Does This Happen? ===&lt;br /&gt;
&lt;br /&gt;
This wiki requires Two-Factor Authentication (2FA) to be enabled before administrator-level permissions are fully activated. Without 2FA, your admin or super admin account will have restricted access — you may be unable to edit protected pages or perform administrative actions.&lt;br /&gt;
&lt;br /&gt;
=== Step-by-Step: Setting Up Two-Factor Authentication ===&lt;br /&gt;
&lt;br /&gt;
# Log in to your account as usual.&lt;br /&gt;
# Go to [[Special:Preferences]] (click your username in the top-right corner, then select &#039;&#039;Preferences&#039;&#039;).&lt;br /&gt;
# Navigate to the &#039;&#039;&#039;User profile&#039;&#039;&#039; tab, then scroll down to the &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039; section.&lt;br /&gt;
# Click &#039;&#039;&#039;Enable&#039;&#039;&#039; next to the authenticator app option.&lt;br /&gt;
# Use an authenticator app (such as Google Authenticator, Microsoft Authenticator, or Authy) to scan the QR code displayed.&lt;br /&gt;
# Enter the &#039;&#039;&#039;6-digit verification code&#039;&#039;&#039; generated by your app to confirm setup.&lt;br /&gt;
# Save your scratch codes in a safe place — these are your backup codes if you lose access to your device.&lt;br /&gt;
# Click &#039;&#039;&#039;Submit&#039;&#039;&#039; to complete the setup.&lt;br /&gt;
&lt;br /&gt;
Once 2FA is enabled, log out and log back in. You will be prompted to enter your 2FA code on login. After re-authenticating, your administrator permissions will be fully active.&lt;br /&gt;
&lt;br /&gt;
=== Still Having Trouble? ===&lt;br /&gt;
&lt;br /&gt;
If you have set up 2FA and are still experiencing access issues, check the following:&lt;br /&gt;
&lt;br /&gt;
* Confirm that your account has been granted the correct user group (&#039;&#039;&#039;Administrator&#039;&#039;&#039; or &#039;&#039;&#039;Super Administrator&#039;&#039;&#039;) by a bureaucrat.&lt;br /&gt;
* Try clearing your browser cache and logging in again.&lt;br /&gt;
* Check [[Special:ListGroupRights]] to verify the permissions associated with your role.&lt;br /&gt;
* Contact a wiki bureaucrat or system administrator for further assistance.&lt;br /&gt;
&lt;br /&gt;
=== Related Pages ===&lt;br /&gt;
&lt;br /&gt;
* [[Special:Preferences]] — Manage your account settings and enable 2FA&lt;br /&gt;
* [[Special:ListUsers]] — View user accounts and their groups&lt;br /&gt;
* [[Special:ListGroupRights]] — View permissions for each user group&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you continue to experience issues, please reach out to your wiki administrator.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=106</id>
		<title>Troubleshooting: Access &amp; Permission Issues</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=106"/>
		<updated>2026-03-02T02:02:19Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Access &amp;amp; Permission Issues ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing trouble finding specific pages, or receiving the error &amp;quot;Only administrators can make changes&amp;quot; even though you already have administrator or super administrator privileges, you likely need to set up &#039;&#039;&#039;Two-Factor Authentication (2FA)&#039;&#039;&#039; first.&lt;br /&gt;
&lt;br /&gt;
=== Why Does This Happen? ===&lt;br /&gt;
&lt;br /&gt;
This wiki requires Two-Factor Authentication (2FA) to be enabled before administrator-level permissions are fully activated. Without 2FA, your admin or super admin account will have restricted access — you may be unable to edit protected pages or perform administrative actions.&lt;br /&gt;
&lt;br /&gt;
=== Step-by-Step: Setting Up Two-Factor Authentication ===&lt;br /&gt;
&lt;br /&gt;
# Log in to your account as usual.&lt;br /&gt;
# Go to [[Special:Preferences]] (click your username in the top-right corner, then select &#039;&#039;Preferences&#039;&#039;).&lt;br /&gt;
# Navigate to the &#039;&#039;&#039;User profile&#039;&#039;&#039; tab, then scroll down to the &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039; section.&lt;br /&gt;
# Click &#039;&#039;&#039;Enable&#039;&#039;&#039; next to the authenticator app option.&lt;br /&gt;
# Use an authenticator app (such as Google Authenticator, Microsoft Authenticator, or Authy) to scan the QR code displayed.&lt;br /&gt;
# Enter the &#039;&#039;&#039;6-digit verification code&#039;&#039;&#039; generated by your app to confirm setup.&lt;br /&gt;
# Save your scratch codes in a safe place — these are your backup codes if you lose access to your device.&lt;br /&gt;
# Click &#039;&#039;&#039;Submit&#039;&#039;&#039; to complete the setup.&lt;br /&gt;
&lt;br /&gt;
Once 2FA is enabled, log out and log back in. You will be prompted to enter your 2FA code on login. After re-authenticating, your administrator permissions will be fully active.&lt;br /&gt;
&lt;br /&gt;
=== Still Having Trouble? ===&lt;br /&gt;
&lt;br /&gt;
If you have set up 2FA and are still experiencing access issues, check the following:&lt;br /&gt;
&lt;br /&gt;
* Confirm that your account has been granted the correct user group (&#039;&#039;&#039;Administrator&#039;&#039;&#039; or &#039;&#039;&#039;Super Administrator&#039;&#039;&#039;) by a bureaucrat.&lt;br /&gt;
* Try clearing your browser cache and logging in again.&lt;br /&gt;
* Check [[Special:ListGroupRights]] to verify the permissions associated with your role.&lt;br /&gt;
* Contact a wiki bureaucrat or system administrator for further assistance.&lt;br /&gt;
&lt;br /&gt;
=== Related Pages ===&lt;br /&gt;
&lt;br /&gt;
* [[Special:Preferences]] — Manage your account settings and enable 2FA&lt;br /&gt;
* [[Special:ListUsers]] — View user accounts and their groups&lt;br /&gt;
* [[Special:ListGroupRights]] — View permissions for each user group&lt;br /&gt;
* [[Help:Administrators]] — General guide for administrators&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you continue to experience issues, please reach out to your wiki administrator.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=105</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=105"/>
		<updated>2026-03-02T02:01:57Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
* [[Private:Private Nganipart2]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
* [[Troubleshooting: Access &amp;amp; Permission Issues]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=104</id>
		<title>Troubleshooting: Access &amp; Permission Issues</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Troubleshooting:_Access_%26_Permission_Issues&amp;diff=104"/>
		<updated>2026-03-02T02:00:56Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;== Troubleshooting: Access &amp;amp; Permission Issues ==  If you are experiencing trouble finding specific pages, or receiving the error &amp;quot;Only administrators can make changes&amp;quot; even though you already have administrator or super administrator privileges, you likely need to set up &amp;#039;&amp;#039;&amp;#039;Two-Factor Authentication (2FA)&amp;#039;&amp;#039;&amp;#039; first.  === Why Does This Happen? ===  This wiki requires Two-Factor Authentication (2FA) to be enabled before administrator-level permissions are fully activated....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Troubleshooting: Access &amp;amp; Permission Issues ==&lt;br /&gt;
&lt;br /&gt;
If you are experiencing trouble finding specific pages, or receiving the error &amp;quot;Only administrators can make changes&amp;quot; even though you already have administrator or super administrator privileges, you likely need to set up &#039;&#039;&#039;Two-Factor Authentication (2FA)&#039;&#039;&#039; first.&lt;br /&gt;
&lt;br /&gt;
=== Why Does This Happen? ===&lt;br /&gt;
&lt;br /&gt;
This wiki requires Two-Factor Authentication (2FA) to be enabled before administrator-level permissions are fully activated. Without 2FA, your admin or super admin account will have restricted access — you may be unable to edit protected pages or perform administrative actions.&lt;br /&gt;
&lt;br /&gt;
=== Step-by-Step: Setting Up Two-Factor Authentication ===&lt;br /&gt;
&lt;br /&gt;
# Log in to your account as usual.&lt;br /&gt;
# Go to [[Special:Preferences]] (click your username in the top-right corner, then select &#039;&#039;Preferences&#039;&#039;).&lt;br /&gt;
# Navigate to the &#039;&#039;&#039;User profile&#039;&#039;&#039; tab, then scroll down to the &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039; section.&lt;br /&gt;
# Click &#039;&#039;&#039;Enable&#039;&#039;&#039; next to the authenticator app option.&lt;br /&gt;
# Use an authenticator app (such as Google Authenticator, Microsoft Authenticator, or Authy) to scan the QR code displayed.&lt;br /&gt;
# Enter the &#039;&#039;&#039;6-digit verification code&#039;&#039;&#039; generated by your app to confirm setup.&lt;br /&gt;
# Save your scratch codes in a safe place — these are your backup codes if you lose access to your device.&lt;br /&gt;
# Click &#039;&#039;&#039;Submit&#039;&#039;&#039; to complete the setup.&lt;br /&gt;
&lt;br /&gt;
Once 2FA is enabled, log out and log back in. You will be prompted to enter your 2FA code on login. After re-authenticating, your administrator permissions will be fully active.&lt;br /&gt;
&lt;br /&gt;
=== Still Having Trouble? ===&lt;br /&gt;
&lt;br /&gt;
If you have set up 2FA and are still experiencing access issues, check the following:&lt;br /&gt;
&lt;br /&gt;
* Confirm that your account has been granted the correct user group (&#039;&#039;&#039;Administrator&#039;&#039;&#039; or &#039;&#039;&#039;Super Administrator&#039;&#039;&#039;) by a bureaucrat.&lt;br /&gt;
* Try clearing your browser cache and logging in again.&lt;br /&gt;
* Check [[Special:ListGroupRights]] to verify the permissions associated with your role.&lt;br /&gt;
* Contact a wiki bureaucrat or system administrator for further assistance.&lt;br /&gt;
&lt;br /&gt;
=== Related Pages ===&lt;br /&gt;
&lt;br /&gt;
* [[Special:Preferences]] — Manage your account settings and enable 2FA&lt;br /&gt;
* [[Special:ListUsers]] — View user accounts and their groups&lt;br /&gt;
* [[Special:ListGroupRights]] — View permissions for each user group&lt;br /&gt;
* [[Help:Administrators]] — General guide for administrators&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If you continue to experience issues, please reach out to your wiki administrator.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=103</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=103"/>
		<updated>2026-03-02T01:59:41Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: /* Need Help? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
# [[Admintest.pdf ]]&lt;br /&gt;
# [[Testing onleh]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
* [[Private:Private Nganipart2]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
* [[Troubleshooting: Access &amp;amp; Permission Issues]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=102</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=102"/>
		<updated>2026-03-02T01:59:16Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: /* Need Help? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
# [[Admintest.pdf ]]&lt;br /&gt;
# [[Testing onleh]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
* [[Private:Private Nganipart2]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
* Troubleshooting: Access &amp;amp; Permission Issues&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Mediawiki_Additional_Configuration&amp;diff=93</id>
		<title>Mediawiki Additional Configuration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Mediawiki_Additional_Configuration&amp;diff=93"/>
		<updated>2026-02-26T08:22:32Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MediaWiki Additional Configuration Guide ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This guide covers advanced configuration options for your MediaWiki installation, including logos, permissions, email, private namespaces, and two-factor authentication.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Prerequisites:&#039;&#039;&#039; Complete the &#039;&#039;&#039;[[MediaWiki Docker Setup Guide]]&#039;&#039;&#039; before proceeding with this configuration.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advanced Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Customizing Your Wiki&#039;s Appearance ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Upload Your Logo Files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before configuring logos, you need to upload your logo images to the wiki&#039;s images folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step A: Prepare Your Logo Files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create logo images in these sizes:&lt;br /&gt;
* &#039;&#039;&#039;Small logo (50x50 pixels):&#039;&#039;&#039; For favicon and small displays - save as &amp;lt;code&amp;gt;yourlogo-50.svg&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;yourlogo-50.png&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Large logo (160x160 pixels):&#039;&#039;&#039; For the main wiki logo - save as &amp;lt;code&amp;gt;yourlogo-160.svg&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;yourlogo-160.png&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Tip:&#039;&#039;&#039; SVG format is recommended because it scales cleanly at any size. PNG is also acceptable.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step B: Copy Logo Files to the Server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
First, you need to upload files to the Docker volume:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Create a temporary container to access the images volume&lt;br /&gt;
docker run -d --name temp-mediawiki \&lt;br /&gt;
  -v 230912_images:/var/www/html/images \&lt;br /&gt;
  mediawiki sleep 3600&lt;br /&gt;
&lt;br /&gt;
# Copy your logo files into the container&lt;br /&gt;
docker cp ~/Downloads/yourlogo-50.svg temp-mediawiki:/var/www/html/images/&lt;br /&gt;
docker cp ~/Downloads/yourlogo-160.svg temp-mediawiki:/var/www/html/images/&lt;br /&gt;
&lt;br /&gt;
# Fix permissions&lt;br /&gt;
docker exec temp-mediawiki chown 33:33 /var/www/html/images/yourlogo-50.svg&lt;br /&gt;
docker exec temp-mediawiki chown 33:33 /var/www/html/images/yourlogo-160.svg&lt;br /&gt;
&lt;br /&gt;
# Remove the temporary container&lt;br /&gt;
docker stop temp-mediawiki&lt;br /&gt;
docker rm temp-mediawiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Replace &amp;lt;code&amp;gt;yourlogo-50.svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;yourlogo-160.svg&amp;lt;/code&amp;gt; with your actual filename. Adjust the path &amp;lt;code&amp;gt;~/Downloads/&amp;lt;/code&amp;gt; if your files are saved elsewhere.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Configure Logo and Favicon in LocalSettings.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Open your LocalSettings.php file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find the existing &amp;lt;code&amp;gt;$wgLogos&amp;lt;/code&amp;gt; section (it looks like this):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
$wgLogos = [&lt;br /&gt;
	&#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/change-your-logo.svg&amp;quot;,&lt;br /&gt;
	&#039;icon&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/resources/assets/change-your-logo.svg&amp;quot;,&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace it with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
$wgLogos = [&lt;br /&gt;
	&#039;1x&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/images/yourlogo-160.svg&amp;quot;,&lt;br /&gt;
	&#039;icon&#039; =&amp;gt; &amp;quot;$wgResourceBasePath/images/yourlogo-50.svg&amp;quot;,&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$wgFavicon = &amp;quot;$wgResourceBasePath/images/yourlogo-50.svg&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What this does:&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;1x&#039;&amp;lt;/code&amp;gt; sets your main wiki logo (shown in the corner)&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;icon&#039;&amp;lt;/code&amp;gt; sets the smaller icon version&lt;br /&gt;
* &amp;lt;code&amp;gt;$wgFavicon&amp;lt;/code&amp;gt; sets the browser tab icon&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Customizing the Wiki Skin (Theme) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Configure the Modern Vector Skin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MediaWiki comes with several &amp;quot;skins&amp;quot; (visual themes). The Vector skin has a modern version called &amp;lt;code&amp;gt;vector-2022&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php again:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find this line near the bottom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
$wgDefaultSkin = &amp;quot;monobook&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace it with this configuration block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Use the modern Vector 2022 skin by default&lt;br /&gt;
$wgDefaultSkin = &amp;quot;vector-2022&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Make existing users see the new skin too&lt;br /&gt;
$wgVectorDefaultSkinVersionForExistingAccounts = &amp;quot;2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Make the skin work well on mobile devices&lt;br /&gt;
$wgVectorResponsive = true;&lt;br /&gt;
&lt;br /&gt;
# Enable appearance customization options for users&lt;br /&gt;
$wgVectorFeatureFlags = [&lt;br /&gt;
    &#039;VectorAppearance&#039; =&amp;gt; [&lt;br /&gt;
        &#039;logged_in&#039; =&amp;gt; true,&lt;br /&gt;
        &#039;logged_out&#039; =&amp;gt; true,&lt;br /&gt;
    ],&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What this does:&#039;&#039;&#039;&lt;br /&gt;
* Sets the modern Vector skin as default&lt;br /&gt;
* Makes it responsive for mobile/tablet viewing&lt;br /&gt;
* Allows users to customize appearance settings&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 3: Setting Up Email and SMTP ===&lt;br /&gt;
&lt;br /&gt;
This allows your wiki to send password reset emails, notifications, and user-to-user messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure Email Settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; This example uses Gmail. If using another email provider, you&#039;ll need their SMTP settings.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step A: Generate a Gmail App Password&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If using Gmail, you need an &amp;quot;App Password&amp;quot; (regular passwords won&#039;t work):&lt;br /&gt;
&lt;br /&gt;
# Go to your Google Account: https://myaccount.google.com/&lt;br /&gt;
# Click &#039;&#039;&#039;Security&#039;&#039;&#039; in the left sidebar&lt;br /&gt;
# Scroll to &amp;quot;How you sign in to Google&amp;quot;&lt;br /&gt;
# Click &#039;&#039;&#039;2-Step Verification&#039;&#039;&#039; (you must enable this first)&lt;br /&gt;
# Scroll down and click &#039;&#039;&#039;App passwords&#039;&#039;&#039;&lt;br /&gt;
# Select &#039;&#039;&#039;Mail&#039;&#039;&#039; and &#039;&#039;&#039;Other (Custom name)&#039;&#039;&#039;&lt;br /&gt;
# Type &amp;quot;MediaWiki&amp;quot; as the name&lt;br /&gt;
# Click &#039;&#039;&#039;Generate&#039;&#039;&#039;&lt;br /&gt;
# Copy the 16-character password (it looks like: &amp;lt;code&amp;gt;abcd efgh ijkl mnop&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step B: Add Email Configuration to LocalSettings.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scroll to the bottom (after the extensions section) and add:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
/*-------------------------------------------&lt;br /&gt;
EMAIL &amp;amp; SMTP CONFIGURATION&lt;br /&gt;
----------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
# Enable email features&lt;br /&gt;
$wgEnableEmail = true;&lt;br /&gt;
$wgEnableUserEmail = true;&lt;br /&gt;
$wgEmailAuthentication = true;&lt;br /&gt;
&lt;br /&gt;
# Enable email notifications for talk pages and watchlist&lt;br /&gt;
$wgEnotifUserTalk = true;&lt;br /&gt;
$wgEnotifWatchlist = true;&lt;br /&gt;
&lt;br /&gt;
# Set your wiki&#039;s email addresses&lt;br /&gt;
$wgEmergencyContact = &amp;quot;your-email@gmail.com&amp;quot;;&lt;br /&gt;
$wgPasswordSender = &amp;quot;your-email@gmail.com&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Gmail SMTP configuration&lt;br /&gt;
$wgSMTP = [&lt;br /&gt;
    &#039;host&#039;     =&amp;gt; &#039;smtp.gmail.com&#039;,&lt;br /&gt;
    &#039;IDHost&#039;   =&amp;gt; &#039;yourdomain.com&#039;,           # Your domain (or &#039;gmail.com&#039; for testing)&lt;br /&gt;
    &#039;port&#039;     =&amp;gt; 587,&lt;br /&gt;
    &#039;auth&#039;     =&amp;gt; true,&lt;br /&gt;
    &#039;username&#039; =&amp;gt; &#039;your-email@gmail.com&#039;,     # Your Gmail address&lt;br /&gt;
    &#039;password&#039; =&amp;gt; &#039;your app password here&#039;,   # Paste your 16-character App Password&lt;br /&gt;
    &#039;secure&#039;   =&amp;gt; &#039;tls&#039;&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
# Email settings&lt;br /&gt;
$wgUserEmailUseReplyTo = true;&lt;br /&gt;
$wgAllowHTMLEmail = true;&lt;br /&gt;
&lt;br /&gt;
# Enable password reset via email&lt;br /&gt;
$wgPasswordResetRoutes = [&lt;br /&gt;
    &#039;username&#039; =&amp;gt; true,&lt;br /&gt;
    &#039;email&#039; =&amp;gt; true,&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
# Password reset links expire after 24 hours&lt;br /&gt;
$wgNewPasswordExpiry = 86400;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Replace these values:&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;your-email@gmail.com&amp;lt;/code&amp;gt; → Your actual Gmail address&lt;br /&gt;
* &amp;lt;code&amp;gt;your app password here&amp;lt;/code&amp;gt; → The 16-character password from Step A (remove spaces)&lt;br /&gt;
* &amp;lt;code&amp;gt;yourdomain.com&amp;lt;/code&amp;gt; → Your wiki&#039;s domain name&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 4: Permission System (Who Can Do What) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Create a Clean Permission Structure&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default, MediaWiki allows anyone to edit. Let&#039;s create a more controlled system with different user levels.&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find the existing permissions section in your CUSTOM PERMISSIONS &amp;amp; EXTENSIONS block:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
// 1. SECURITY: Prevent anonymous editing and account creation&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace it with this expanded permission system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
/*-------------------------------------------&lt;br /&gt;
CLEAN PERMISSION SYSTEM&lt;br /&gt;
----------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
# Anonymous users&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;read&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Disable public account creation&lt;br /&gt;
$wgGroupPermissions[&#039;*&#039;][&#039;createaccount&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Allow bureaucrats/admins to create accounts&lt;br /&gt;
$wgGroupPermissions[&#039;bureaucrat&#039;][&#039;createaccount&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Logged-in users (view only)&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;read&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;user&#039;][&#039;edit&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
# Editor group&lt;br /&gt;
$wgGroupPermissions[&#039;editor&#039;][&#039;read&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;editor&#039;][&#039;edit&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;editor&#039;][&#039;upload&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;editor&#039;][&#039;reupload&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
# Sysop (admin)&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;read&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;edit&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;protect&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;userrights&#039;] = true;&lt;br /&gt;
$wgGroupPermissions[&#039;sysop&#039;][&#039;createaccount&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What this permission structure means:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Anonymous visitors:&#039;&#039;&#039; Can only read pages&lt;br /&gt;
* &#039;&#039;&#039;Logged-in users:&#039;&#039;&#039; Can only read pages (no editing)&lt;br /&gt;
* &#039;&#039;&#039;Editors:&#039;&#039;&#039; Can read, edit, and upload files (assigned by admins)&lt;br /&gt;
* &#039;&#039;&#039;Sysops (Admins):&#039;&#039;&#039; Full control over the wiki&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to assign the Editor role:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After restarting your wiki, log in as an admin and go to:&lt;br /&gt;
* &#039;&#039;&#039;Special:UserRights&#039;&#039;&#039; (or click &#039;&#039;&#039;Special Pages&#039;&#039;&#039; → &#039;&#039;&#039;User rights management&#039;&#039;&#039;)&lt;br /&gt;
* Enter a username&lt;br /&gt;
* Check the &#039;&#039;&#039;editor&#039;&#039;&#039; box&lt;br /&gt;
* Click &#039;&#039;&#039;Save user groups&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 5: Creating a Private Namespace ===&lt;br /&gt;
&lt;br /&gt;
Private namespaces let you create pages that only certain user groups can see. This is useful for internal documentation, confidential information, or drafts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Configure the Private Namespace&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Lockdown extension should already be installed from the basic setup. Now let&#039;s configure it.&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add this section after your extensions (near the bottom of the CUSTOM PERMISSIONS &amp;amp; EXTENSIONS block):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
/*-------------------------------------------&lt;br /&gt;
PRIVATE NAMESPACE (RESTRICTED ACCESS)&lt;br /&gt;
----------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
# Load the Lockdown extension&lt;br /&gt;
wfLoadExtension( &#039;Lockdown&#039; );&lt;br /&gt;
&lt;br /&gt;
# Define namespace IDs (must be unique)&lt;br /&gt;
define(&amp;quot;NS_PRIVATE&amp;quot;, 3000);&lt;br /&gt;
define(&amp;quot;NS_PRIVATE_TALK&amp;quot;, 3001);&lt;br /&gt;
&lt;br /&gt;
# Register the namespace names&lt;br /&gt;
$wgExtraNamespaces[NS_PRIVATE] = &amp;quot;Private&amp;quot;;&lt;br /&gt;
$wgExtraNamespaces[NS_PRIVATE_TALK] = &amp;quot;Private_talk&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# Set permissions for the Private namespace&lt;br /&gt;
# Only logged-in users, editors, and admins can READ&lt;br /&gt;
$wgNamespacePermissionLockdown[NS_PRIVATE][&#039;read&#039;] = [&#039;user&#039;, &#039;editor&#039;, &#039;sysop&#039;];&lt;br /&gt;
&lt;br /&gt;
# Only editors and admins can EDIT&lt;br /&gt;
$wgNamespacePermissionLockdown[NS_PRIVATE][&#039;edit&#039;] = [&#039;editor&#039;, &#039;sysop&#039;];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use the Private namespace:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To create a private page, use this format in the URL or search:&lt;br /&gt;
* &amp;lt;code&amp;gt;Private:YourPageName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;Private:Company_Policies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anonymous users and non-logged-in visitors will get an access denied message.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 6: Additional Recommended Extensions ===&lt;br /&gt;
&lt;br /&gt;
These extensions add useful features for a professional wiki.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7. Enable Additional Extensions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find your EXTERNAL EXTENSIONS section and expand it with these additional extensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
// 3. EXTERNAL EXTENSIONS&lt;br /&gt;
wfLoadExtension( &#039;Mermaid&#039; );&lt;br /&gt;
&lt;br /&gt;
/*-------------------------------------------&lt;br /&gt;
ADDITIONAL RECOMMENDED EXTENSIONS&lt;br /&gt;
----------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
# Content organization&lt;br /&gt;
wfLoadExtension( &#039;CategoryTree&#039; );      # Browse categories as tree structure&lt;br /&gt;
wfLoadExtension( &#039;ImageMap&#039; );          # Clickable image regions&lt;br /&gt;
&lt;br /&gt;
# User experience&lt;br /&gt;
wfLoadExtension( &#039;Echo&#039; );              # Notification system&lt;br /&gt;
wfLoadExtension( &#039;Thanks&#039; );            # Thank users for edits&lt;br /&gt;
wfLoadExtension( &#039;DiscussionTools&#039; );   # Better talk page discussions&lt;br /&gt;
&lt;br /&gt;
# Content features&lt;br /&gt;
wfLoadExtension( &#039;TemplateData&#039; );      # Document templates&lt;br /&gt;
wfLoadExtension( &#039;TemplateStyles&#039; );    # CSS styling for templates&lt;br /&gt;
wfLoadExtension( &#039;Poem&#039; );              # Format poetry and verse&lt;br /&gt;
&lt;br /&gt;
# File handling&lt;br /&gt;
wfLoadExtension( &#039;PdfHandler&#039; );        # Display PDF thumbnails&lt;br /&gt;
wfLoadExtension( &#039;MultimediaViewer&#039; );  # Better image viewing&lt;br /&gt;
&lt;br /&gt;
# Moderation &amp;amp; security&lt;br /&gt;
wfLoadExtension( &#039;ConfirmEdit&#039; );       # CAPTCHA for spam prevention&lt;br /&gt;
wfLoadExtension( &#039;SpamBlacklist&#039; );     # Block spam URLs&lt;br /&gt;
wfLoadExtension( &#039;TitleBlacklist&#039; );    # Block page title patterns&lt;br /&gt;
wfLoadExtension( &#039;CiteThisPage&#039; );      # Citation tools&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Some of these extensions may already be included in your MediaWiki installation. If you get an error about a missing extension after restarting, simply comment out that line by adding &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; at the beginning or remove it entirely.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 7: Enable File Uploads ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8. Configure Upload Settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find the line with &amp;lt;code&amp;gt;$wgEnableUploads&amp;lt;/code&amp;gt; and update the upload settings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Enable file uploads&lt;br /&gt;
$wgEnableUploads = true;&lt;br /&gt;
$wgUseImageMagick = true;&lt;br /&gt;
$wgImageMagickConvertCommand = &amp;quot;/usr/bin/convert&amp;quot;;&lt;br /&gt;
$wgUseInstantCommons = false;&lt;br /&gt;
&lt;br /&gt;
# Allow these file types to be uploaded&lt;br /&gt;
$wgFileExtensions = [&#039;png&#039;,&#039;gif&#039;,&#039;jpg&#039;,&#039;jpeg&#039;,&#039;webp&#039;,&#039;svg&#039;,&#039;pdf&#039;,&#039;doc&#039;,&#039;docx&#039;,&#039;xls&#039;,&#039;xlsx&#039;];&lt;br /&gt;
&lt;br /&gt;
# Allow SVG files with embedded titles&lt;br /&gt;
$wgAllowTitleInSVG = true;&lt;br /&gt;
$wgSVGConverter = &#039;ImageMagick&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; You can add or remove file extensions based on your needs. Be cautious about allowing executable files or scripts.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 8: Two-Factor Authentication for Administrators ===&lt;br /&gt;
&lt;br /&gt;
Add an extra layer of security by requiring administrators to use two-factor authentication.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;9. Install the OATHAuth Extension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
First, check if the extension already exists:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
ls /opt/stacks/mediawiki/extensions/ | grep -i oath&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see &amp;lt;code&amp;gt;OATHAuth&amp;lt;/code&amp;gt;, install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/stacks/mediawiki/extensions&lt;br /&gt;
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth.git&lt;br /&gt;
sudo chown -R 33:33 OATHAuth&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10. Configure OATHAuth for Admins Only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Open LocalSettings.php:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /opt/stacks/mediawiki/LocalSettings.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add this configuration after your extensions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
/*-------------------------------------------&lt;br /&gt;
TWO-FACTOR AUTHENTICATION (ADMINS ONLY)&lt;br /&gt;
----------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
# Load the OATHAuth extension&lt;br /&gt;
wfLoadExtension( &#039;OATHAuth&#039; );&lt;br /&gt;
&lt;br /&gt;
# REQUIRE 2FA for administrators (sysops) only&lt;br /&gt;
$wgOATHRequiredForGroups = [&#039;sysop&#039;];&lt;br /&gt;
&lt;br /&gt;
# Optional: Also require 2FA for bureaucrats if you have this group&lt;br /&gt;
# $wgOATHRequiredForGroups = [&#039;sysop&#039;, &#039;bureaucrat&#039;];&lt;br /&gt;
&lt;br /&gt;
# Allow TOTP (Time-based One-Time Password) - works with Google Authenticator, Authy, etc.&lt;br /&gt;
$wgOATHAuthModules = [&lt;br /&gt;
    &#039;totp&#039; =&amp;gt; [&lt;br /&gt;
        &#039;class&#039; =&amp;gt; &#039;MediaWiki\\Extension\\OATHAuth\\Module\\TOTP&#039;,&lt;br /&gt;
    ],&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #3498db; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What this does:&#039;&#039;&#039;&lt;br /&gt;
* Loads the OATHAuth extension&lt;br /&gt;
* &#039;&#039;&#039;Requires&#039;&#039;&#039; 2FA only for users in the &#039;sysop&#039; (administrator) group&lt;br /&gt;
* Regular users and editors do NOT need 2FA&lt;br /&gt;
* Uses TOTP method (compatible with most authenticator apps)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and exit.&lt;br /&gt;
&lt;br /&gt;
=== Part 9: Apply All Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11. Update the Database and Restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After making all these configuration changes, update your database and restart the containers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Update database to recognize new extensions and namespaces&lt;br /&gt;
docker exec -it mediawiki php maintenance/update.php --quick&lt;br /&gt;
&lt;br /&gt;
# Restart MediaWiki to apply all changes&lt;br /&gt;
cd /opt/stacks/mediawiki&lt;br /&gt;
docker compose restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait about 30 seconds for the containers to fully restart.&lt;br /&gt;
&lt;br /&gt;
== Setting Up Two-Factor Authentication ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12. Set Up 2FA for Administrator Accounts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now each administrator needs to enable 2FA on their account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step A: Install an Authenticator App (If Not Already Installed)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On your phone or tablet, install one of these apps:&lt;br /&gt;
* &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; (iOS/Android)&lt;br /&gt;
* &#039;&#039;&#039;Microsoft Authenticator&#039;&#039;&#039; (iOS/Android)&lt;br /&gt;
* &#039;&#039;&#039;Authy&#039;&#039;&#039; (iOS/Android)&lt;br /&gt;
* &#039;&#039;&#039;1Password&#039;&#039;&#039; (if you use a password manager)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step B: Enable 2FA on Your Admin Account&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Log in to MediaWiki as an administrator&lt;br /&gt;
# Click on your username in the top-right corner&lt;br /&gt;
# Click &#039;&#039;&#039;Preferences&#039;&#039;&#039;&lt;br /&gt;
# Click the &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039; tab (or &#039;&#039;&#039;OATH&#039;&#039;&#039; tab)&lt;br /&gt;
# Click &#039;&#039;&#039;Manage&#039;&#039;&#039; and &#039;&#039;&#039;Add an authenticator app&#039;&#039;&#039;&lt;br /&gt;
# You&#039;ll see a QR code on the screen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step C: Scan the QR Code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Open your authenticator app on your phone&lt;br /&gt;
# Tap the &amp;quot;+&amp;quot; or &amp;quot;Add account&amp;quot; button&lt;br /&gt;
# Scan the QR code shown on your screen&lt;br /&gt;
# The app will add an entry like &amp;quot;MediaWiki - YourUsername&amp;quot;&lt;br /&gt;
# You&#039;ll see a 6-digit code that changes every 30 seconds&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Step D: Verify the Setup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Enter the 6-digit code from your authenticator app into the MediaWiki form&lt;br /&gt;
# You&#039;ll also see &#039;&#039;&#039;scratch codes&#039;&#039;&#039; (recovery codes) - SAVE THESE SAFELY!&lt;br /&gt;
# Click &#039;&#039;&#039;Confirm&#039;&#039;&#039; or &#039;&#039;&#039;Enable&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;CRITICAL - Save Your Recovery Codes!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write down or securely save your recovery codes (also called scratch codes). If you lose access to your phone, these codes are the ONLY way to regain access to your account. Store them in a safe place like:&lt;br /&gt;
* A password manager&lt;br /&gt;
* A secure note app&lt;br /&gt;
* Printed on paper in a safe location&lt;br /&gt;
&lt;br /&gt;
Each recovery code can only be used once.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;13. Test Two-Factor Authentication&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Log out and log back in&#039;&#039;&#039; to verify 2FA is working:&lt;br /&gt;
&lt;br /&gt;
# Log out of your MediaWiki account&lt;br /&gt;
# Log back in with your username and password&lt;br /&gt;
# You&#039;ll now see a new screen asking for a &#039;&#039;&#039;Two-factor authentication token&#039;&#039;&#039;&lt;br /&gt;
# Open your authenticator app&lt;br /&gt;
# Enter the current 6-digit code&lt;br /&gt;
# Click &#039;&#039;&#039;Continue&#039;&#039;&#039; or &#039;&#039;&#039;Log in&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You should now be logged in successfully!&lt;br /&gt;
&lt;br /&gt;
== Verification Checklist ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;14. Test Your Configuration&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Visit your wiki and verify these features are working:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Logo:&#039;&#039;&#039; Your custom logo appears in the top-left corner and as the favicon&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Skin:&#039;&#039;&#039; The modern Vector 2022 skin is active&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Permissions:&#039;&#039;&#039; &lt;br /&gt;
# Log out and confirm you can only read pages&lt;br /&gt;
# Log in as a regular user and confirm you cannot edit&lt;br /&gt;
# Log in as admin and assign the &amp;quot;editor&amp;quot; role to a test user via &#039;&#039;&#039;Special:UserRights&#039;&#039;&#039;&lt;br /&gt;
# Confirm the editor can now edit pages&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; &lt;br /&gt;
# Click &amp;quot;Forgot password?&amp;quot; on the login page&lt;br /&gt;
# Enter your username or email&lt;br /&gt;
# Check that you receive the reset email&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Private Namespace:&#039;&#039;&#039;&lt;br /&gt;
# Create a page like &amp;lt;code&amp;gt;Private:Test&amp;lt;/code&amp;gt;&lt;br /&gt;
# Log out and confirm anonymous users cannot access it&lt;br /&gt;
# Log in as a regular user and confirm you can view it&lt;br /&gt;
# Check that only editors and admins can edit it&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;File Uploads:&#039;&#039;&#039;&lt;br /&gt;
# Log in as an editor or admin&lt;br /&gt;
# Go to &#039;&#039;&#039;Special:Upload&#039;&#039;&#039;&lt;br /&gt;
# Try uploading an image file&lt;br /&gt;
# Verify it appears on the page&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Two-Factor Authentication:&#039;&#039;&#039;&lt;br /&gt;
# Verify all admins have set up 2FA&lt;br /&gt;
# Test login process with 2FA code&lt;br /&gt;
# Verify recovery codes are saved securely&lt;br /&gt;
&lt;br /&gt;
== Managing Two-Factor Authentication ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If an Admin Loses Access to Their Phone:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They can use one of their recovery codes instead of the authenticator code:&lt;br /&gt;
# At the 2FA prompt, enter one of the saved recovery codes&lt;br /&gt;
# Once logged in, immediately go to &#039;&#039;&#039;Preferences&#039;&#039;&#039; → &#039;&#039;&#039;Two-factor authentication&#039;&#039;&#039;&lt;br /&gt;
# Disable 2FA, then re-enable it with a new QR code&lt;br /&gt;
# Generate new recovery codes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Recovery Codes Are Also Lost:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Another administrator needs to disable 2FA for that account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Run this command to disable 2FA for a specific user&lt;br /&gt;
docker exec -it mediawiki php maintenance/run.php OATHAuth:deleteUser --user=&amp;quot;USERNAME&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt; with the actual username.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px; margin: 15px 0; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Security Tip:&#039;&#039;&#039; Create at least two administrator accounts so one admin can help recover another&#039;s account if needed.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Email not sending?&#039;&#039;&#039;&lt;br /&gt;
* Verify your Gmail App Password is correct (16 characters, no spaces)&lt;br /&gt;
* Check that 2-Step Verification is enabled on your Google account&lt;br /&gt;
* Look at container logs: &amp;lt;code&amp;gt;docker compose logs -f mediawiki&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Logo not appearing?&#039;&#039;&#039;&lt;br /&gt;
* Verify files were copied correctly: &amp;lt;code&amp;gt;docker exec mediawiki ls -la /var/www/html/images/&amp;lt;/code&amp;gt;&lt;br /&gt;
* Hard refresh your browser: &amp;lt;code&amp;gt;Ctrl + Shift + R&amp;lt;/code&amp;gt; (Windows/Linux) or &amp;lt;code&amp;gt;Cmd + Shift + R&amp;lt;/code&amp;gt; (Mac)&lt;br /&gt;
* Check the exact filenames in LocalSettings.php match the uploaded files&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Private namespace not working?&#039;&#039;&#039;&lt;br /&gt;
* Ensure Lockdown extension is installed: &amp;lt;code&amp;gt;ls /opt/stacks/mediawiki/extensions/Lockdown&amp;lt;/code&amp;gt;&lt;br /&gt;
* Run database update: &amp;lt;code&amp;gt;docker exec -it mediawiki php maintenance/update.php --quick&amp;lt;/code&amp;gt;&lt;br /&gt;
* Restart containers: &amp;lt;code&amp;gt;docker compose restart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2FA prompt not appearing for admins:&#039;&#039;&#039;&lt;br /&gt;
* Verify the configuration in LocalSettings.php&lt;br /&gt;
* Check that database update ran successfully: &amp;lt;code&amp;gt;docker exec -it mediawiki php maintenance/update.php&amp;lt;/code&amp;gt;&lt;br /&gt;
* Restart containers: &amp;lt;code&amp;gt;docker compose restart&amp;lt;/code&amp;gt;&lt;br /&gt;
* Clear your browser cache and try again&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QR code not displaying:&#039;&#039;&#039;&lt;br /&gt;
* Check container logs: &amp;lt;code&amp;gt;docker compose logs -f mediawiki&amp;lt;/code&amp;gt;&lt;br /&gt;
* Verify OATHAuth extension is installed: &amp;lt;code&amp;gt;ls /opt/stacks/mediawiki/extensions/OATHAuth&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authenticator codes not working:&#039;&#039;&#039;&lt;br /&gt;
* Verify your phone&#039;s time is set to automatic (not manual)&lt;br /&gt;
* Time synchronization is critical for TOTP to work&lt;br /&gt;
* Try syncing time in your authenticator app settings&lt;br /&gt;
&lt;br /&gt;
== Maintenance Tasks ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Regular Backups&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create a backup script for your wiki:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Save as /opt/scripts/backup-mediawiki.sh&lt;br /&gt;
&lt;br /&gt;
BACKUP_DIR=&amp;quot;/opt/backups/mediawiki&amp;quot;&lt;br /&gt;
DATE=$(date +%Y%m%d_%H%M%S)&lt;br /&gt;
&lt;br /&gt;
mkdir -p $BACKUP_DIR&lt;br /&gt;
&lt;br /&gt;
# Backup database&lt;br /&gt;
docker exec mediawiki-db mysqldump -u root -pyour_root_password my_wiki &amp;gt; $BACKUP_DIR/db_$DATE.sql&lt;br /&gt;
&lt;br /&gt;
# Backup LocalSettings.php&lt;br /&gt;
cp /opt/stacks/mediawiki/LocalSettings.php $BACKUP_DIR/LocalSettings_$DATE.php&lt;br /&gt;
&lt;br /&gt;
# Backup images (use docker volume backup)&lt;br /&gt;
docker run --rm -v 230912_images:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/images_$DATE.tar.gz -C /data .&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Backup completed: $DATE&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updating MediaWiki&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When a new version is released:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;&lt;br /&gt;
# Pull the latest MediaWiki image&lt;br /&gt;
docker pull mediawiki:latest&lt;br /&gt;
&lt;br /&gt;
# Restart with the new image&lt;br /&gt;
cd /opt/stacks/mediawiki&lt;br /&gt;
docker compose down&lt;br /&gt;
docker compose up -d&lt;br /&gt;
&lt;br /&gt;
# Update the database schema&lt;br /&gt;
docker exec -it mediawiki php maintenance/update.php&lt;br /&gt;
&lt;br /&gt;
# Clear the cache&lt;br /&gt;
docker exec -it mediawiki php maintenance/rebuildLocalisationCache.php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ve successfully configured advanced features for your MediaWiki installation:&lt;br /&gt;
&lt;br /&gt;
✓ Custom logos and modern Vector 2022 theme&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Email notifications via SMTP (Gmail)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Multi-level permission system (Anonymous, User, Editor, Sysop)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Private namespace for confidential content&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Additional professional extensions&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ File upload capabilities&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Two-factor authentication for administrators&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
✓ Enhanced security hardening&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Your MediaWiki installation is now fully configured and production-ready!&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
Your wiki is now fully configured! You can:&lt;br /&gt;
&lt;br /&gt;
* Create user accounts and assign roles via &#039;&#039;&#039;Special:UserRights&#039;&#039;&#039;&lt;br /&gt;
* Start creating content in the main namespace&lt;br /&gt;
* Create private documentation in the &amp;lt;code&amp;gt;Private:&amp;lt;/code&amp;gt; namespace&lt;br /&gt;
* Customize the main page by editing &#039;&#039;&#039;MediaWiki:Mainpage&#039;&#039;&#039;&lt;br /&gt;
* Explore &#039;&#039;&#039;Special:SpecialPages&#039;&#039;&#039; to discover all available features&lt;br /&gt;
* Set up automatic backups (see Maintenance Tasks above)&lt;br /&gt;
* Configure SSL/HTTPS if not already done&lt;br /&gt;
* Install additional extensions from https://www.mediawiki.org/wiki/Category:Extensions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;For additional help, visit the official MediaWiki documentation at&#039;&#039;&#039;&#039;&#039; https://www.mediawiki.org/&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=90</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=90"/>
		<updated>2026-02-25T07:39:27Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=89</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=89"/>
		<updated>2026-02-25T07:37:39Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=88</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=88"/>
		<updated>2026-02-25T07:33:13Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
# [[TRY LANG]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=84</id>
		<title>Using Frappe Wiki</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=84"/>
		<updated>2026-02-25T07:25:21Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Using Frappe Wiki =&lt;br /&gt;
&lt;br /&gt;
== 1. Installation ==&lt;br /&gt;
&lt;br /&gt;
=== A. Frappe Cloud Installation ===&lt;br /&gt;
&lt;br /&gt;
# Go to your &#039;&#039;&#039;Dashboard&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;Go to Site&#039;&#039;&#039; or &#039;&#039;&#039;Go to Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Site:&#039;&#039;&#039;&lt;br /&gt;
* Select the site.&lt;br /&gt;
* Go to &#039;&#039;&#039;Apps&#039;&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;&#039;Install App&#039;&#039;&#039;.&lt;br /&gt;
* Select &#039;&#039;&#039;Wiki&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Server:&#039;&#039;&#039;&lt;br /&gt;
* Go to &#039;&#039;&#039;Application Server&#039;&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;&#039;Install App&#039;&#039;&#039;.&lt;br /&gt;
* Select &#039;&#039;&#039;Wiki&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== B. Self-Hosted Installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Docker-based setup:&#039;&#039;&#039;&lt;br /&gt;
* Ensure persistence using &#039;&#039;&#039;drive volumes&#039;&#039;&#039; so changes are not lost after restart.&lt;br /&gt;
* Execute via terminal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench get-app https://github.com/frappe/wiki&lt;br /&gt;
bench --site sitename install-app wiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Follow [https://github.com/frappe/wiki official instructions] for installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If VM setup:&#039;&#039;&#039;&lt;br /&gt;
* Access the command line.&lt;br /&gt;
* Run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench get-app https://github.com/frappe/wiki&lt;br /&gt;
bench --site sitename install-app wiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Start your bench server:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Creating and Editing Wiki Pages ==&lt;br /&gt;
&lt;br /&gt;
=== Creating Markdown Versions of Documents ===&lt;br /&gt;
&lt;br /&gt;
* Upload files to &#039;&#039;&#039;Google Drive&#039;&#039;&#039;.&lt;br /&gt;
* Download as &#039;&#039;&#039;Markdown (.md)&#039;&#039;&#039;.&lt;br /&gt;
* Alternatively, use &#039;&#039;&#039;ChatGPT Canvas mode&#039;&#039;&#039; to export to markdown.&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;.md&amp;lt;/code&amp;gt; files using any text editor.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Wiki Page ===&lt;br /&gt;
&lt;br /&gt;
# Navigate to &#039;&#039;&#039;Wiki &amp;gt; Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Add Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Enter the &#039;&#039;&#039;Title&#039;&#039;&#039; and &#039;&#039;&#039;Route&#039;&#039;&#039;.&lt;br /&gt;
# (Optional) Uncheck &#039;&#039;&#039;Allow Guest&#039;&#039;&#039; if you want restricted access.&lt;br /&gt;
&lt;br /&gt;
=== Creating from Website Interface ===&lt;br /&gt;
&lt;br /&gt;
# Click your &#039;&#039;&#039;Profile Icon&#039;&#039;&#039; (top-right corner).&lt;br /&gt;
# Select &#039;&#039;&#039;View Website&#039;&#039;&#039;.&lt;br /&gt;
# Navigate to your wiki (e.g., &amp;lt;code&amp;gt;https://yourdomain.frappe.cloud/wiki/home&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Click &#039;&#039;&#039;Edit Sidebar&#039;&#039;&#039; to manage topics.&lt;br /&gt;
# Use the &#039;&#039;&#039;+ icon&#039;&#039;&#039; under each sidebar to add new pages.&lt;br /&gt;
&lt;br /&gt;
== 3. Sorting and Organizing Wiki Pages ==&lt;br /&gt;
&lt;br /&gt;
=== Using Wiki Space ===&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;Wiki Space&#039;&#039;&#039;.&lt;br /&gt;
# Select the &#039;&#039;&#039;Default Wiki&#039;&#039;&#039;.&lt;br /&gt;
# Under &#039;&#039;&#039;Wiki Space &amp;gt; Wiki&#039;&#039;&#039;, organize the &#039;&#039;&#039;Parent Labels&#039;&#039;&#039;.&lt;br /&gt;
#* These will become sidebar sections.&lt;br /&gt;
# Add child pages under each parent label for collapsible sections.&lt;br /&gt;
&lt;br /&gt;
You can also create multiple wiki spaces for different departments or teams (e.g., HR, Accounting, Projects).&lt;br /&gt;
&lt;br /&gt;
== 4. Backup and Data Management ==&lt;br /&gt;
&lt;br /&gt;
=== Backing Up Wiki Content ===&lt;br /&gt;
&lt;br /&gt;
You can back up your wiki using &#039;&#039;&#039;Data Import&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;Data Import&#039;&#039;&#039;.&lt;br /&gt;
# Select &#039;&#039;&#039;Doctype: Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;Update Entries&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Download All Wiki Entries&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This creates a JSON/CSV export of all your Wiki pages for backup or version control.&lt;br /&gt;
&lt;br /&gt;
== 5. Common Wiki Features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Pages&#039;&#039;&#039; || Create and manage markdown-based documentation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Space&#039;&#039;&#039; || Organize topics by category.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Feedback&#039;&#039;&#039; || Collect comments and feedback on pages.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Page Patches&#039;&#039;&#039; || Track edits or updates before publishing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Settings&#039;&#039;&#039; || Configure permissions, visibility, and site links.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Page Revisions&#039;&#039;&#039; || View previous versions of each page.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Broken Links Report&#039;&#039;&#039; || Identify dead or missing links within the Wiki.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. Recommended Practices ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;&#039;&#039;consistent titles and routes&#039;&#039;&#039; for better searchability.&lt;br /&gt;
* Always review &#039;&#039;&#039;Broken Links Report&#039;&#039;&#039; after restructuring.&lt;br /&gt;
* Maintain a &#039;&#039;&#039;single Wiki Space&#039;&#039;&#039; for each division (e.g., Accounting, HR, Projects).&lt;br /&gt;
* For collaborative editing, enable controlled publishing with &#039;&#039;&#039;Wiki Page Patches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Issue !! Possible Cause !! Solution&lt;br /&gt;
|-&lt;br /&gt;
| Wiki not appearing in navbar || Navbar link not configured || Go to Website Settings &amp;gt; Navbar &amp;gt; Add Wiki link&lt;br /&gt;
|-&lt;br /&gt;
| Edits not saving || No persistent volume (Docker) || Mount volume or reconfigure persistent storage&lt;br /&gt;
|-&lt;br /&gt;
| Missing sidebar || No parent label in Wiki Space || Add Parent Label under Wiki Space&lt;br /&gt;
|-&lt;br /&gt;
| Access denied || Guest access disabled || Enable &#039;&#039;&#039;Allow Guest&#039;&#039;&#039; if public access is required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ERPNext]]&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Comfac]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=76</id>
		<title>Using Frappe Wiki</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=76"/>
		<updated>2026-02-25T07:21:33Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_Guide&amp;diff=61</id>
		<title>ERPNext Webshop Setup Guide</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_Guide&amp;diff=61"/>
		<updated>2026-02-25T07:10:32Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_Guide&amp;diff=60</id>
		<title>ERPNext Webshop Setup Guide</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_Guide&amp;diff=60"/>
		<updated>2026-02-25T07:10:18Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= ERPNext Webshop: Installation, Bulk Item Management &amp;amp; Setup Guide =  This guide outlines the end-to-end process for installing and populating the ERPNext Webshop, ensuring items are correctly categorized, imported, and visually optimized for both internal administration and the customer-facing storefront.  == Sources == * https://docs.frappe.io/erpnext/v13/user/manual/en/ecommerce/set-up-ecommerce * https://github.com/frappe/webshop * https://docs.frappe.io/erpnext/v13...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ERPNext Webshop: Installation, Bulk Item Management &amp;amp; Setup Guide =&lt;br /&gt;
&lt;br /&gt;
This guide outlines the end-to-end process for installing and populating the ERPNext Webshop, ensuring items are correctly categorized, imported, and visually optimized for both internal administration and the customer-facing storefront.&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
* https://docs.frappe.io/erpnext/v13/user/manual/en/ecommerce/set-up-ecommerce&lt;br /&gt;
* https://github.com/frappe/webshop&lt;br /&gt;
* https://docs.frappe.io/erpnext/v13/user/manual/en/ecommerce/website-item&lt;br /&gt;
* https://docs.frappe.io/erpnext/v13/user/manual/en/ecommerce/ecommerce_settings&lt;br /&gt;
&lt;br /&gt;
== Step 1: Install Webshop ==&lt;br /&gt;
&lt;br /&gt;
You can install the Webshop module in two ways:&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Via Bench (Self-hosted) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bench get-app https://github.com/frappe/webshop&lt;br /&gt;
bench --site [your-site-name] install-app webshop&lt;br /&gt;
bench restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Option 2: Via Frappe Cloud ===&lt;br /&gt;
# Go to the &#039;&#039;&#039;Frappe Cloud Dashboard&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;Sites&#039;&#039;&#039; or &#039;&#039;&#039;Server → Application&#039;&#039;&#039;.&lt;br /&gt;
# Under &#039;&#039;&#039;Apps&#039;&#039;&#039;, click &#039;&#039;&#039;Install App&#039;&#039;&#039; and select &#039;&#039;&#039;Webshop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Set Up Item Groups ==&lt;br /&gt;
&lt;br /&gt;
You can use the default Item Groups (e.g. &#039;&#039;Products&#039;&#039; or &#039;&#039;Services&#039;&#039;) or create new ones.&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;Item Group List&#039;&#039;&#039; and create or edit an Item Group.&lt;br /&gt;
# &#039;&#039;&#039;Crucial:&#039;&#039;&#039; Check the &amp;quot;&#039;&#039;&#039;Show in Website&#039;&#039;&#039;&amp;quot; box so the group appears in shop navigation.&lt;br /&gt;
# Configure the Item Group&#039;s &#039;&#039;&#039;taxes, terms, and conditions&#039;&#039;&#039; for accurate pricing and compliance.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Configure Webshop Settings ==&lt;br /&gt;
&lt;br /&gt;
Navigate to: &#039;&#039;&#039;Webshop Settings&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Display Settings ===&lt;br /&gt;
* Products per Page: &#039;&#039;&#039;24&#039;&#039;&#039; (recommended)&lt;br /&gt;
* ☑ Enable Variant Selection&lt;br /&gt;
* ☑ Show Price&lt;br /&gt;
* ☑ Show Contact Us Button&lt;br /&gt;
* (Optional) Show Stock Availability&lt;br /&gt;
* (Optional) Show Apply Coupon Code&lt;br /&gt;
* (Optional) Allow items not in stock to be added to cart&lt;br /&gt;
&lt;br /&gt;
=== Shopping Cart Settings ===&lt;br /&gt;
* &#039;&#039;&#039;Company:&#039;&#039;&#039; Comfac Corporation&lt;br /&gt;
* &#039;&#039;&#039;Default Customer Group:&#039;&#039;&#039; All Customer Groups&lt;br /&gt;
* &#039;&#039;&#039;Price List:&#039;&#039;&#039; Standard Selling&lt;br /&gt;
* &#039;&#039;&#039;Quotation Series:&#039;&#039;&#039; &amp;lt;code&amp;gt;SAL-QTN-YYYY.-&amp;lt;/code&amp;gt;&lt;br /&gt;
* ☑ Enable Shopping Cart&lt;br /&gt;
* (Optional) Allow Non-Website Items in Cart Quotation&lt;br /&gt;
&lt;br /&gt;
=== Checkout Settings ===&lt;br /&gt;
* ☑ Show Price in Quotation&lt;br /&gt;
* ☑ Save Quotations as Draft&lt;br /&gt;
* (Optional) Enable Checkout — activate when payment systems are ready&lt;br /&gt;
&lt;br /&gt;
== Step 4: Bulk Item Creation (Core Item) ==&lt;br /&gt;
&lt;br /&gt;
You must create the &#039;&#039;&#039;Item&#039;&#039;&#039; entry before the &#039;&#039;&#039;Website Item&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
# Download the &#039;&#039;&#039;Item Import Template&#039;&#039;&#039; from the Data Import tool.&lt;br /&gt;
# Fill in the template using the critical fields below.&lt;br /&gt;
&lt;br /&gt;
=== Critical Item Fields &amp;amp; Defaults ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Required Value / Default !! Note&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Code&#039;&#039;&#039; || &#039;&#039;Unique SKU&#039;&#039; || Must be correct; this links all records.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Series&#039;&#039;&#039; || &amp;lt;code&amp;gt;STO-ITEM-.YYYY.-&amp;lt;/code&amp;gt; || Standard naming series.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Name&#039;&#039;&#039; || &#039;&#039;Product Name&#039;&#039; || Display name for the product.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Group&#039;&#039;&#039; || &#039;&#039;Category Name&#039;&#039; || Must match a created Item Group.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Default Unit of Measure&#039;&#039;&#039; || Unit || Standard UOM.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maintain Stock&#039;&#039;&#039; || 1 || Set to 1 for physical goods.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard Selling Rate&#039;&#039;&#039; || &#039;&#039;Price&#039;&#039; || The base price of the item.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039; || &#039;&#039;Details&#039;&#039; || Internal/Technical description.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Brand&#039;&#039;&#039; || &#039;&#039;Manufacturer&#039;&#039; || e.g., Dell, Netgate.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Default Material Request Type&#039;&#039;&#039; || Purchase || Standard procurement flow.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Published in Website&#039;&#039;&#039; || 1 || &#039;&#039;&#039;Mandatory&#039;&#039;&#039; for web visibility.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UOM (UOMs)&#039;&#039;&#039; || Unit || Child table UOM entry.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Conversion Factor (UOMs)&#039;&#039;&#039; || 1 || Relationship to base UOM.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Company (Item Defaults)&#039;&#039;&#039; || &#039;&#039;Your Company&#039;&#039; || e.g., Comfac Corporation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Default Warehouse (Item Defaults)&#039;&#039;&#039; || &#039;&#039;Warehouse Name&#039;&#039; || e.g., Stores - CC.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 5: Attaching Item Pictures ==&lt;br /&gt;
&lt;br /&gt;
After the bulk Item upload, attach image files to each record:&lt;br /&gt;
&lt;br /&gt;
# Open the &#039;&#039;&#039;Item&#039;&#039;&#039; record.&lt;br /&gt;
# Use the &#039;&#039;&#039;&amp;quot;Attach File&amp;quot;&#039;&#039;&#039; button in the sidebar.&lt;br /&gt;
# Upload high-resolution product images.&lt;br /&gt;
# These attached images are what the Slideshow will eventually &amp;quot;Fetch.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Step 6: Bulk Website Item Creation ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Website Item&#039;&#039;&#039; is the public face of your product. Use the &#039;&#039;&#039;Website Item Import Template&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Critical Website Item Fields ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Required Value / Default !! Note&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Website Item Name&#039;&#039;&#039; || &#039;&#039;Marketing Name&#039;&#039; || The title shown on the webshop.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Code&#039;&#039;&#039; || &#039;&#039;Matching SKU&#039;&#039; || &#039;&#039;&#039;Must match exactly&#039;&#039;&#039; the code from Step 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Naming Series&#039;&#039;&#039; || &amp;lt;code&amp;gt;WEB-ITM-.####&amp;lt;/code&amp;gt; || Standard website item series.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Has Variants&#039;&#039;&#039; || 0 || Set to 0 for standalone items.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Published&#039;&#039;&#039; || 1 || Set to 1 to make it live.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Name&#039;&#039;&#039; || &#039;&#039;Internal Name&#039;&#039; || Matches the Core Item name.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Group&#039;&#039;&#039; || &#039;&#039;Category&#039;&#039; || Website category for navigation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stock UOM&#039;&#039;&#039; || Unit || Must match the Core Item UOM.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Item Description&#039;&#039;&#039; || &#039;&#039;Full Details&#039;&#039; || Long-form text for the item page.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Brand&#039;&#039;&#039; || &#039;&#039;Manufacturer&#039;&#039; || Displayed for filtering.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Image Description&#039;&#039;&#039; || &#039;&#039;Alt Text&#039;&#039; || Used for SEO and accessibility.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Short Website Description&#039;&#039;&#039; || &#039;&#039;Teaser&#039;&#039; || Shown in the grid/list view.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Website Description&#039;&#039;&#039; || &#039;&#039;Rich Content&#039;&#039; || Detailed marketing description.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Step 7: Website Slideshows ==&lt;br /&gt;
&lt;br /&gt;
To provide a premium feel, use the &#039;&#039;&#039;Website Slideshow&#039;&#039;&#039; feature.&lt;br /&gt;
&lt;br /&gt;
# Navigate to &#039;&#039;&#039;Website Slideshow&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Naming Convention:&#039;&#039;&#039; Use the &#039;&#039;&#039;Website Item Name&#039;&#039;&#039; or &#039;&#039;&#039;Item Code&#039;&#039;&#039; to name the entry.&lt;br /&gt;
# &#039;&#039;&#039;Fetch Images:&#039;&#039;&#039; Click &#039;&#039;&#039;&amp;quot;Fetch attached images from the document&amp;quot;&#039;&#039;&#039; — this pulls images attached to the Item record in Step 5.&lt;br /&gt;
# &#039;&#039;&#039;Link to Website Item:&#039;&#039;&#039; Go to the Website Item record → &#039;&#039;&#039;Display Images&#039;&#039;&#039; section → select your new Slideshow.&lt;br /&gt;
# The &#039;&#039;&#039;Main Picture&#039;&#039;&#039; on the shop page is pulled from the primary attached picture on the Website Item entry.&lt;br /&gt;
&lt;br /&gt;
== Step 8: Bulk Editing &amp;amp; Fine-Tuning ==&lt;br /&gt;
&lt;br /&gt;
Only perform bulk editing &#039;&#039;after&#039;&#039; the initial creation has been inspected and verified.&lt;br /&gt;
&lt;br /&gt;
* Use the &#039;&#039;&#039;&amp;quot;Update Records&amp;quot;&#039;&#039;&#039; mode in the Data Import tool to adjust prices or descriptions.&lt;br /&gt;
* Verify that each item has a unique &#039;&#039;&#039;Route&#039;&#039;&#039; to avoid 404 errors.&lt;br /&gt;
* Once published, products will appear under &amp;lt;code&amp;gt;/all-products&amp;lt;/code&amp;gt; by default.&lt;br /&gt;
&lt;br /&gt;
[[Category:ERPNext]]&lt;br /&gt;
[[Category:Webshop]]&lt;br /&gt;
[[Category:Setup Guides]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Frappe_Links_and_References&amp;diff=59</id>
		<title>Frappe Links and References</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Frappe_Links_and_References&amp;diff=59"/>
		<updated>2026-02-25T07:02:58Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Frappe Links and References =  == Official Documentation ==  * [https://docs.frappe.io/erpnext/user/manual/en/india ERPNext India Localization – User Manual] * [https://docs.indiacompliance.app/docs/getting-started/introduction India Compliance App – Getting Started] * [https://docs.frappe.io/cloud/guidelines-for-contributing-regional-localisation Frappe Cloud – Guidelines for Contributing Regional Localisation] * [https://docs.frappe.io/cloud/local-fc-setup Frap...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Frappe Links and References =&lt;br /&gt;
&lt;br /&gt;
== Official Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.frappe.io/erpnext/user/manual/en/india ERPNext India Localization – User Manual]&lt;br /&gt;
* [https://docs.indiacompliance.app/docs/getting-started/introduction India Compliance App – Getting Started]&lt;br /&gt;
* [https://docs.frappe.io/cloud/guidelines-for-contributing-regional-localisation Frappe Cloud – Guidelines for Contributing Regional Localisation]&lt;br /&gt;
* [https://docs.frappe.io/cloud/local-fc-setup Frappe Cloud – Local FC Setup]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Modern_Guide:_pfSense_Captive_Portal_with_FreeRADIUS_%26_ACME&amp;diff=58</id>
		<title>Modern Guide: pfSense Captive Portal with FreeRADIUS &amp; ACME</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Modern_Guide:_pfSense_Captive_Portal_with_FreeRADIUS_%26_ACME&amp;diff=58"/>
		<updated>2026-02-25T07:02:37Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME =  &amp;#039;&amp;#039;&amp;#039;Based on the Lawrence Systems Methodology&amp;#039;&amp;#039;&amp;#039;  Reference Videos: * [https://www.youtube.com/watch?v=hdHDCafeFdU pfSense Captive Portal with FreeRADIUS – Lawrence Systems] * [https://www.youtube.com/watch?v=qlcVx-k-02E Quick and Easy Local SSL Certificates for Your Homelab – Wolfgang&amp;#039;s Channel]  This guide focuses on a &amp;quot;production-ready&amp;quot; setup that minimizes browser errors (SSL warnings) on modern devi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Based on the Lawrence Systems Methodology&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Reference Videos:&lt;br /&gt;
* [https://www.youtube.com/watch?v=hdHDCafeFdU pfSense Captive Portal with FreeRADIUS – Lawrence Systems]&lt;br /&gt;
* [https://www.youtube.com/watch?v=qlcVx-k-02E Quick and Easy Local SSL Certificates for Your Homelab – Wolfgang&#039;s Channel]&lt;br /&gt;
&lt;br /&gt;
This guide focuses on a &amp;quot;production-ready&amp;quot; setup that minimizes browser errors (SSL warnings) on modern devices by using proper Let&#039;s Encrypt certificates and Split DNS. It also covers per-user bandwidth limiting and strict content whitelisting.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;pfSense Firewall:&#039;&#039;&#039; Version 2.4/2.5 or higher.&lt;br /&gt;
* &#039;&#039;&#039;Domain Name:&#039;&#039;&#039; You need a domain name (buy one or use DuckDNS).&lt;br /&gt;
* &#039;&#039;&#039;Guest Network:&#039;&#039;&#039; A dedicated interface/VLAN (e.g., 192.168.2.1/24) for guests.&lt;br /&gt;
* &#039;&#039;&#039;Packages:&#039;&#039;&#039; Install &amp;lt;code&amp;gt;freeradius3&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;acme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 1: WebGUI Configuration (Port Conflict Prevention) ==&lt;br /&gt;
&lt;br /&gt;
# Navigate to &#039;&#039;&#039;System &amp;gt; Advanced &amp;gt; Admin Access&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;TCP Port:&#039;&#039;&#039; Change this to &amp;lt;code&amp;gt;5555&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;WebGUI Redirect:&#039;&#039;&#039; Ensure &amp;quot;Disable webConfigurator redirect rule&amp;quot; is &#039;&#039;&#039;unchecked&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Save&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 2: Free SSL Certificates (DuckDNS &amp;amp; Let&#039;s Encrypt) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Problem:&#039;&#039;&#039; Modern browsers block &amp;quot;Self-Signed&amp;quot; certificates.&lt;br /&gt;
&#039;&#039;&#039;The Fix:&#039;&#039;&#039; Use DuckDNS (free) to get a valid certificate.&lt;br /&gt;
&lt;br /&gt;
=== Step A: Get a Free DuckDNS Domain ===&lt;br /&gt;
# Go to [https://www.duckdns.org DuckDNS.org].&lt;br /&gt;
# Create a domain (e.g., &amp;lt;code&amp;gt;mywifinetwork&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Copy your &#039;&#039;&#039;Token&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Step B: Configure ACME on pfSense ===&lt;br /&gt;
# &#039;&#039;&#039;Install ACME:&#039;&#039;&#039; Go to &#039;&#039;&#039;System &amp;gt; Package Manager&#039;&#039;&#039; and install &amp;lt;code&amp;gt;acme&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Create Account Key:&#039;&#039;&#039; Services &amp;gt; ACME &amp;gt; Account Keys &amp;gt; Add.&lt;br /&gt;
#* Name: &amp;lt;code&amp;gt;LetsEncryptKey&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Server: Let&#039;s Encrypt Production&lt;br /&gt;
# &#039;&#039;&#039;Issue the Certificate:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &#039;&#039;&#039;Services &amp;gt; ACME &amp;gt; Certificates&#039;&#039;&#039;.&lt;br /&gt;
#* Click &#039;&#039;&#039;Add&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;CaptivePortalCert&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Domain name:&#039;&#039;&#039; &amp;lt;code&amp;gt;mywifinetwork.duckdns.org&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Method:&#039;&#039;&#039; DNS-DuckDNS&lt;br /&gt;
#* &#039;&#039;&#039;Token:&#039;&#039;&#039; Paste your token&lt;br /&gt;
#* Click &#039;&#039;&#039;Save&#039;&#039;&#039; then &#039;&#039;&#039;Issue/Renew&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 3: Split DNS Configuration ==&lt;br /&gt;
&lt;br /&gt;
Ensure users resolve the domain to the local IP.&lt;br /&gt;
&lt;br /&gt;
# Navigate to &#039;&#039;&#039;Services &amp;gt; DNS Resolver&#039;&#039;&#039;.&lt;br /&gt;
# Go to &#039;&#039;&#039;Host Overrides &amp;gt; Add&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Host:&#039;&#039;&#039; &amp;lt;code&amp;gt;mywifinetwork&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Domain:&#039;&#039;&#039; &amp;lt;code&amp;gt;duckdns.org&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;IP Address:&#039;&#039;&#039; &amp;lt;code&amp;gt;192.168.2.1&amp;lt;/code&amp;gt; (Guest Interface IP)&lt;br /&gt;
# Click &#039;&#039;&#039;Save&#039;&#039;&#039; and &#039;&#039;&#039;Apply Changes&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 4: Configure FreeRADIUS (Users &amp;amp; Bandwidth) ==&lt;br /&gt;
&lt;br /&gt;
We will define three users with specific bandwidth limits.&lt;br /&gt;
&lt;br /&gt;
=== 1. Interfaces &amp;amp; Client ===&lt;br /&gt;
* &#039;&#039;&#039;Services &amp;gt; FreeRADIUS &amp;gt; Interfaces:&#039;&#039;&#039; Add &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; for ports 1812 &amp;amp; 1813.&lt;br /&gt;
* &#039;&#039;&#039;Services &amp;gt; FreeRADIUS &amp;gt; NAS / Clients:&#039;&#039;&#039; Add &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; with secret &amp;lt;code&amp;gt;SecretPass123&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 2. Create Users ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! User&lt;br /&gt;
! Username&lt;br /&gt;
! Password&lt;br /&gt;
! Bandwidth Down&lt;br /&gt;
! Bandwidth Up&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Admin (Full Access)&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;adminuser&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;adminpass&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unlimited (leave blank)&lt;br /&gt;
| Unlimited (leave blank)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Resident (0.1 Mbps)&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;resident&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;resident123&amp;lt;/code&amp;gt;&lt;br /&gt;
| 100 Kbps&lt;br /&gt;
| 100 Kbps&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Guest (0.01 Mbps)&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;guest&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;guest123&amp;lt;/code&amp;gt;&lt;br /&gt;
| 10 Kbps&lt;br /&gt;
| 10 Kbps&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 5: Firewall Rules &amp;amp; Whitelisting ==&lt;br /&gt;
&lt;br /&gt;
=== Step A: Define Admin Devices (Static IPs) ===&lt;br /&gt;
# Go to &#039;&#039;&#039;Services &amp;gt; DHCP Server &amp;gt; [Guest Interface]&#039;&#039;&#039;.&lt;br /&gt;
# Scroll to &#039;&#039;&#039;Static Mappings&#039;&#039;&#039;.&lt;br /&gt;
# Add your Admin Device&#039;s MAC Address and assign a specific IP (e.g., &amp;lt;code&amp;gt;192.168.2.10&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Repeat for all Admin devices.&lt;br /&gt;
&lt;br /&gt;
=== Step B: Create Aliases (The Whitelist) ===&lt;br /&gt;
# Go to &#039;&#039;&#039;Firewall &amp;gt; Aliases&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Create Admin Alias:&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;Admin_IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Type:&#039;&#039;&#039; Host(s)&lt;br /&gt;
#* &#039;&#039;&#039;Content:&#039;&#039;&#039; &amp;lt;code&amp;gt;192.168.2.10&amp;lt;/code&amp;gt; (and other admin IPs)&lt;br /&gt;
# &#039;&#039;&#039;Create Apps Alias:&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;Allowed_Domains&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Type:&#039;&#039;&#039; Host(s)&lt;br /&gt;
#* &#039;&#039;&#039;Content:&#039;&#039;&#039; &amp;lt;code&amp;gt;grab.com&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lalamove.com&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api.grab.com&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;api.lalamove.com&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Create Messaging Ports Alias:&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;Messaging_Ports&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Type:&#039;&#039;&#039; Port(s)&lt;br /&gt;
#* &#039;&#039;&#039;Content:&#039;&#039;&#039; 3478 (WhatsApp/Messenger STUN), 5222 (WhatsApp/XMPP), 443 (HTTPS), 53 (DNS)&lt;br /&gt;
&lt;br /&gt;
=== Step C: Apply Strict Rules ===&lt;br /&gt;
Go to &#039;&#039;&#039;Firewall &amp;gt; Rules &amp;gt; [Guest Interface]&#039;&#039;&#039;. &#039;&#039;&#039;Delete&#039;&#039;&#039; any existing &amp;quot;Allow All&amp;quot; rules. Create these rules in this &#039;&#039;&#039;exact order&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Rule #&lt;br /&gt;
! Action&lt;br /&gt;
! Source&lt;br /&gt;
! Destination&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Pass&lt;br /&gt;
| Single Host or Alias → &amp;lt;code&amp;gt;Admin_IPs&amp;lt;/code&amp;gt;&lt;br /&gt;
| Any&lt;br /&gt;
| Admins bypass all blocks.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Pass (UDP)&lt;br /&gt;
| Any&lt;br /&gt;
| Port 53 (DNS)&lt;br /&gt;
| Everyone needs DNS to function.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Pass (TCP/UDP)&lt;br /&gt;
| Any&lt;br /&gt;
| &amp;lt;code&amp;gt;Allowed_Domains&amp;lt;/code&amp;gt;, Port 443&lt;br /&gt;
| Allows traffic to Grab/Lalamove IPs.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Pass (TCP/UDP)&lt;br /&gt;
| Any&lt;br /&gt;
| Any, Port → &amp;lt;code&amp;gt;Messaging_Ports&amp;lt;/code&amp;gt;&lt;br /&gt;
| Allows WhatsApp/Messenger calls.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &#039;&#039;&#039;Block&#039;&#039;&#039;&lt;br /&gt;
| Any&lt;br /&gt;
| Any&lt;br /&gt;
| Blocks YouTube, Social Media, general browsing for Residents/Guests.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 6: Configure the Captive Portal ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Enable Portal:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &#039;&#039;&#039;Services &amp;gt; Captive Portal&#039;&#039;&#039;.&lt;br /&gt;
#* Add Zone &amp;lt;code&amp;gt;GuestZone&amp;lt;/code&amp;gt;, Enable it, select Guest Interface.&lt;br /&gt;
# &#039;&#039;&#039;Authentication:&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Method:&#039;&#039;&#039; RADIUS Authentication&lt;br /&gt;
#* &#039;&#039;&#039;Primary Server:&#039;&#039;&#039; &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;, Secret: &amp;lt;code&amp;gt;SecretPass123&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Re-authentication:&#039;&#039;&#039; Checked (Every minute)&lt;br /&gt;
#* &#039;&#039;&#039;RADIUS Options:&#039;&#039;&#039; Check &#039;&#039;&#039;Use RADIUS per-user bandwidth attributes&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;HTTPS Login:&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Enable HTTPS:&#039;&#039;&#039; Checked&lt;br /&gt;
#* &#039;&#039;&#039;Host Name:&#039;&#039;&#039; &amp;lt;code&amp;gt;mywifinetwork.duckdns.org&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Certificate:&#039;&#039;&#039; &amp;lt;code&amp;gt;CaptivePortalCert&amp;lt;/code&amp;gt;&lt;br /&gt;
# Click &#039;&#039;&#039;Save&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 7: Verification ==&lt;br /&gt;
&lt;br /&gt;
=== Test Admin ===&lt;br /&gt;
* Connect with an Admin device (ensure it gets Static IP &amp;lt;code&amp;gt;192.168.2.10&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Log in as &amp;lt;code&amp;gt;adminuser&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Try YouTube. &#039;&#039;&#039;Result:&#039;&#039;&#039; Should work.&lt;br /&gt;
&lt;br /&gt;
=== Test Resident ===&lt;br /&gt;
* Connect with a random phone.&lt;br /&gt;
* Log in as &amp;lt;code&amp;gt;resident&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Try Fast.com. &#039;&#039;&#039;Result:&#039;&#039;&#039; Speed capped at 0.1 Mbps.&lt;br /&gt;
* Try YouTube. &#039;&#039;&#039;Result:&#039;&#039;&#039; Blocked.&lt;br /&gt;
* Try Grab App. &#039;&#039;&#039;Result:&#039;&#039;&#039; Should load.&lt;br /&gt;
&lt;br /&gt;
=== Test Guest ===&lt;br /&gt;
* Log in as &amp;lt;code&amp;gt;guest&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Try Fast.com. &#039;&#039;&#039;Result:&#039;&#039;&#039; Speed capped at 0.01 Mbps (very slow).&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Viber_Focus-Stealing&amp;diff=57</id>
		<title>Viber Focus-Stealing</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Viber_Focus-Stealing&amp;diff=57"/>
		<updated>2026-02-25T07:02:21Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;== Disable Viber Notifications (Ubuntu Flatpak Version) ==  Follow these steps to stop Viber from interrupting your typing or switching your active window.  === 1. Open Viber ===  Launch the Viber application from your applications menu.  === 2. Go to Settings ===  Click the gear icon in the upper-right corner of the Viber window.  === 3. Select Notifications ===  In the sidebar menu, click &amp;#039;&amp;#039;&amp;#039;Notifications&amp;#039;&amp;#039;&amp;#039;.  === 4. Turn Off All Notification Types ===  Inside the Noti...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Disable Viber Notifications (Ubuntu Flatpak Version) ==&lt;br /&gt;
&lt;br /&gt;
Follow these steps to stop Viber from interrupting your typing or switching your active window.&lt;br /&gt;
&lt;br /&gt;
=== 1. Open Viber ===&lt;br /&gt;
&lt;br /&gt;
Launch the Viber application from your applications menu.&lt;br /&gt;
&lt;br /&gt;
=== 2. Go to Settings ===&lt;br /&gt;
&lt;br /&gt;
Click the gear icon in the upper-right corner of the Viber window.&lt;br /&gt;
&lt;br /&gt;
=== 3. Select Notifications ===&lt;br /&gt;
&lt;br /&gt;
In the sidebar menu, click &#039;&#039;&#039;Notifications&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 4. Turn Off All Notification Types ===&lt;br /&gt;
&lt;br /&gt;
Inside the Notifications section, switch &#039;&#039;&#039;off&#039;&#039;&#039; the following items:&lt;br /&gt;
&lt;br /&gt;
* 1-on-1 messages&lt;br /&gt;
* Group messages&lt;br /&gt;
* Communities / Channels&lt;br /&gt;
* Service messages&lt;br /&gt;
* Mentions&lt;br /&gt;
* All messages (sound)&lt;br /&gt;
* Combined notifications&lt;br /&gt;
* Unread badge (effects)&lt;br /&gt;
&lt;br /&gt;
This prevents Viber from triggering pop-ups or requesting attention.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What is &amp;quot;Focus Stealing&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Focus stealing&amp;quot; happens when an application forces itself to the front or grabs the keyboard focus while you&#039;re actively using another window. On Ubuntu, this can cause:&lt;br /&gt;
&lt;br /&gt;
* Keystrokes going into the wrong app&lt;br /&gt;
* The active window losing control&lt;br /&gt;
* Your typing suddenly doing nothing&lt;br /&gt;
&lt;br /&gt;
Some apps do this when displaying notifications. Disabling notifications prevents Viber from grabbing the focus and interrupting your work.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Mailcow_%2B_Thunderbird_Setup_Guide_(Email_%2B_Calendar)&amp;diff=56</id>
		<title>Mailcow + Thunderbird Setup Guide (Email + Calendar)</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Mailcow_%2B_Thunderbird_Setup_Guide_(Email_%2B_Calendar)&amp;diff=56"/>
		<updated>2026-02-25T07:02:04Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Mailcow + Thunderbird Setup Guide (Email + Calendar) =  This guide shows staff how to properly connect &amp;#039;&amp;#039;&amp;#039;Thunderbird&amp;#039;&amp;#039;&amp;#039; to &amp;#039;&amp;#039;&amp;#039;Mailcow&amp;#039;&amp;#039;&amp;#039; for: * Email (IMAP + SMTP) * Calendar (CalDAV via SOGo)  {{Note|If your account has &amp;#039;&amp;#039;&amp;#039;2FA enabled&amp;#039;&amp;#039;&amp;#039;, you &amp;#039;&amp;#039;&amp;#039;must use an App Password&amp;#039;&amp;#039;&amp;#039;. Thunderbird will not work with your normal login password.}}  ----  == 1. Create an App Password in Mailcow ==  # Log in to your Mailcow webmail account. # Open the &amp;#039;&amp;#039;&amp;#039;Mailbox&amp;#039;&amp;#039;&amp;#039; menu. # Select &amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mailcow + Thunderbird Setup Guide (Email + Calendar) =&lt;br /&gt;
&lt;br /&gt;
This guide shows staff how to properly connect &#039;&#039;&#039;Thunderbird&#039;&#039;&#039; to &#039;&#039;&#039;Mailcow&#039;&#039;&#039; for:&lt;br /&gt;
* Email (IMAP + SMTP)&lt;br /&gt;
* Calendar (CalDAV via SOGo)&lt;br /&gt;
&lt;br /&gt;
{{Note|If your account has &#039;&#039;&#039;2FA enabled&#039;&#039;&#039;, you &#039;&#039;&#039;must use an App Password&#039;&#039;&#039;. Thunderbird will not work with your normal login password.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Create an App Password in Mailcow ==&lt;br /&gt;
&lt;br /&gt;
# Log in to your Mailcow webmail account.&lt;br /&gt;
# Open the &#039;&#039;&#039;Mailbox&#039;&#039;&#039; menu.&lt;br /&gt;
# Select &#039;&#039;&#039;App Passwords&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Create app password&#039;&#039;&#039;.&lt;br /&gt;
# Name it something like: &amp;lt;code&amp;gt;Thunderbird&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Choose allowed protocols:&lt;br /&gt;
#* IMAP&lt;br /&gt;
#* SMTP&lt;br /&gt;
#* DAV (for calendar)&lt;br /&gt;
# Copy the generated password.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Configure Email in Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
# Open Thunderbird.&lt;br /&gt;
# Go to &#039;&#039;&#039;Account Settings → Add Mail Account&#039;&#039;&#039;.&lt;br /&gt;
# Enter:&lt;br /&gt;
#* Your full email address&lt;br /&gt;
#* Any name you prefer&lt;br /&gt;
#* &#039;&#039;&#039;App Password&#039;&#039;&#039; from Mailcow (&#039;&#039;&#039;NOT&#039;&#039;&#039; your main password)&lt;br /&gt;
# Thunderbird should auto-detect settings.&lt;br /&gt;
&lt;br /&gt;
=== Required Server Settings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Incoming (IMAP) – Host&#039;&#039;&#039;&lt;br /&gt;
| Your Mailcow server domain&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Incoming (IMAP) – Port&#039;&#039;&#039;&lt;br /&gt;
| 993&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Incoming (IMAP) – SSL&#039;&#039;&#039;&lt;br /&gt;
| SSL/TLS&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Incoming (IMAP) – Authentication&#039;&#039;&#039;&lt;br /&gt;
| Normal Password&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Outgoing (SMTP) – Host&#039;&#039;&#039;&lt;br /&gt;
| Your Mailcow server domain&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Outgoing (SMTP) – Port&#039;&#039;&#039;&lt;br /&gt;
| 465 (or 587 if needed)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Outgoing (SMTP) – SSL&#039;&#039;&#039;&lt;br /&gt;
| SSL/TLS&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Outgoing (SMTP) – Authentication&#039;&#039;&#039;&lt;br /&gt;
| Normal Password&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Enable CalDAV Calendar in Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
Mailcow uses SOGo for calendar sync.&lt;br /&gt;
&lt;br /&gt;
# In Thunderbird, go to &#039;&#039;&#039;Calendar&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;+ New Calendar&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;On the Network&#039;&#039;&#039;.&lt;br /&gt;
# Select &#039;&#039;&#039;CalDAV&#039;&#039;&#039;.&lt;br /&gt;
# Enter your calendar URL (example format):&lt;br /&gt;
&amp;lt;pre&amp;gt;https://your-mailcow-server/SOGo/dav/your-email/Calendar/personal/&amp;lt;/pre&amp;gt;&lt;br /&gt;
# When prompted:&lt;br /&gt;
#* &#039;&#039;&#039;Username:&#039;&#039;&#039; Your full email address&lt;br /&gt;
#* &#039;&#039;&#039;Password:&#039;&#039;&#039; Your &#039;&#039;&#039;App Password&#039;&#039;&#039;&lt;br /&gt;
# Complete setup.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Common Issues to Avoid ==&lt;br /&gt;
&lt;br /&gt;
* Using your &#039;&#039;&#039;main password&#039;&#039;&#039; instead of an &#039;&#039;&#039;App Password&#039;&#039;&#039; → causes &amp;quot;wrong credentials.&amp;quot;&lt;br /&gt;
* Forgetting that the calendar URL must end with a &#039;&#039;&#039;trailing slash&#039;&#039;&#039; &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Choosing the wrong authentication type (must be &#039;&#039;&#039;Normal Password&#039;&#039;&#039;).&lt;br /&gt;
* Having saved old passwords in Thunderbird. Clear them here:&lt;br /&gt;
** &#039;&#039;&#039;Settings → Privacy &amp;amp; Security → Saved Passwords&#039;&#039;&#039; → Remove old entries.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Verification Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Email works for sending and receiving.&lt;br /&gt;
* Calendar events appear in Thunderbird.&lt;br /&gt;
* Your App Password is active in the Mailcow App Passwords list.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
If these steps are followed, Thunderbird will reliably sync both email and calendar with Mailcow.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Spoof_Timezone_Extension_%E2%80%93_Setup_Guide_for_Comfac_Staff&amp;diff=55</id>
		<title>Spoof Timezone Extension – Setup Guide for Comfac Staff</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Spoof_Timezone_Extension_%E2%80%93_Setup_Guide_for_Comfac_Staff&amp;diff=55"/>
		<updated>2026-02-25T07:01:39Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Spoof Timezone Extension – Setup Guide for Comfac Staff =  This guide explains how to configure the &amp;#039;&amp;#039;&amp;#039;Spoof Timezone&amp;#039;&amp;#039;&amp;#039; extension in LibreWolf/Firefox so staff can maintain &amp;#039;&amp;#039;&amp;#039;privacy protection&amp;#039;&amp;#039;&amp;#039; while ensuring &amp;#039;&amp;#039;&amp;#039;Nextcloud, Mailcow, and other Comfac tools display correct timestamps&amp;#039;&amp;#039;&amp;#039;.  Use this setup if you rely on privacy extensions that hide your timezone, but still need accurate time and calendar functionality on Comfac systems.  ----  == 1. Open the Spoof Ti...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Spoof Timezone Extension – Setup Guide for Comfac Staff =&lt;br /&gt;
&lt;br /&gt;
This guide explains how to configure the &#039;&#039;&#039;Spoof Timezone&#039;&#039;&#039; extension in LibreWolf/Firefox so staff can maintain &#039;&#039;&#039;privacy protection&#039;&#039;&#039; while ensuring &#039;&#039;&#039;Nextcloud, Mailcow, and other Comfac tools display correct timestamps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Use this setup if you rely on privacy extensions that hide your timezone, but still need accurate time and calendar functionality on Comfac systems.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Open the Spoof Timezone Extension Settings ==&lt;br /&gt;
&lt;br /&gt;
Paste the following into your browser address bar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;moz-extension://e2416390-3967-4dec-9c8b-36eacabf59ce/data/options/index.html&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this link changes on another device, open: &#039;&#039;&#039;Extensions → Spoof Timezone → Options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Confirm Your Real Timezone ==&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Timezone&#039;&#039;&#039;, set:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Asia/Manila (GMT+8)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure &#039;&#039;&#039;both&#039;&#039;&#039; the dropdown and the text field show &amp;lt;code&amp;gt;Asia/Manila&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Leave the following &#039;&#039;&#039;unchecked&#039;&#039;&#039;:&lt;br /&gt;
* Automatically update timezone based on my IP address&lt;br /&gt;
* Pick a random time zone&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Do NOT Change &amp;quot;Protection Scope&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Keep the default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*://*/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This means the extension protects every website &#039;&#039;&#039;except&#039;&#039;&#039; those you explicitly whitelist. No need to modify this section.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Add Comfac Services to the Whitelist ==&lt;br /&gt;
&lt;br /&gt;
In the &#039;&#039;&#039;Whitelisted Sites&#039;&#039;&#039; box, add the following entries &#039;&#039;&#039;one per line&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*://challenges.cloudflare.com/*&lt;br /&gt;
*://mail.comfac-it.com/*&lt;br /&gt;
*://next.comfaccorp.com/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What Whitelisting Does ===&lt;br /&gt;
&lt;br /&gt;
Whitelisting a site tells the extension:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;&amp;quot;Do NOT spoof the timezone for this domain. Use the real timezone.&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is required for:&lt;br /&gt;
* Correct email timestamps (Mailcow)&lt;br /&gt;
* Correct event times &amp;amp; reminders (Nextcloud Calendar)&lt;br /&gt;
* Correct file edit timestamps&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Save Your Settings ==&lt;br /&gt;
&lt;br /&gt;
# Click &#039;&#039;&#039;Save Options&#039;&#039;&#039; at the bottom.&lt;br /&gt;
# Refresh any open Comfac tabs.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. When to Use This Setup ==&lt;br /&gt;
&lt;br /&gt;
Staff should follow this guide if they:&lt;br /&gt;
* Use LibreWolf or Firefox hardened with privacy extensions&lt;br /&gt;
* Use Nextcloud calendar, tasks, files, or Mailcow webmail&lt;br /&gt;
* Want privacy protection without breaking time-sensitive tools&lt;br /&gt;
&lt;br /&gt;
If you encounter incorrect times in calendar or email, re-check the whitelist entries.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Support ==&lt;br /&gt;
&lt;br /&gt;
For help, contact IT:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;it@comfac-it.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or send a screenshot to the IT support group chat.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Introduction:_Why_Self-Host_Your_Email%3F&amp;diff=54</id>
		<title>Introduction: Why Self-Host Your Email?</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Introduction:_Why_Self-Host_Your_Email%3F&amp;diff=54"/>
		<updated>2026-02-25T07:01:13Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Introduction: Why Self-Host Your Email? =  Self-hosting your email provides complete control, privacy, and security over your communications. This guide details the process from start to finish, even for those unfamiliar with server management.  &amp;#039;&amp;#039;&amp;#039;Reference Video:&amp;#039;&amp;#039;&amp;#039; [https://www.youtube.com/watch?v=CvQny6sYVxg How to Self-Host Email the Right Way (to avoid the spam folder)]  === What This Guide Covers === # Launch a cloud-based Ubuntu Virtual Private Server (VPS). #...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction: Why Self-Host Your Email? =&lt;br /&gt;
&lt;br /&gt;
Self-hosting your email provides complete control, privacy, and security over your communications. This guide details the process from start to finish, even for those unfamiliar with server management.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference Video:&#039;&#039;&#039; [https://www.youtube.com/watch?v=CvQny6sYVxg How to Self-Host Email the Right Way (to avoid the spam folder)]&lt;br /&gt;
&lt;br /&gt;
=== What This Guide Covers ===&lt;br /&gt;
# Launch a cloud-based Ubuntu Virtual Private Server (VPS).&lt;br /&gt;
# Configure all necessary DNS records for your custom domain.&lt;br /&gt;
# Install Docker and Docker Compose.&lt;br /&gt;
# Set up and configure mailcow, a comprehensive open-source mail server suite.&lt;br /&gt;
# Test and validate email deliverability.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 1: Server and DNS Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Before you begin, you must have two things:&lt;br /&gt;
&lt;br /&gt;
=== 1. A Domain Name ===&lt;br /&gt;
You need a domain (e.g., &amp;lt;code&amp;gt;yourdomain.com&amp;lt;/code&amp;gt;) purchased from any registrar (like Netim, GoDaddy, Namecheap, etc.).&lt;br /&gt;
&lt;br /&gt;
=== 2. A Cloud VPS ===&lt;br /&gt;
You &#039;&#039;&#039;cannot&#039;&#039;&#039; host this at home, as most Internet Service Providers (ISPs) block &#039;&#039;&#039;Port 25&#039;&#039;&#039;, which is essential for email.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Provider:&#039;&#039;&#039; You must use a hosting provider (like Verpex) that explicitly &#039;&#039;&#039;allows Port 25&#039;&#039;&#039; and lets you set &#039;&#039;&#039;PTR (Pointer) records&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;System Requirements:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Minimum:&#039;&#039;&#039; 6GB RAM, 20GB disk space, 1 CPU.&lt;br /&gt;
** &#039;&#039;&#039;Budget (Not Recommended):&#039;&#039;&#039; 4GB RAM will work, but you &#039;&#039;&#039;must disable the antivirus (ClamAV) component&#039;&#039;&#039; in mailcow, reducing security.&lt;br /&gt;
* &#039;&#039;&#039;Operating System:&#039;&#039;&#039; This guide uses &#039;&#039;&#039;Ubuntu&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once your VPS is active, locate its public &#039;&#039;&#039;IP Address&#039;&#039;&#039;. This will be used in all following steps.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 2: Initial DNS Record Configuration ==&lt;br /&gt;
&lt;br /&gt;
This is the most critical step for ensuring your server can be found. Go to your domain registrar&#039;s DNS management panel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Replace &amp;lt;code&amp;gt;yourdomain.com&amp;lt;/code&amp;gt; with your actual domain.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Replace &amp;lt;code&amp;gt;[Server IP]&amp;lt;/code&amp;gt; with your VPS&#039;s public IP address.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Name / Host&lt;br /&gt;
! Value / Target&lt;br /&gt;
! Priority&lt;br /&gt;
! Details&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
| @ (or yourdomain.com)&lt;br /&gt;
| [Server IP]&lt;br /&gt;
| N/A&lt;br /&gt;
| Points your root domain to the server.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
| mail (or mail.yourdomain.com)&lt;br /&gt;
| [Server IP]&lt;br /&gt;
| N/A&lt;br /&gt;
| Creates the hostname for the mail server itself.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MX&#039;&#039;&#039;&lt;br /&gt;
| @ (or yourdomain.com)&lt;br /&gt;
| mail.yourdomain.com&lt;br /&gt;
| 10&lt;br /&gt;
| Directs all email for your domain to your new mail server.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;CNAME&#039;&#039;&#039;&lt;br /&gt;
| autodiscover&lt;br /&gt;
| mail.yourdomain.com&lt;br /&gt;
| N/A&lt;br /&gt;
| Helps email clients (like Outlook) automatically find settings.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;CNAME&#039;&#039;&#039;&lt;br /&gt;
| autoconfig&lt;br /&gt;
| mail.yourdomain.com&lt;br /&gt;
| N/A&lt;br /&gt;
| Helps email clients (like Thunderbird) automatically find settings.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SRV&#039;&#039;&#039;&lt;br /&gt;
| _autodiscover._tcp&lt;br /&gt;
| mail.yourdomain.com&lt;br /&gt;
| 0 (Prio) 0 (Weight) 443 (Port)&lt;br /&gt;
| An additional record for auto-discovery services.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After saving, use &#039;&#039;&#039;mxtoolbox.com&#039;&#039;&#039; to do a &amp;quot;DNS Lookup&amp;quot; for &amp;lt;code&amp;gt;mail.yourdomain.com&amp;lt;/code&amp;gt; and verify your server IP. DNS propagation can take up to 24 hours.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 3: The PTR (Reverse DNS) Record ==&lt;br /&gt;
&lt;br /&gt;
This record is essential for deliverability and proving you aren&#039;t a spammer. It maps your server&#039;s IP address &#039;&#039;back&#039;&#039; to your domain.&lt;br /&gt;
&lt;br /&gt;
# You &#039;&#039;&#039;cannot set this record yourself&#039;&#039;&#039;.&lt;br /&gt;
# You must open a &#039;&#039;&#039;support ticket&#039;&#039;&#039; with your hosting provider.&lt;br /&gt;
# Send them a message like: &#039;&#039;Hello, please set the PTR (Reverse DNS) record for my server&#039;s IP address [Server IP] to point to the hostname mail.yourdomain.com.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 4: Server Setup &amp;amp; Docker Installation ==&lt;br /&gt;
&lt;br /&gt;
Open a Terminal (macOS/Linux) or Command Prompt/PowerShell (Windows).&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Log in as root:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;ssh root@yourdomain.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Update Your Server:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt upgrade -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install Dependencies:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install git openssl curl -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Create a New User&#039;&#039;&#039; (Security Best Practice — replace &amp;lt;code&amp;gt;tony&amp;lt;/code&amp;gt; with your username):&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser tony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Give New User Sudo Privileges:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;usermod -aG sudo tony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Switch to Your New User:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;su - tony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Install Docker:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://get.docker.com -o get-docker.sh&lt;br /&gt;
sudo sh get-docker.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Add Your User to the Docker Group:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo usermod -aG docker $USER&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Reboot the Server:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 5: Install &amp;amp; Configure mailcow ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Log Back In&#039;&#039;&#039; after reboot as your new user (e.g., &amp;lt;code&amp;gt;ssh tony@yourdomain.com&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Set umask:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;umask 0022&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Clone mailcow&#039;&#039;&#039; (install in &amp;lt;code&amp;gt;/opt/&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /opt/&lt;br /&gt;
sudo git clone https://github.com/mailcow/mailcow-dockerized&lt;br /&gt;
cd mailcow-dockerized/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Find Your Timezone:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;timedatectl list-timezones&amp;lt;/pre&amp;gt;&lt;br /&gt;
To search: &amp;lt;code&amp;gt;timedatectl list-timezones | grep &#039;New_York&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Generate Configuration File:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ./generate-config.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
You will be asked:&lt;br /&gt;
#* &#039;&#039;&#039;Mail server hostname (FQDN):&#039;&#039;&#039; Enter &amp;lt;code&amp;gt;mail.yourdomain.com&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Timezone:&#039;&#039;&#039; Enter your timezone (e.g., &amp;lt;code&amp;gt;America/New_York&amp;lt;/code&amp;gt;)&lt;br /&gt;
#* &#039;&#039;&#039;Which branch:&#039;&#039;&#039; Choose &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; for stable master branch&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Pull &amp;amp; Run mailcow:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo docker compose pull&lt;br /&gt;
sudo docker compose up -d&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verify Installation:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo docker compose ps&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check the &amp;quot;Status&amp;quot; column. If anything is &amp;quot;down&amp;quot; or &amp;quot;unhealthy,&amp;quot; wait a few minutes and check again.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 6: mailcow Admin &amp;amp; Domain Setup ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Access mailcow Admin:&#039;&#039;&#039; Go to &amp;lt;code&amp;gt;https://mail.yourdomain.com&amp;lt;/code&amp;gt; in your browser.&lt;br /&gt;
# &#039;&#039;&#039;Log In as Admin:&#039;&#039;&#039;&lt;br /&gt;
#* Click the &#039;&#039;&#039;&amp;quot;Login as admin&amp;quot;&#039;&#039;&#039; link at the bottom.&lt;br /&gt;
#* &#039;&#039;&#039;Username:&#039;&#039;&#039; &amp;lt;code&amp;gt;admin&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Password:&#039;&#039;&#039; &amp;lt;code&amp;gt;moohoo&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;CRITICAL: Change Admin Password:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &#039;&#039;&#039;System &amp;gt; Configuration &amp;gt; Access&#039;&#039;&#039;.&lt;br /&gt;
#* Click &#039;&#039;&#039;Edit&#039;&#039;&#039; next to the admin user, enter a strong password, and &#039;&#039;&#039;Save Changes&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Add Your Email Domain:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &#039;&#039;&#039;Email &amp;gt; Configuration &amp;gt; Domains&#039;&#039;&#039; tab.&lt;br /&gt;
#* Click &#039;&#039;&#039;Add Domain&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Domain:&#039;&#039;&#039; Enter your root domain (e.g., &amp;lt;code&amp;gt;yourdomain.com&amp;lt;/code&amp;gt;).&lt;br /&gt;
#* Leave other settings as default.&lt;br /&gt;
#* Click &#039;&#039;&#039;&amp;quot;Add domain and restart SOGO&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Create Your First Mailbox:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &#039;&#039;&#039;Mailboxes &amp;gt; Mailboxes&#039;&#039;&#039;.&lt;br /&gt;
#* Click &#039;&#039;&#039;Add mailbox&#039;&#039;&#039;.&lt;br /&gt;
#* &#039;&#039;&#039;Username:&#039;&#039;&#039; Enter the first part of your email (e.g., &amp;lt;code&amp;gt;tony&amp;lt;/code&amp;gt;).&lt;br /&gt;
#* &#039;&#039;&#039;Domain:&#039;&#039;&#039; Select &amp;lt;code&amp;gt;yourdomain.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* Enter your name and a strong password.&lt;br /&gt;
#* Click &#039;&#039;&#039;Add&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 7: Final DNS Records for Deliverability ==&lt;br /&gt;
&lt;br /&gt;
# In mailcow admin, go to &#039;&#039;&#039;Email &amp;gt; Configuration &amp;gt; Domains&#039;&#039;&#039; tab.&lt;br /&gt;
# Click the &#039;&#039;&#039;&amp;quot;DNS&amp;quot;&#039;&#039;&#039; button next to your domain.&lt;br /&gt;
# Add the following records to your domain registrar:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Name / Host&lt;br /&gt;
! Value / Target&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TXT (DKIM)&#039;&#039;&#039;&lt;br /&gt;
| dkim._domainkey&lt;br /&gt;
| v=DKIM1; k=rsa; p=[...long string...]&lt;br /&gt;
| &#039;&#039;&#039;Copy the exact Name and Value from the mailcow DNS page.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TLSA&#039;&#039;&#039;&lt;br /&gt;
| _25._tcp.mail&lt;br /&gt;
| 3 1 1 [...long hash string...]&lt;br /&gt;
| &#039;&#039;&#039;Copy the exact Name and Value.&#039;&#039;&#039; Your registrar may have separate fields for Usage (3), Selector (1), and Matching (1).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TXT (SPF)&#039;&#039;&#039;&lt;br /&gt;
| @&lt;br /&gt;
| v=spf1 mx a -all&lt;br /&gt;
| Strict starting value — only your A and MX records are allowed to send mail.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;TXT (DMARC)&#039;&#039;&#039;&lt;br /&gt;
| _dmarc&lt;br /&gt;
| v=DMARC1; p=none&lt;br /&gt;
| &#039;&#039;&#039;WAIT!&#039;&#039;&#039; Add this only &#039;&#039;&#039;48 hours&#039;&#039;&#039; after SPF/DKIM are set. &amp;lt;code&amp;gt;p=none&amp;lt;/code&amp;gt; means &amp;quot;monitor only.&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. &#039;&#039;&#039;Enable DNSSEC:&#039;&#039;&#039; In your domain registrar&#039;s settings, find &#039;&#039;&#039;DNSSEC&#039;&#039;&#039; and &#039;&#039;&#039;Enable&#039;&#039;&#039; it. Required for the TLSA record to function.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 8: Testing Deliverability ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Log in to Your New Inbox:&#039;&#039;&#039;&lt;br /&gt;
#* Go to &amp;lt;code&amp;gt;https://mail.yourdomain.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* Log in as your user (e.g., &amp;lt;code&amp;gt;tony@yourdomain.com&amp;lt;/code&amp;gt;).&lt;br /&gt;
# &#039;&#039;&#039;Test with Mail-Tester:&#039;&#039;&#039;&lt;br /&gt;
#* Go to [https://mail-tester.com mail-tester.com].&lt;br /&gt;
#* Copy the unique email address provided.&lt;br /&gt;
#* Compose a &#039;&#039;&#039;realistic email&#039;&#039;&#039; (subject: &#039;&#039;Inquiry about your services&#039;&#039;, body: a few real sentences — &#039;&#039;not&#039;&#039; &amp;quot;test&amp;quot;).&lt;br /&gt;
#* Send to the mail-tester address and check your score. Aim for &#039;&#039;&#039;10/10&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Test with a Real Provider (Gmail):&#039;&#039;&#039;&lt;br /&gt;
#* Send a realistic email to a Gmail, Outlook, or Yahoo address you own.&lt;br /&gt;
#* &#039;&#039;&#039;Check if it lands in the Inbox.&#039;&#039;&#039; If it goes to spam, double-check all DNS records.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 9: Critical Next Steps (Maintenance) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email Warm-Up:&#039;&#039;&#039; Do NOT start blasting hundreds of emails. Your new IP has no reputation. Send a few emails per day and gradually increase volume over weeks.&lt;br /&gt;
* &#039;&#039;&#039;Server Security:&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Enable a Firewall (UFW):&#039;&#039;&#039; Block all ports except those needed (SSH, HTTP/S, and mail ports).&lt;br /&gt;
** &#039;&#039;&#039;Harden SSH:&#039;&#039;&#039; Disable password-based login and use &#039;&#039;&#039;SSH keys only&#039;&#039;&#039;. This is the single most important security measure.&lt;br /&gt;
** &#039;&#039;&#039;Stay Updated:&#039;&#039;&#039; Regularly run &amp;lt;code&amp;gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&amp;lt;/code&amp;gt; to apply security patches.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=PfSense_CE_%E2%86%92_pfSense_Plus_Upgrade_Guide&amp;diff=53</id>
		<title>PfSense CE → pfSense Plus Upgrade Guide</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=PfSense_CE_%E2%86%92_pfSense_Plus_Upgrade_Guide&amp;diff=53"/>
		<updated>2026-02-25T07:00:48Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= pfSense CE → pfSense Plus Upgrade Guide =  &amp;#039;&amp;#039;&amp;#039;Reference Video:&amp;#039;&amp;#039;&amp;#039; [https://www.youtube.com/watch?v=Fa1NAuWDzjs Comparing pfSense Plus &amp;amp; pfSense CE: Cost and Key Differences Explained]  &amp;#039;&amp;#039;&amp;#039;Official Netgate Migration Guide:&amp;#039;&amp;#039;&amp;#039; [https://docs.netgate.com/pfsense/en/latest/install/migrate-to-plus.html Migrate from pfSense CE to pfSense Plus]  This guide consolidates the full set of steps and best practices for upgrading a system from &amp;#039;&amp;#039;&amp;#039;pfSense Community Edition (CE)&amp;#039;&amp;#039;&amp;#039; t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= pfSense CE → pfSense Plus Upgrade Guide =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference Video:&#039;&#039;&#039; [https://www.youtube.com/watch?v=Fa1NAuWDzjs Comparing pfSense Plus &amp;amp; pfSense CE: Cost and Key Differences Explained]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official Netgate Migration Guide:&#039;&#039;&#039; [https://docs.netgate.com/pfsense/en/latest/install/migrate-to-plus.html Migrate from pfSense CE to pfSense Plus]&lt;br /&gt;
&lt;br /&gt;
This guide consolidates the full set of steps and best practices for upgrading a system from &#039;&#039;&#039;pfSense Community Edition (CE)&#039;&#039;&#039; to &#039;&#039;&#039;pfSense Plus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Differences Between pfSense CE and pfSense Plus ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Cost &amp;amp; Licensing ===&lt;br /&gt;
* &#039;&#039;&#039;pfSense CE:&#039;&#039;&#039; Completely free, community-supported.&lt;br /&gt;
* &#039;&#039;&#039;pfSense Plus:&#039;&#039;&#039; Free for &#039;&#039;&#039;home&#039;&#039;&#039; and &#039;&#039;&#039;lab&#039;&#039;&#039; use. Automatic entitlement when used on Netgate hardware; CE → Plus migration requires registration but remains free.&lt;br /&gt;
&lt;br /&gt;
=== 2. Support Model ===&lt;br /&gt;
* &#039;&#039;&#039;CE:&#039;&#039;&#039; Community forums only.&lt;br /&gt;
* &#039;&#039;&#039;Plus:&#039;&#039;&#039; Eligible for paid Netgate TAC support.&lt;br /&gt;
&lt;br /&gt;
=== 3. Base System &amp;amp; Release Cadence ===&lt;br /&gt;
* Both share the same FreeBSD base (FreeBSD 14 as of 2023).&lt;br /&gt;
* &#039;&#039;&#039;Plus&#039;&#039;&#039; receives &#039;&#039;&#039;more frequent releases&#039;&#039;&#039; and hotfixes.&lt;br /&gt;
* &#039;&#039;&#039;CE&#039;&#039;&#039; has a &#039;&#039;&#039;longer release cycle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 4. Features Exclusive to pfSense Plus ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feature&lt;br /&gt;
! CE&lt;br /&gt;
! Plus&lt;br /&gt;
|-&lt;br /&gt;
| Boot Environments (automatic snapshots)&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| QAT Crypto Acceleration&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| OpenVPN DCO (Data Channel Offload – Beta)&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| OpenVPN Client Import Tool&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| AWS VPN Wizard&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| IPsec Export for Apple Profiles&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|-&lt;br /&gt;
| IPsec Export for Windows PowerShell&lt;br /&gt;
| ❌&lt;br /&gt;
| ✔️&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5. Features Fully Available on Both ===&lt;br /&gt;
Both versions support: High Availability (CARP), VLANs, OpenVPN, WireGuard, IPSec, L2TP, ZFS file system, and all major routing &amp;amp; firewall features.&lt;br /&gt;
&lt;br /&gt;
=== 6. ZFS &amp;amp; Boot Environments Clarification ===&lt;br /&gt;
* &#039;&#039;&#039;Both&#039;&#039;&#039; CE and Plus support ZFS.&lt;br /&gt;
* &#039;&#039;&#039;Only Plus&#039;&#039;&#039; includes the Boot Environment GUI tools + auto-snapshot during upgrades.&lt;br /&gt;
* CE requires more manual ZFS handling.&lt;br /&gt;
&lt;br /&gt;
=== 7. Security Patch Handling ===&lt;br /&gt;
* Plus receives &#039;&#039;&#039;faster updates&#039;&#039;&#039; to the base OS when needed.&lt;br /&gt;
* CE updates are slower but still maintained and not considered unsafe.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Before You Begin ==&lt;br /&gt;
&lt;br /&gt;
=== A. Confirm Requirements ===&lt;br /&gt;
* A Netgate account with an activated pfSense+ subscription or device entitlement.&lt;br /&gt;
* Your pfSense CE must be &#039;&#039;&#039;2.6 or later&#039;&#039;&#039;.&lt;br /&gt;
* Internet connectivity for the upgrade process.&lt;br /&gt;
&lt;br /&gt;
=== B. Prepare Backups ===&lt;br /&gt;
* Go to &#039;&#039;&#039;Diagnostics → Backup/Restore&#039;&#039;&#039;.&lt;br /&gt;
* Download the latest full configuration backup.&lt;br /&gt;
* If virtualized: take a VM snapshot.&lt;br /&gt;
* If physical: prepare a USB installer for pfSense+ (failsafe recovery option).&lt;br /&gt;
&lt;br /&gt;
=== C. Review Boot Environments ===&lt;br /&gt;
* pfSense CE/Plus uses ZFS Boot Environments.&lt;br /&gt;
* Each upgrade automatically creates a new boot environment (snapshot).&lt;br /&gt;
* You may manually create one via: &#039;&#039;&#039;System → Boot Environments → Create&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Clean Up Before Upgrading ==&lt;br /&gt;
&lt;br /&gt;
=== A. Evaluate Installed Packages ===&lt;br /&gt;
Netgate best practice:&lt;br /&gt;
* &#039;&#039;&#039;Uninstall all third-party packages&#039;&#039;&#039; before upgrade.&lt;br /&gt;
* When uninstalling, choose &#039;&#039;&#039;&amp;quot;Keep configuration files&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
** This allows you to reinstall packages after the upgrade with your settings intact.&lt;br /&gt;
&lt;br /&gt;
If you decide to upgrade with packages installed:&lt;br /&gt;
* Do this &#039;&#039;&#039;only if you understand the risks&#039;&#039;&#039;.&lt;br /&gt;
* Some packages may break the upgrade or behave unpredictably.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Enable Upgrade to pfSense Plus ==&lt;br /&gt;
&lt;br /&gt;
=== A. Purchase, Receive Token, and Prepare for Migration ===&lt;br /&gt;
&lt;br /&gt;
==== 1. Purchase the Correct Subscription ====&lt;br /&gt;
* Go to the &#039;&#039;&#039;Netgate Store&#039;&#039;&#039;.&lt;br /&gt;
* Choose &#039;&#039;&#039;pfSense+ Software Subscription with TAC Lite Support&#039;&#039;&#039; (or the appropriate plan).&lt;br /&gt;
* In the dropdown, select: &#039;&#039;&#039;Upgrade from pfSense CE to pfSense Plus&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;(Do NOT leave it on Renewal/New Install.)&#039;&#039;&lt;br /&gt;
* Add to cart and complete checkout.&lt;br /&gt;
&lt;br /&gt;
After purchase, &#039;&#039;&#039;Netgate will email the activation token&#039;&#039;&#039; to the email address on the store account.&lt;br /&gt;
&lt;br /&gt;
{{Note|If the token email does not arrive quickly, check spam/junk folders. Tokens are &#039;&#039;&#039;single-use&#039;&#039;&#039; — ensure the CE system is stable and in its intended configuration before proceeding.}}&lt;br /&gt;
&lt;br /&gt;
=== B. Register pfSense CE Using the Token ===&lt;br /&gt;
# In the pfSense CE GUI, navigate to &#039;&#039;&#039;System → Register&#039;&#039;&#039;.&lt;br /&gt;
# Paste the activation token.&lt;br /&gt;
# Click &#039;&#039;&#039;Register&#039;&#039;&#039;.&lt;br /&gt;
# Confirm registration success on the page.&lt;br /&gt;
&lt;br /&gt;
=== C. Switch to the pfSense Plus Upgrade Branch ===&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Update&#039;&#039;&#039;.&lt;br /&gt;
# The page should now announce availability of the pfSense Plus migration branch.&lt;br /&gt;
# Set &#039;&#039;&#039;Branch&#039;&#039;&#039; to: &#039;&#039;&#039;pfSense Plus Upgrade&#039;&#039;&#039;&lt;br /&gt;
# Wait for the update check to finish.&lt;br /&gt;
&lt;br /&gt;
=== D. Begin the Migration Upgrade ===&lt;br /&gt;
* Click &#039;&#039;&#039;Confirm&#039;&#039;&#039; to start the migration.&lt;br /&gt;
* This will convert CE → Plus as part of the upgrade process.&lt;br /&gt;
&lt;br /&gt;
=== E. Switch Update Branch (Post-Migration) ===&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Update&#039;&#039;&#039;.&lt;br /&gt;
# Click the &#039;&#039;&#039;Update Settings&#039;&#039;&#039; tab.&lt;br /&gt;
# Change &#039;&#039;&#039;Branch&#039;&#039;&#039; to: &#039;&#039;&#039;Current Stable Version (Plus 25.07 or newer)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== F. Verify Licensing ===&lt;br /&gt;
If your CE system is not yet entitled for pfSense+:&lt;br /&gt;
* Go to &#039;&#039;&#039;System → Registration&#039;&#039;&#039;.&lt;br /&gt;
* Log in using your Netgate account.&lt;br /&gt;
* Attach device to your subscription.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Perform the Upgrade ==&lt;br /&gt;
&lt;br /&gt;
=== A. Start the Upgrade ===&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Update&#039;&#039;&#039;.&lt;br /&gt;
# Click the &#039;&#039;&#039;Cloud icon&#039;&#039;&#039; to retrieve latest metadata.&lt;br /&gt;
# Wait for system to check installed version vs available version.&lt;br /&gt;
# When the upgrade path appears (example: &#039;&#039;24.11 → 25.07&#039;&#039;), click &#039;&#039;&#039;Confirm Update&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== B. DO NOT Leave the Page ===&lt;br /&gt;
* Keep the browser tab &#039;&#039;&#039;open and running&#039;&#039;&#039; during the entire upgrade process — do not close, refresh, or navigate away.&lt;br /&gt;
* If possible, monitor via the physical console.&lt;br /&gt;
&lt;br /&gt;
=== C. Automatic Reboot ===&lt;br /&gt;
* System will download packages, verify signatures, create a new boot environment, apply updates, then reboot.&lt;br /&gt;
* During reboot: do &#039;&#039;&#039;not&#039;&#039;&#039; power off or reset.&lt;br /&gt;
* Expect &#039;&#039;&#039;long startup times&#039;&#039;&#039; — sometimes several minutes. The system is applying updates and rebuilding components. &#039;&#039;&#039;Do not assume it is stuck; give it plenty of time.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The browser will auto-refresh and reconnect when the web GUI is back.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Post-Upgrade Validation ==&lt;br /&gt;
&lt;br /&gt;
=== A. Log In and Verify Version ===&lt;br /&gt;
* Dashboard should show: &#039;&#039;&#039;pfSense Plus 25.07.xx&#039;&#039;&#039; (or newer).&lt;br /&gt;
&lt;br /&gt;
=== B. Verify Package Compatibility ===&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Package Manager&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Available Updates&#039;&#039;&#039;.&lt;br /&gt;
# Ensure all installed packages are updated.&lt;br /&gt;
&lt;br /&gt;
=== C. Check for Hotfix Patches ===&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Patches&#039;&#039;&#039;.&lt;br /&gt;
# Confirm that no new patches are required.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Restore Packages (If You Uninstalled Them Earlier) ==&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;System → Package Manager → Available Packages&#039;&#039;&#039;.&lt;br /&gt;
# Reinstall packages one by one.&lt;br /&gt;
# Your previous configurations should auto-apply.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Rollback (If Something Breaks) ==&lt;br /&gt;
&lt;br /&gt;
=== Option A: Restore Boot Environment ===&lt;br /&gt;
# Reboot pfSense.&lt;br /&gt;
# From bootloader menu choose &#039;&#039;&#039;Boot Environments&#039;&#039;&#039;.&lt;br /&gt;
# Select the older (pre-upgrade) environment.&lt;br /&gt;
&lt;br /&gt;
=== Option B: Reinstall Using Online Installer ===&lt;br /&gt;
# Boot from USB installer.&lt;br /&gt;
# Choose &#039;&#039;&#039;Recover Configuration from URL&#039;&#039;&#039;.&lt;br /&gt;
# Upload or paste your backup file.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Comfac-IT Internal Note (Licensing for Clients) ==&lt;br /&gt;
&lt;br /&gt;
Some Comfac-IT clients prefer to purchase &#039;&#039;&#039;pfSense Plus licenses&#039;&#039;&#039; through us. When we buy from the Netgate Shop, we receive the &#039;&#039;&#039;activation tokens&#039;&#039;&#039;, and we are responsible for their issuance and tracking.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Internal workflow:&#039;&#039;&#039;&lt;br /&gt;
* Schedule a &#039;&#039;&#039;calendar reminder&#039;&#039;&#039; exactly &#039;&#039;&#039;1 month before token expiration&#039;&#039;&#039;.&lt;br /&gt;
* Coordinate with the client early to ensure tokens are used on time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Item&lt;br /&gt;
! Amount&lt;br /&gt;
|-&lt;br /&gt;
| Token cost from Netgate&lt;br /&gt;
| PHP 7,740&lt;br /&gt;
|-&lt;br /&gt;
| Comfac-IT selling price&lt;br /&gt;
| PHP 8,000&lt;br /&gt;
|-&lt;br /&gt;
| Margin&lt;br /&gt;
| PHP 260&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These amounts are small, so efficiency and proper scheduling are critical.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Final Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== A. Maintain Good Upgrade Hygiene ===&lt;br /&gt;
* Always backup before upgrading.&lt;br /&gt;
* Always keep a recovery USB.&lt;br /&gt;
* Only upgrade when you have a recovery window (off-hours).&lt;br /&gt;
&lt;br /&gt;
=== B. Best for Production ===&lt;br /&gt;
* Physical hardware for stable routing.&lt;br /&gt;
* Virtualization for labs and home setups.&lt;br /&gt;
&lt;br /&gt;
=== C. Verify Logs ===&lt;br /&gt;
* Check &#039;&#039;&#039;Status → System Logs → General / Package / Boot&#039;&#039;&#039; for anomalies.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=LibreOffice_/_Nextcloud_Office_%E2%80%93_%22Due_Tasks%22_Conditional_Formatting&amp;diff=52</id>
		<title>LibreOffice / Nextcloud Office – &quot;Due Tasks&quot; Conditional Formatting</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=LibreOffice_/_Nextcloud_Office_%E2%80%93_%22Due_Tasks%22_Conditional_Formatting&amp;diff=52"/>
		<updated>2026-02-25T07:00:30Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;== LibreOffice Calc – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ==  Highlight whole rows in &amp;#039;&amp;#039;&amp;#039;red&amp;#039;&amp;#039;&amp;#039; when a task is due and must be acted on.  ----  == Goal and Logic ==  === Core Conditions ===  For a row to be considered &amp;#039;&amp;#039;&amp;#039;due&amp;#039;&amp;#039;&amp;#039;, two things must be true:  ; Target Date condition : The &amp;#039;&amp;#039;&amp;#039;Target Date&amp;#039;&amp;#039;&amp;#039; in column &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; must be &amp;#039;&amp;#039;&amp;#039;today or earlier&amp;#039;&amp;#039;&amp;#039;. Past dates have smaller numeric values than today, so the check is: &amp;lt;code&amp;gt;TODAY() &amp;gt;= TargetDate&amp;lt;/code&amp;gt;  ; Is It Du...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== LibreOffice Calc – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ==&lt;br /&gt;
&lt;br /&gt;
Highlight whole rows in &#039;&#039;&#039;red&#039;&#039;&#039; when a task is due and must be acted on.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Goal and Logic ==&lt;br /&gt;
&lt;br /&gt;
=== Core Conditions ===&lt;br /&gt;
&lt;br /&gt;
For a row to be considered &#039;&#039;&#039;due&#039;&#039;&#039;, two things must be true:&lt;br /&gt;
&lt;br /&gt;
; Target Date condition&lt;br /&gt;
: The &#039;&#039;&#039;Target Date&#039;&#039;&#039; in column &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; must be &#039;&#039;&#039;today or earlier&#039;&#039;&#039;. Past dates have smaller numeric values than today, so the check is: &amp;lt;code&amp;gt;TODAY() &amp;gt;= TargetDate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Is It Due flag&lt;br /&gt;
: Column &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt; (&#039;&#039;&#039;IS IT DUE&#039;&#039;&#039;) must evaluate to &#039;&#039;&#039;TRUE&#039;&#039;&#039;. Typically this is a formula in F2 like &amp;lt;code&amp;gt;=TODAY() &amp;gt;= E2&amp;lt;/code&amp;gt;, which returns TRUE when the target date is today or in the past.&lt;br /&gt;
&lt;br /&gt;
; Target Date must exist&lt;br /&gt;
: Column &amp;lt;code&amp;gt;E&amp;lt;/code&amp;gt; must contain a real date value — not text and not blank — so empty rows do not turn red.&lt;br /&gt;
&lt;br /&gt;
=== Combined Logical Test ===&lt;br /&gt;
&lt;br /&gt;
To safely check all three rules inside Conditional Formatting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
AND(ISNUMBER($E2); $F2=TRUE())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Part !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ISNUMBER($E2)&amp;lt;/code&amp;gt; || TRUE only if there is a valid date in column E&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$F2=TRUE()&amp;lt;/code&amp;gt; || TRUE only if the IS IT DUE column is TRUE&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;AND()&amp;lt;/code&amp;gt; || Both conditions must be TRUE to trigger highlighting&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; on the column || Locks the column; the row number changes as the rule applies down the sheet&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If either condition is false — no date in E, or F is FALSE — the row stays unformatted.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Step 0 – Prepare the Sheet ===&lt;br /&gt;
&lt;br /&gt;
# Make sure column &#039;&#039;&#039;E&#039;&#039;&#039; contains real dates (the formula bar shows something like &amp;lt;code&amp;gt;11/14/2025&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;251114&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Make sure column &#039;&#039;&#039;F&#039;&#039;&#039; returns actual TRUE/FALSE values using a formula like &amp;lt;code&amp;gt;=TODAY()&amp;gt;=E2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step 1 – Select the Rows to Format ===&lt;br /&gt;
&lt;br /&gt;
Click and drag to select the full range you want to affect, for example:&lt;br /&gt;
* &amp;lt;code&amp;gt;A2:F200&amp;lt;/code&amp;gt;&lt;br /&gt;
* or &amp;lt;code&amp;gt;A2:XFD25839&amp;lt;/code&amp;gt; if you want the rule to span the full width of each row.&lt;br /&gt;
&lt;br /&gt;
=== Step 2 – Open Conditional Formatting Manager ===&lt;br /&gt;
&lt;br /&gt;
Go to: &#039;&#039;&#039;Format → Conditional → Manage…&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the dialog, confirm the &#039;&#039;&#039;Cell Range&#039;&#039;&#039; at the bottom matches your selection (e.g. &amp;lt;code&amp;gt;A2:F200&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Step 3 – Add a New Condition ===&lt;br /&gt;
&lt;br /&gt;
# Click &#039;&#039;&#039;Add&#039;&#039;&#039; to insert a new condition line.&lt;br /&gt;
# Change the first dropdown from &amp;lt;code&amp;gt;Cell value is&amp;lt;/code&amp;gt; to &#039;&#039;&#039;&amp;lt;code&amp;gt;Formula is&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
# In the formula box, enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
AND(ISNUMBER($E2); $F2=TRUE())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 – Define the Red Row Style ===&lt;br /&gt;
&lt;br /&gt;
# In &#039;&#039;&#039;Apply Style&#039;&#039;&#039;, click the dropdown and choose &#039;&#039;&#039;New Style…&#039;&#039;&#039;&lt;br /&gt;
# Give it a clear name such as &amp;lt;code&amp;gt;DueRowRed&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Go to the &#039;&#039;&#039;Background&#039;&#039;&#039; tab and choose a red or light red fill color.&lt;br /&gt;
# Optionally set text to &#039;&#039;&#039;Bold&#039;&#039;&#039; or change the font color for extra emphasis.&lt;br /&gt;
# Click &#039;&#039;&#039;OK&#039;&#039;&#039; to save the style.&lt;br /&gt;
&lt;br /&gt;
=== Step 5 – Apply and Test ===&lt;br /&gt;
&lt;br /&gt;
# Click &#039;&#039;&#039;OK&#039;&#039;&#039; to close the Conditional Formatting dialog.&lt;br /&gt;
# Test a few rows:&lt;br /&gt;
#* Put a valid date in &amp;lt;code&amp;gt;E2&amp;lt;/code&amp;gt; that is today or in the past.&lt;br /&gt;
#* Confirm &amp;lt;code&amp;gt;F2&amp;lt;/code&amp;gt; evaluates to TRUE (&amp;lt;code&amp;gt;=TODAY()&amp;gt;=E2&amp;lt;/code&amp;gt;).&lt;br /&gt;
#* The row should now turn red.&lt;br /&gt;
&lt;br /&gt;
Test edge cases:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Scenario !! Expected Result&lt;br /&gt;
|-&lt;br /&gt;
| Blank E cell with F=TRUE || Row does &#039;&#039;&#039;not&#039;&#039;&#039; turn red (&amp;lt;code&amp;gt;ISNUMBER&amp;lt;/code&amp;gt; returns FALSE)&lt;br /&gt;
|-&lt;br /&gt;
| Future date in E || F formula returns FALSE → row stays neutral&lt;br /&gt;
|-&lt;br /&gt;
| Non-date text in E || &amp;lt;code&amp;gt;ISNUMBER($E2)&amp;lt;/code&amp;gt; returns FALSE → row stays neutral&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Detail&lt;br /&gt;
|-&lt;br /&gt;
| Business rule || A task is due when it has a target date (E) that is today or earlier, and IS IT DUE (F) is TRUE&lt;br /&gt;
|-&lt;br /&gt;
| Formula column F || &amp;lt;code&amp;gt;=TODAY()&amp;gt;=E2&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Conditional format formula || &amp;lt;code&amp;gt;AND(ISNUMBER($E2); $F2=TRUE())&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Result || Only real, due tasks highlight red; incomplete or future tasks stay neutral&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Partner_Reseller_Pricing_251109&amp;diff=51</id>
		<title>Partner Reseller Pricing 251109</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Partner_Reseller_Pricing_251109&amp;diff=51"/>
		<updated>2026-02-25T07:00:04Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Partner Reseller Pricing =  == Summary ==  * The standard pricing multiplier is &amp;#039;&amp;#039;&amp;#039;1 / 0.6 = 1.67 (rounded up from 1.6666)&amp;#039;&amp;#039;&amp;#039;. This means there is a &amp;#039;&amp;#039;&amp;#039;33% margin&amp;#039;&amp;#039;&amp;#039; difference between the at-cost price and the selling price. * &amp;#039;&amp;#039;&amp;#039;Subcon-Partner Pricing:&amp;#039;&amp;#039;&amp;#039; Defines how AA and Comfac split profits (60% Comfac / 40% AA) and handle material and labor costs, including warranty and support. * &amp;#039;&amp;#039;&amp;#039;Comfac Partner-Level-1 (P1) Pricing:&amp;#039;&amp;#039;&amp;#039; Used when Comfac sells technology or sy...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Partner Reseller Pricing =&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
* The standard pricing multiplier is &#039;&#039;&#039;1 / 0.6 = 1.67 (rounded up from 1.6666)&#039;&#039;&#039;. This means there is a &#039;&#039;&#039;33% margin&#039;&#039;&#039; difference between the at-cost price and the selling price.&lt;br /&gt;
* &#039;&#039;&#039;Subcon-Partner Pricing:&#039;&#039;&#039; Defines how AA and Comfac split profits (60% Comfac / 40% AA) and handle material and labor costs, including warranty and support.&lt;br /&gt;
* &#039;&#039;&#039;Comfac Partner-Level-1 (P1) Pricing:&#039;&#039;&#039; Used when Comfac sells technology or systems (e.g., BMS) to ESCO, Cornersteel, or other strategic partners at 15% markup based on internal 1.67 multiplier.&lt;br /&gt;
* &#039;&#039;&#039;Reseller Agreement:&#039;&#039;&#039; Applies to approved resellers who get a 25% discount on Comfac&#039;s 1.67 pricing, with Comfac keeping 15.15% net margin.&lt;br /&gt;
* &#039;&#039;&#039;ESCO Note:&#039;&#039;&#039; ESCO manages warranty and planned maintenance. Future coordination required for pricing and coverage.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definition of Terms ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Term&lt;br /&gt;
! Definition&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;At-Cost Price&#039;&#039;&#039;&lt;br /&gt;
| The total direct cost of materials and labor before applying any margin or multiplier.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Multiplier (1.67)&#039;&#039;&#039;&lt;br /&gt;
| Derived from 1 / 0.6, used to calculate selling price from cost, reflecting a 33% margin over at-cost.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Margin&#039;&#039;&#039;&lt;br /&gt;
| The percentage difference between at-cost and selling price; typically 33% for Comfac pricing models.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Buffer&#039;&#039;&#039;&lt;br /&gt;
| Additional 20% added to labor and material estimates to cover unforeseen costs or contingencies.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Warranty Period&#039;&#039;&#039;&lt;br /&gt;
| One-year coverage included in the Subcon-Partner pricing for post-project support.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PR-PO System&#039;&#039;&#039;&lt;br /&gt;
| Comfac&#039;s internal Purchase Request–Purchase Order tracking in ERPNext used for recording materials and project costs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Subcon-Partner Pricing (AA and Comfac) ==&lt;br /&gt;
&lt;br /&gt;
This refers to AA/Subcon-Partner pricing for &#039;&#039;&#039;Labor and Materials&#039;&#039;&#039;, inclusive of &#039;&#039;&#039;Support and Warranty for one year&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Estimation and Approval ===&lt;br /&gt;
Materials and labor estimates are prepared by RJ and Andrei, then submitted to Jun and Jonathan for pricing review and approval.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.1.1&#039;&#039;&#039; Materials can have a margin calculated as &#039;&#039;&#039;Materials / 0.6 (or 166.66%)&#039;&#039;&#039;, supported by a detailed BOM and breakdown.&lt;br /&gt;
* &#039;&#039;&#039;1.1.2&#039;&#039;&#039; Materials and Labor must include a &#039;&#039;&#039;20% buffer&#039;&#039;&#039; and &#039;&#039;&#039;Warranty&#039;&#039;&#039; allowance.&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Profit Sharing ===&lt;br /&gt;
Profit is shared &#039;&#039;&#039;60% (Comfac)&#039;&#039;&#039; and &#039;&#039;&#039;40% (AA)&#039;&#039;&#039; after costs.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.2.1&#039;&#039;&#039; Comfac covers labor (as RJ and Andrei&#039;s salaries), so AA&#039;s remittance is &#039;&#039;&#039;40% profit + material costs&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;1.2.2 Example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Item&lt;br /&gt;
! Amount&lt;br /&gt;
|-&lt;br /&gt;
| Project Value&lt;br /&gt;
| ₱360,000&lt;br /&gt;
|-&lt;br /&gt;
| Cost (₱80,000 materials + ₱50,000 labor)&lt;br /&gt;
| ₱110,000 (note: labor ₱50k listed separately)&lt;br /&gt;
|-&lt;br /&gt;
| Net Profit&lt;br /&gt;
| ₱250,000&lt;br /&gt;
|-&lt;br /&gt;
| Comfac Share (60%)&lt;br /&gt;
| ₱150,000&lt;br /&gt;
|-&lt;br /&gt;
| AA Share (40%)&lt;br /&gt;
| ₱100,000&lt;br /&gt;
|-&lt;br /&gt;
| Comfac remits to AA&lt;br /&gt;
| ₱100,000 (profit) + ₱80,000 (materials) = ₱180,000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 Labor Baseline ===&lt;br /&gt;
Standard labor baseline: &#039;&#039;&#039;₱1,500 per man-day.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 1.4 Procurement ===&lt;br /&gt;
Material procurement and cost control managed by AA, tracked through Comfac PR-PO system in ERPNext.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Comfac Partner-Level-1 Pricing (P1 Pricing) ==&lt;br /&gt;
&lt;br /&gt;
This applies to &#039;&#039;&#039;Comfac selling technology or systems&#039;&#039;&#039; (e.g., BMS) to &#039;&#039;&#039;ESCO, Cornersteel, or other strategic partners&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;2.1&#039;&#039;&#039; P1 pricing is set at &#039;&#039;&#039;15% markup&#039;&#039;&#039; for sister companies, assuming internal &#039;&#039;&#039;At-Cost / 0.6 or ×1.67&#039;&#039;&#039; pricing.&lt;br /&gt;
* &#039;&#039;&#039;2.2&#039;&#039;&#039; Comfac&#039;s share under P1 pricing equals &#039;&#039;&#039;60% of the total proposal/sales-invoice value&#039;&#039;&#039;.&lt;br /&gt;
** If P1 lowers the client price, Comfac still gets the &#039;&#039;&#039;quoted 60% share&#039;&#039;&#039;.&lt;br /&gt;
** If P1 increases the price, Comfac gets &#039;&#039;&#039;59.88% of the final collected price&#039;&#039;&#039;, or whichever results in the &#039;&#039;&#039;higher amount due to Comfac&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;2.3&#039;&#039;&#039; Maximum discount P1 can offer clients: &#039;&#039;&#039;20%&#039;&#039;&#039;.&lt;br /&gt;
** This changes the multiplier from &#039;&#039;&#039;1.67 → 1.336&#039;&#039;&#039;, giving P1 an &#039;&#039;&#039;18.9% margin&#039;&#039;&#039; after paying Comfac.&lt;br /&gt;
** Comfac retains &#039;&#039;&#039;15% gross margin&#039;&#039;&#039;, split as &#039;&#039;&#039;9% Comfac / 6% Subcon Partner + Materials&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Reseller Agreement ==&lt;br /&gt;
&lt;br /&gt;
For partners under a formal &#039;&#039;&#039;Comfac Reseller Agreement&#039;&#039;&#039;, Comfac approves and co-signs the final pricing to ensure transparency.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;3.1&#039;&#039;&#039; Comfac&#039;s standard pricing: &#039;&#039;&#039;1.67 × Total Cost&#039;&#039;&#039;.&lt;br /&gt;
** Example: ₱1M cost → ₱1.67M selling price.&lt;br /&gt;
** ₱266,666 + materials remitted to Partner Contractor.&lt;br /&gt;
* &#039;&#039;&#039;3.2&#039;&#039;&#039; Resellers under agreement receive &#039;&#039;&#039;25% discount&#039;&#039;&#039; off Comfac&#039;s selling price.&lt;br /&gt;
** Comfac earns &#039;&#039;&#039;1.2525× cost&#039;&#039;&#039;, keeping &#039;&#039;&#039;15.15% net margin&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;3.3&#039;&#039;&#039; Resellers can set client pricing and apply discounts, but Comfac always takes &#039;&#039;&#039;75% of the final quoted or invoiced price&#039;&#039;&#039;, or &#039;&#039;&#039;whichever amount is higher between the reseller&#039;s client price or Comfac&#039;s quoted price.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;3.4&#039;&#039;&#039; Any deviation or unapproved pricing nullifies the agreement; Comfac will not produce or deliver products or services under those terms.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Note on ESCO ==&lt;br /&gt;
&lt;br /&gt;
ESCO is designated as the &#039;&#039;&#039;planned maintenance and warranty provider&#039;&#039;&#039; for clients.&lt;br /&gt;
&lt;br /&gt;
* Future discussions will define how ESCO prices preventive maintenance and full support over a 1-year warranty period.&lt;br /&gt;
* Responsibility and pricing for warranty coverage must be coordinated with ESCO&#039;s team and integrated into Comfac&#039;s pricing models.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=%F0%9F%A7%A0_Process:_Selecting_and_Installing_the_Right_Ollama_Model_for_Your_Hardware&amp;diff=50</id>
		<title>🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=%F0%9F%A7%A0_Process:_Selecting_and_Installing_the_Right_Ollama_Model_for_Your_Hardware&amp;diff=50"/>
		<updated>2026-02-25T06:59:45Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Process: Selecting and Installing the Right Ollama Model for Your Hardware =  &amp;#039;&amp;#039;&amp;#039;Reference Video:&amp;#039;&amp;#039;&amp;#039; [https://www.youtube.com/watch?v=FQTorLqMyMU&amp;amp;list=PL5dOVtYynU23YPMqfIeekEJ7HTxYq2BG0 Which Ollama Model Is Best For YOU?]  ----  == Step 1: Understand Your System Limitations ==  Before choosing a model, identify your system&amp;#039;s available resources:  * &amp;#039;&amp;#039;&amp;#039;CPU:&amp;#039;&amp;#039;&amp;#039; Intel i5 / AMD Ryzen 5 or better. * &amp;#039;&amp;#039;&amp;#039;RAM:&amp;#039;&amp;#039;&amp;#039; Minimum 8GB (16GB recommended). * &amp;#039;&amp;#039;&amp;#039;GPU VRAM:&amp;#039;&amp;#039;&amp;#039; Minimum 4GB (...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Process: Selecting and Installing the Right Ollama Model for Your Hardware =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference Video:&#039;&#039;&#039; [https://www.youtube.com/watch?v=FQTorLqMyMU&amp;amp;list=PL5dOVtYynU23YPMqfIeekEJ7HTxYq2BG0 Which Ollama Model Is Best For YOU?]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 1: Understand Your System Limitations ==&lt;br /&gt;
&lt;br /&gt;
Before choosing a model, identify your system&#039;s available resources:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CPU:&#039;&#039;&#039; Intel i5 / AMD Ryzen 5 or better.&lt;br /&gt;
* &#039;&#039;&#039;RAM:&#039;&#039;&#039; Minimum 8GB (16GB recommended).&lt;br /&gt;
* &#039;&#039;&#039;GPU VRAM:&#039;&#039;&#039; Minimum 4GB (6GB+ preferred for smoother operation).&lt;br /&gt;
&lt;br /&gt;
If your GPU is older (e.g., GTX 1060), focus on &#039;&#039;&#039;quantized models (Q4 or Q5)&#039;&#039;&#039; that are optimized for lower VRAM usage.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 2: Install Ollama ==&lt;br /&gt;
&lt;br /&gt;
# Go to [https://ollama.com/ https://ollama.com/]&lt;br /&gt;
# Download the version for your OS (Windows, macOS, or Linux).&lt;br /&gt;
# Follow the installation instructions for your platform:&lt;br /&gt;
#* &#039;&#039;&#039;Linux:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://ollama.com/install.sh | sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
#* &#039;&#039;&#039;Windows/macOS:&#039;&#039;&#039; Run the installer package.&lt;br /&gt;
# Verify installation:&lt;br /&gt;
&amp;lt;pre&amp;gt;ollama --version&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 3: Learn Model Naming and Suffixes ==&lt;br /&gt;
&lt;br /&gt;
Model names contain critical information about their size, optimization, and performance level. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mistral-7b-instruct-v0.2-q4_0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Part&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mistral&amp;lt;/code&amp;gt;&lt;br /&gt;
| Model family (developer/architecture)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Number of parameters (7 billion) — larger models = smarter, but heavier&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;instruct&amp;lt;/code&amp;gt;&lt;br /&gt;
| Fine-tuned to follow instructions (good for general chat and Q&amp;amp;A)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;v0.2&amp;lt;/code&amp;gt;&lt;br /&gt;
| Version — higher means newer and often more optimized&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;q4_0&amp;lt;/code&amp;gt;&lt;br /&gt;
| Quantization level — smaller numbers mean lighter models&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quantization Levels ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Code&lt;br /&gt;
! Meaning&lt;br /&gt;
! Use Case&lt;br /&gt;
|-&lt;br /&gt;
| q2&lt;br /&gt;
| Very light, lowest VRAM use, least accurate&lt;br /&gt;
| For 4GB GPUs&lt;br /&gt;
|-&lt;br /&gt;
| q3&lt;br /&gt;
| Light, faster but slightly less accurate&lt;br /&gt;
| For 4–6GB GPUs&lt;br /&gt;
|-&lt;br /&gt;
| q4&lt;br /&gt;
| Balanced, good trade-off between speed and quality&lt;br /&gt;
| For 6–8GB GPUs&lt;br /&gt;
|-&lt;br /&gt;
| q5&lt;br /&gt;
| Higher accuracy, slower&lt;br /&gt;
| For 8GB+ GPUs&lt;br /&gt;
|-&lt;br /&gt;
| fp16&lt;br /&gt;
| Full precision, highest VRAM use&lt;br /&gt;
| For 12GB+ GPUs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 4: Explore Available Models ==&lt;br /&gt;
&lt;br /&gt;
You can browse models from the Ollama library:&lt;br /&gt;
* &#039;&#039;&#039;Official List:&#039;&#039;&#039; [https://ollama.com/library https://ollama.com/library]&lt;br /&gt;
* Models can be sorted by size, purpose, or creator.&lt;br /&gt;
&lt;br /&gt;
Look for quantized models (with suffixes like &amp;lt;code&amp;gt;q4_0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;q5_1&amp;lt;/code&amp;gt;, etc.) if your GPU has limited VRAM.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 5: Install and Test Models ==&lt;br /&gt;
&lt;br /&gt;
Use these commands to download and run models:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Install Phi-3 model&lt;br /&gt;
ollama run phi3&lt;br /&gt;
&lt;br /&gt;
# Install Mistral 7B Instruct&lt;br /&gt;
ollama run mistral-7b-instruct&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once installed, test the model:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ollama run phi3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then type a prompt like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;What is Newton&#039;s Third Law?&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 6: Install Ollama Web UI (Optional but Recommended) ==&lt;br /&gt;
&lt;br /&gt;
For a ChatGPT-like interface:&lt;br /&gt;
&lt;br /&gt;
# Visit the Ollama Web UI project (search GitHub for &amp;quot;Ollama WebUI&amp;quot;).&lt;br /&gt;
# Follow setup instructions, typically:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://github.com/ollama-webui/ollama-webui.git&lt;br /&gt;
cd ollama-webui&lt;br /&gt;
docker compose up -d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Access via browser (usually &amp;lt;code&amp;gt;http://localhost:11434&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 7: Switch Between Models ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ollama run mistral-7b-instruct&lt;br /&gt;
ollama run codellama&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each model serves a different purpose:&lt;br /&gt;
* &#039;&#039;&#039;phi3&#039;&#039;&#039; → General Q&amp;amp;A, lightweight.&lt;br /&gt;
* &#039;&#039;&#039;mistral-7b-instruct&#039;&#039;&#039; → Balanced performance, good for reasoning.&lt;br /&gt;
* &#039;&#039;&#039;codellama&#039;&#039;&#039; → Programming and code completion.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 8: Pro Tips ==&lt;br /&gt;
&lt;br /&gt;
* Always use the &#039;&#039;&#039;latest version&#039;&#039;&#039; of models.&lt;br /&gt;
* Try different quantization levels to find your ideal balance.&lt;br /&gt;
* Keep your Ollama installation updated.&lt;br /&gt;
* Use &#039;&#039;&#039;quantized models&#039;&#039;&#039; for offline, efficient, and private AI processing.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Key Commands Summary ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Task&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
| Install Phi-3&lt;br /&gt;
| &amp;lt;code&amp;gt;ollama run phi3&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Install Mistral&lt;br /&gt;
| &amp;lt;code&amp;gt;ollama run mistral-7b-instruct&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Check version&lt;br /&gt;
| &amp;lt;code&amp;gt;ollama --version&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| List models&lt;br /&gt;
| &amp;lt;code&amp;gt;ollama list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Remove model&lt;br /&gt;
| &amp;lt;code&amp;gt;ollama rm &amp;lt;modelname&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
&lt;br /&gt;
* Ollama Download: [https://ollama.com/ https://ollama.com/]&lt;br /&gt;
* Model Library: [https://ollama.com/library https://ollama.com/library]&lt;br /&gt;
* Ollama Web UI: Search GitHub for &amp;quot;Ollama Web UI&amp;quot;&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Backblaze_Drive_Stats_for_Server_and_Storage_Qualification&amp;diff=49</id>
		<title>Backblaze Drive Stats for Server and Storage Qualification</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Backblaze_Drive_Stats_for_Server_and_Storage_Qualification&amp;diff=49"/>
		<updated>2026-02-25T06:59:26Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Backblaze Drive Stats for Server and Storage Qualification =  &amp;#039;&amp;#039;&amp;#039;Reference:&amp;#039;&amp;#039;&amp;#039; [https://www.backblaze.com/blog/backblaze-drive-stats-for-q3-2024/ Backblaze Drive Stats Q3 2024]  ----  == 1. Purpose of Using Backblaze Data ==  Backblaze operates tens of thousands of drives in data centers and publishes quarterly reliability data. These datasets help organizations evaluate HDD reliability in real-world, high-load environments. The goal is to use these statistics to make...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backblaze Drive Stats for Server and Storage Qualification =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference:&#039;&#039;&#039; [https://www.backblaze.com/blog/backblaze-drive-stats-for-q3-2024/ Backblaze Drive Stats Q3 2024]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Purpose of Using Backblaze Data ==&lt;br /&gt;
&lt;br /&gt;
Backblaze operates tens of thousands of drives in data centers and publishes quarterly reliability data. These datasets help organizations evaluate HDD reliability in real-world, high-load environments. The goal is to use these statistics to make evidence-based choices for servers, NAS, and archival storage.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. How to Use the Data for Informed Decisions ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Download Historical Data ===&lt;br /&gt;
* Visit the [https://www.backblaze.com/cloud-storage/resources/hard-drive-test-data Backblaze Drive Stats Archive].&lt;br /&gt;
* Download the &#039;&#039;&#039;CSV datasets&#039;&#039;&#039; for each quarter and the accompanying &#039;&#039;&#039;PDF summaries&#039;&#039;&#039;.&lt;br /&gt;
* Store them in your internal Wiki or documentation system for reference and trend analysis.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Analyze Key Metrics ===&lt;br /&gt;
Use spreadsheet tools or Python scripts to process the following fields:&lt;br /&gt;
* &#039;&#039;&#039;Model and Manufacturer&#039;&#039;&#039; (e.g., Seagate ST16000NM001G)&lt;br /&gt;
* &#039;&#039;&#039;Drive Count&#039;&#039;&#039; – number of units tested&lt;br /&gt;
* &#039;&#039;&#039;Drive Days&#039;&#039;&#039; – cumulative operational time&lt;br /&gt;
* &#039;&#039;&#039;Annualized Failure Rate (AFR)&#039;&#039;&#039; – observed failure probability per year&lt;br /&gt;
* &#039;&#039;&#039;Average Age&#039;&#039;&#039; – indicates maturity and reliability over time&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Evaluate by Category ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Drive Use Case&lt;br /&gt;
! Ideal AFR&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Mission-Critical Storage (ZFS, Enterprise NAS)&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt; 1%&lt;br /&gt;
| Prioritize proven models with &amp;gt;1M drive days&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;General Purpose / Backup Storage&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt; 2%&lt;br /&gt;
| Balance cost and reliability&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Archive / Cold Storage&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt; 3%&lt;br /&gt;
| Accept higher AFR, focus on capacity per dollar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Summarize Trends by Brand ===&lt;br /&gt;
&lt;br /&gt;
Aggregate the AFR data across quarters to identify consistent performers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Brand&lt;br /&gt;
! Observed Trend (Q3 2024)&lt;br /&gt;
! Remarks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;HGST / Western Digital Ultrastar&#039;&#039;&#039;&lt;br /&gt;
| Low AFR (~0.5% average)&lt;br /&gt;
| Consistently strong reliability in enterprise tiers&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Seagate Exos / IronWolf&#039;&#039;&#039;&lt;br /&gt;
| Moderate AFR (~1.2%)&lt;br /&gt;
| High capacity models improving, but some lots show spikes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Toshiba MG Series&#039;&#039;&#039;&lt;br /&gt;
| Low to mid AFR (~0.7%)&lt;br /&gt;
| Competitive reliability; smaller dataset but strong trend&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WDC / Consumer Models&#039;&#039;&#039;&lt;br /&gt;
| Higher AFR (&amp;gt;2%)&lt;br /&gt;
| Not ideal for 24/7 workloads&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Apply to Procurement ===&lt;br /&gt;
When qualifying HDDs for servers:&lt;br /&gt;
* Select models with &#039;&#039;&#039;proven historical reliability&#039;&#039;&#039; (low AFR, large sample size).&lt;br /&gt;
* Verify &#039;&#039;&#039;batch consistency&#039;&#039;&#039; and &#039;&#039;&#039;firmware revisions&#039;&#039;&#039; before large orders.&lt;br /&gt;
* Combine Backblaze AFR data with &#039;&#039;&#039;vendor specifications&#039;&#039;&#039; for workload rating, vibration tolerance, and power draw.&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Update Regularly ===&lt;br /&gt;
Include quarterly updates in your Wiki, adding:&lt;br /&gt;
* Download link to the latest PDF (e.g., Q3 2024)&lt;br /&gt;
* Table of AFR trends per brand and capacity range&lt;br /&gt;
* Notes on any anomaly or large-scale failure trend&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Example Wiki Section Layout ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Page Title:&#039;&#039;&#039; HDD Reliability Qualification&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sections:&#039;&#039;&#039;&lt;br /&gt;
# [https://www.backblaze.com/blog/backblaze-drive-stats-for-q3-2024/ Q3 2024 Backblaze Report (PDF)]&lt;br /&gt;
# Historical Data: CSV and PDF Links&lt;br /&gt;
# Summary of Brand Reliability Trends&lt;br /&gt;
# Recommended Models (AFR &amp;lt; 1%)&lt;br /&gt;
# Procurement and Burn-In SOP&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Actionable Takeaways ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;&#039;&#039;Backblaze AFR&#039;&#039;&#039; as an empirical complement to manufacturer MTBF figures.&lt;br /&gt;
* Favor drives with &#039;&#039;&#039;&amp;gt;1M drive days&#039;&#039;&#039; for statistically relevant reliability data.&lt;br /&gt;
* Keep a &#039;&#039;&#039;rolling 2-year summary&#039;&#039;&#039; of AFR trends for vendor comparison.&lt;br /&gt;
* Perform &#039;&#039;&#039;local burn-in tests&#039;&#039;&#039; before production deployment.&lt;br /&gt;
* Document and review changes quarterly to align procurement with real-world performance.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Comfac_GPU_Scaling_and_AI_Research_Goals&amp;diff=48</id>
		<title>Comfac GPU Scaling and AI Research Goals</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Comfac_GPU_Scaling_and_AI_Research_Goals&amp;diff=48"/>
		<updated>2026-02-25T06:59:07Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Comfac GPU Scaling and AI Research Goals =  == Objective ==  To develop and scale a high-performance AMD-based AI compute cluster, capable of running large-scale models (e.g., Qwen 2.5 235B) and supporting educational and R&amp;amp;D initiatives through open collaboration with partner schools.  ----  == Goals and Steps ==  === 1. Platform and Motherboard Selection === * Identify and procure a motherboard or server platform that supports extensive GPU scaling and PCIe bifurcati...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Comfac GPU Scaling and AI Research Goals =&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
&lt;br /&gt;
To develop and scale a high-performance AMD-based AI compute cluster, capable of running large-scale models (e.g., Qwen 2.5 235B) and supporting educational and R&amp;amp;D initiatives through open collaboration with partner schools.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Goals and Steps ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Platform and Motherboard Selection ===&lt;br /&gt;
* Identify and procure a motherboard or server platform that supports extensive GPU scaling and PCIe bifurcation (similar to the setup demonstrated by PewDiePie).&lt;br /&gt;
* Ensure compatibility with ROCm and vLLM for distributed inference and multi-GPU coordination.&lt;br /&gt;
&lt;br /&gt;
=== 2. Initial Scaling (Pilot Models) ===&lt;br /&gt;
* Begin with &#039;&#039;&#039;well-known, stable models&#039;&#039;&#039; to validate infrastructure performance and reliability.&lt;br /&gt;
* &#039;&#039;&#039;Pilot hardware:&#039;&#039;&#039; AMD &#039;&#039;&#039;Radeon PRO R9700 AI&#039;&#039;&#039; or equivalent AI-focused GPU.&lt;br /&gt;
* Validate thermal performance, power delivery, and driver stability for continuous inference workloads.&lt;br /&gt;
&lt;br /&gt;
=== 3. Progressive Hardware Replication ===&lt;br /&gt;
* Once stable results are achieved with R9700 PRO, replicate the same environment using &#039;&#039;&#039;RX 7900 XTX&#039;&#039;&#039; and other AMD GPUs to benchmark performance scaling.&lt;br /&gt;
* Document compatibility issues, driver updates, and quantization performance metrics.&lt;br /&gt;
&lt;br /&gt;
=== 4. Cluster and Swarm Development ===&lt;br /&gt;
* Establish a &#039;&#039;&#039;Cluster System&#039;&#039;&#039; for large-model distributed inference and training.&lt;br /&gt;
* Build a &#039;&#039;&#039;Swarm System&#039;&#039;&#039; capable of parallelizing smaller AI instances (e.g., 7700 and lower-end GPU nodes) for local and academic deployment.&lt;br /&gt;
* Optimize inter-node communication, synchronization, and monitoring tools for mixed hardware setups.&lt;br /&gt;
&lt;br /&gt;
=== 5. Funding and Laboratory Deployment ===&lt;br /&gt;
* Fund the creation of a &#039;&#039;&#039;dedicated AI Lab&#039;&#039;&#039; focused on testing, documentation, and educational use.&lt;br /&gt;
* Provide access to partner schools for research, benchmarking, and AI model fine-tuning.&lt;br /&gt;
&lt;br /&gt;
=== 6. Open Compute and Tokenization Participation ===&lt;br /&gt;
* Study and participate in open-source projects that allow community-based compute contributions (similar to Folding@home).&lt;br /&gt;
* Learn and experiment with decentralized compute-sharing models that enable contributors to sell &#039;&#039;&#039;tokens or compute time&#039;&#039;&#039; securely and transparently.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* Inspirational video: [https://youtube.com/qw4fDU18RcU?si=TJ8hYQPIjuQuiORk Watch on YouTube]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== End Goal ==&lt;br /&gt;
&lt;br /&gt;
To make Comfac and its academic partners a recognized hub for open, scalable, and sustainable AI research using AMD technologies.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Comfac_CRM_%E2%80%93_Customer_Qualification_%26_Conversion_Process&amp;diff=47</id>
		<title>Comfac CRM – Customer Qualification &amp; Conversion Process</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Comfac_CRM_%E2%80%93_Customer_Qualification_%26_Conversion_Process&amp;diff=47"/>
		<updated>2026-02-25T06:58:48Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Comfac CRM – Customer Qualification &amp;amp; Conversion Process =  == Overview ==  This process defines how Comfac classifies, qualifies, and converts prospects through the ERPNext CRM and Sales Module — from unqualified leads to fully realized sales transactions. Each stage (Customer Qualification → Lead → Opportunity → Quotation → Sales Order → Sales Invoice) has measurable data points and performance weights.  ----  == Customer Qualification ==  &amp;#039;&amp;#039;&amp;#039;Purpose:&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Comfac CRM – Customer Qualification &amp;amp; Conversion Process =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
This process defines how Comfac classifies, qualifies, and converts prospects through the ERPNext CRM and Sales Module — from unqualified leads to fully realized sales transactions. Each stage (Customer Qualification → Lead → Opportunity → Quotation → Sales Order → Sales Invoice) has measurable data points and performance weights.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Customer Qualification ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Identify which organizations are worth pursuing by documenting their business profile, offerings, and potential budget.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
# Search existing database for duplicates or prior engagements.&lt;br /&gt;
# If new, create &#039;&#039;&#039;Customer Record&#039;&#039;&#039; with &amp;lt;code&amp;gt;Customer Type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Industry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Territory&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Tier&amp;lt;/code&amp;gt; (MSME classification).&lt;br /&gt;
# Under the &#039;&#039;&#039;More Information&#039;&#039;&#039; section, fill the &#039;&#039;&#039;Offering Table (Child Table)&#039;&#039;&#039;:&lt;br /&gt;
#* &#039;&#039;&#039;Item Group&#039;&#039;&#039; – Product/Service type relevant to the customer (e.g., ERP, Networking, HVAC, IoT, etc.)&lt;br /&gt;
#* &#039;&#039;&#039;Frequency&#039;&#039;&#039; – How often they purchase (Monthly, Quarterly, Annually)&lt;br /&gt;
#* &#039;&#039;&#039;Budget&#039;&#039;&#039; – Estimated value per cycle or per year&lt;br /&gt;
#* &#039;&#039;&#039;Last Verified Date&#039;&#039;&#039; – When the data was last updated&lt;br /&gt;
&lt;br /&gt;
=== Reporting ===&lt;br /&gt;
&#039;&#039;&#039;Report:&#039;&#039;&#039; &#039;&#039;Qualified Customer Opportunity Potential&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Filters: Time Period, Territory, Industry&lt;br /&gt;
* Metrics:&lt;br /&gt;
** Total number of qualified customers&lt;br /&gt;
** Sum of all &#039;&#039;&#039;Budget&#039;&#039;&#039; values per &amp;lt;code&amp;gt;Item Group&amp;lt;/code&amp;gt;&lt;br /&gt;
** Opportunity Potential = Σ(Budget × Frequency) of qualified customers&lt;br /&gt;
&lt;br /&gt;
=== Rules ===&lt;br /&gt;
* Data older than 6 months triggers &amp;quot;Needs Verification.&amp;quot;&lt;br /&gt;
* Customers without an active Offering Table are &#039;&#039;unqualified&#039;&#039;.&lt;br /&gt;
* Customers can have multiple item groups; each treated as a separate potential line.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Lead Management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Capture and assess new prospects that are not yet customers.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
# Create &#039;&#039;&#039;Lead&#039;&#039;&#039; with contact info, industry, territory, and source.&lt;br /&gt;
# Assign to &#039;&#039;&#039;Sales Rep&#039;&#039;&#039; or &#039;&#039;&#039;Lead Generation Officer&#039;&#039;&#039;.&lt;br /&gt;
# Conduct initial outreach and note response or requirements.&lt;br /&gt;
# If interest confirmed, convert to a &#039;&#039;&#039;Customer&#039;&#039;&#039; (Qualified) and log in the Offering Table.&lt;br /&gt;
&lt;br /&gt;
=== Report: Leads Conversion Summary ===&lt;br /&gt;
* New Leads this period&lt;br /&gt;
* Converted to Qualified Customers&lt;br /&gt;
* Leads Disqualified or Stale&lt;br /&gt;
* Average conversion time (Lead → Customer)&lt;br /&gt;
&lt;br /&gt;
=== SLA Rules ===&lt;br /&gt;
* Status must change within 3 business days of creation.&lt;br /&gt;
* Auto-alert if &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; not updated in 5 business days.&lt;br /&gt;
&lt;br /&gt;
=== Scoring ===&lt;br /&gt;
* Lead captured &amp;amp; contacted = &#039;&#039;&#039;1 point&#039;&#039;&#039;&lt;br /&gt;
* Lead converted to Customer = &#039;&#039;&#039;+2 points&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Opportunities ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Track concrete sales prospects derived from qualified customers or leads.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
# Create &#039;&#039;&#039;Opportunity&#039;&#039;&#039; linked to Customer or converted Lead.&lt;br /&gt;
# Set Stage, Probability, and Expected Value.&lt;br /&gt;
# Update with activities (calls, meetings, quotations sent).&lt;br /&gt;
# Convert to Quotation when requirements are confirmed.&lt;br /&gt;
&lt;br /&gt;
=== SLA ===&lt;br /&gt;
* Stage movement required within 7 days.&lt;br /&gt;
* If inactive &amp;gt;10 days, flag as stale.&lt;br /&gt;
&lt;br /&gt;
=== Scoring ===&lt;br /&gt;
* New Opportunity created = &#039;&#039;&#039;+3 points&#039;&#039;&#039;&lt;br /&gt;
* Opportunity converted to Quotation = &#039;&#039;&#039;+5 points&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Quotations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Formalize offers to customers; source either from Opportunity or Webstore.&lt;br /&gt;
&lt;br /&gt;
=== Procedure ===&lt;br /&gt;
# Generate &#039;&#039;&#039;Quotation&#039;&#039;&#039; from Opportunity or Webshop submission.&lt;br /&gt;
# Include proper Item Group and Territory Pricing.&lt;br /&gt;
# Route for approval via link-based workflow.&lt;br /&gt;
# Upon submission, link to Opportunity for reporting.&lt;br /&gt;
&lt;br /&gt;
=== Report: Quotation Pipeline ===&lt;br /&gt;
* Quotations count by type: (Webstore vs. Opportunity-based)&lt;br /&gt;
* Total quoted value by region and item group&lt;br /&gt;
&lt;br /&gt;
=== Scoring ===&lt;br /&gt;
* Quotation generated = &#039;&#039;&#039;+8 points&#039;&#039;&#039;&lt;br /&gt;
* Quotation converted to Sales Order = &#039;&#039;&#039;+10 points&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Sales Orders &amp;amp; Sales Invoices ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Confirmed deals and revenue recognition.&lt;br /&gt;
&lt;br /&gt;
=== Sales Order (SO) ===&lt;br /&gt;
* Generated upon Quotation approval.&lt;br /&gt;
* Uses &#039;&#039;&#039;temporary SO#&#039;&#039;&#039; until accounting assigns final SO#.&lt;br /&gt;
* Must link to corresponding Opportunity and Customer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scoring:&#039;&#039;&#039; +15 points per approved SO.&lt;br /&gt;
&lt;br /&gt;
=== Sales Invoice (SI) ===&lt;br /&gt;
* Issued upon delivery or project billing.&lt;br /&gt;
* Linked to SO for continuity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scoring:&#039;&#039;&#039; +20 points per posted SI.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Performance Tracking Summary ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Stage&lt;br /&gt;
! Activity&lt;br /&gt;
! Points&lt;br /&gt;
! SLA&lt;br /&gt;
! Report&lt;br /&gt;
|-&lt;br /&gt;
| Customer Qualification&lt;br /&gt;
| Offering Table completed&lt;br /&gt;
| 0 (Base)&lt;br /&gt;
| 6 months refresh&lt;br /&gt;
| Qualified Customer Report&lt;br /&gt;
|-&lt;br /&gt;
| Lead&lt;br /&gt;
| Captured/Converted&lt;br /&gt;
| 1–3&lt;br /&gt;
| 3–5 days&lt;br /&gt;
| Leads Conversion Summary&lt;br /&gt;
|-&lt;br /&gt;
| Opportunity&lt;br /&gt;
| Created/Converted&lt;br /&gt;
| 3–5&lt;br /&gt;
| 7–10 days&lt;br /&gt;
| Opportunities by Stage&lt;br /&gt;
|-&lt;br /&gt;
| Quotation&lt;br /&gt;
| Generated/Converted&lt;br /&gt;
| 8–10&lt;br /&gt;
| Within 5 days of Opportunity&lt;br /&gt;
| Quotation Pipeline&lt;br /&gt;
|-&lt;br /&gt;
| Sales Order&lt;br /&gt;
| Approved&lt;br /&gt;
| 15&lt;br /&gt;
| Within 3 days of Quotation&lt;br /&gt;
| SO Conversion Report&lt;br /&gt;
|-&lt;br /&gt;
| Sales Invoice&lt;br /&gt;
| Posted&lt;br /&gt;
| 20&lt;br /&gt;
| Within 7 days of SO&lt;br /&gt;
| Invoice Posting Report&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
&lt;br /&gt;
This process ensures that every step — from first contact to final invoice — is traceable, measurable, and rewarded proportionally to its impact on revenue. It drives consistent qualification standards, timely updates, and accurate reporting across the Sales lifecycle.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Biz_Analysis_Methodology_251109&amp;diff=46</id>
		<title>Biz Analysis Methodology 251109</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Biz_Analysis_Methodology_251109&amp;diff=46"/>
		<updated>2026-02-25T06:58:02Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Business Analysis Methodology =  == Objectives and Timeline ==  === Objective === To conduct a structured discovery, analysis, and high-level design (HLD) process that integrates Comfac-IT&amp;#039;s core &amp;#039;&amp;#039;&amp;#039;Business Analysis Techniques&amp;#039;&amp;#039;&amp;#039;. The goal is to produce accurate, ERPNext-aligned process documentation that clarifies workflows, roles, and improvement opportunities across all operational domains.  This methodology is grounded in &amp;#039;&amp;#039;&amp;#039;Lean process analysis&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;ISO 900...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Business Analysis Methodology =&lt;br /&gt;
&lt;br /&gt;
== Objectives and Timeline ==&lt;br /&gt;
&lt;br /&gt;
=== Objective ===&lt;br /&gt;
To conduct a structured discovery, analysis, and high-level design (HLD) process that integrates Comfac-IT&#039;s core &#039;&#039;&#039;Business Analysis Techniques&#039;&#039;&#039;. The goal is to produce accurate, ERPNext-aligned process documentation that clarifies workflows, roles, and improvement opportunities across all operational domains.&lt;br /&gt;
&lt;br /&gt;
This methodology is grounded in &#039;&#039;&#039;Lean process analysis&#039;&#039;&#039; and &#039;&#039;&#039;ISO 9001 principles&#039;&#039;&#039;, emphasizing quantifiable efficiency through &#039;&#039;&#039;Touch Time&#039;&#039;&#039; (value-added work) and &#039;&#039;&#039;Data Handling Time&#039;&#039;&#039; (administrative or waiting time). By mapping how work is performed and where time is lost, the process guides digitization and continuous improvement.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Methodology Overview ==&lt;br /&gt;
&lt;br /&gt;
The analysis follows a structured three-phase framework designed for iterative learning and validation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 1: Pre-Visit Preparation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Lay the groundwork for efficient stakeholder engagement and structured data collection.&lt;br /&gt;
&lt;br /&gt;
=== 1. Stakeholder Identification ===&lt;br /&gt;
* Request existing org charts and process flowcharts from the client.&lt;br /&gt;
* Identify key process owners and approvers across functional areas.&lt;br /&gt;
* Confirm the list of subject matter experts (SMEs) available for interview.&lt;br /&gt;
&lt;br /&gt;
=== 2. Interview Scheduling ===&lt;br /&gt;
* Allocate 45–60 minute sessions per SME.&lt;br /&gt;
* Ensure interviews cover at least 90–95% of operational roles.&lt;br /&gt;
* Sequence sessions from upstream to downstream processes.&lt;br /&gt;
&lt;br /&gt;
=== 3. Tools &amp;amp; Templates ===&lt;br /&gt;
* &#039;&#039;&#039;Org Chart Template:&#039;&#039;&#039; to validate structure and reporting lines.&lt;br /&gt;
* &#039;&#039;&#039;Process Flowchart Template:&#039;&#039;&#039; to record process handoffs and identify transformation versus administrative activities.&lt;br /&gt;
* &#039;&#039;&#039;Touch Time vs. Data Handling Table:&#039;&#039;&#039; to quantify work efficiency and highlight rework frequency.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deliverables:&#039;&#039;&#039; Validated org chart, initial flowcharts, and baseline Touch Time vs. Data Handling Log.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 2: On-Site Visit ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Map roles, processes, and pain points using Lean and ERPNext process-mapping techniques.&lt;br /&gt;
&lt;br /&gt;
=== A. Stakeholder Interviews (90–95% of Time) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purpose:&#039;&#039;&#039; Capture how each department operates, where data flows, and how delays occur.&lt;br /&gt;
&lt;br /&gt;
==== Interview Structure ====&lt;br /&gt;
&lt;br /&gt;
; Role &amp;amp; Responsibilities&lt;br /&gt;
: &amp;quot;What tasks do you perform daily? What approvals do you handle?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Touch Time Analysis&lt;br /&gt;
: &amp;quot;How much time do you spend transforming data (encoding, approving, creating scopes of work)?&amp;quot;&lt;br /&gt;
: &amp;quot;What value does this step add to the customer or internal process?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Data Handling Time Analysis&lt;br /&gt;
: &amp;quot;How much time is spent retrieving forms, chasing approvals, or validating documentation?&amp;quot;&lt;br /&gt;
: &amp;quot;Where do delays typically occur?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Challenges&lt;br /&gt;
: &amp;quot;What frustrates you about the current system?&amp;quot;&lt;br /&gt;
: &amp;quot;What manual processes could be automated?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Validation &amp;amp; Discrepancies ====&lt;br /&gt;
* Compare provided org charts and process documents with observed practices.&lt;br /&gt;
* Identify deviations (e.g., &amp;quot;Three signatures in practice vs. two on file&amp;quot;).&lt;br /&gt;
* Highlight bottlenecks and approval redundancies.&lt;br /&gt;
&lt;br /&gt;
==== Deliverables ====&lt;br /&gt;
* Updated org and process flowcharts.&lt;br /&gt;
* &#039;&#039;&#039;Touch vs. Data Handling Log&#039;&#039;&#039; per role, including observed delays and rework triggers.&lt;br /&gt;
&lt;br /&gt;
=== B. Environmental Assessment (5–10% of Time) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Identify physical and digital workflow barriers.&lt;br /&gt;
&lt;br /&gt;
==== Key Areas to Observe ====&lt;br /&gt;
* &#039;&#039;&#039;Physical Forms &amp;amp; Digitization:&#039;&#039;&#039; Catalog and flag all paper-based forms.&lt;br /&gt;
* &#039;&#039;&#039;Workspace Layout:&#039;&#039;&#039; Note how spatial separation affects collaboration or approvals.&lt;br /&gt;
* &#039;&#039;&#039;Technology Setup:&#039;&#039;&#039; Review device accessibility, network performance, and ERP login friction.&lt;br /&gt;
&lt;br /&gt;
==== Strategies for Digitization ====&lt;br /&gt;
* &#039;&#039;&#039;Internal Forms:&#039;&#039;&#039; Digitize within ERPNext using built-in approval flows.&lt;br /&gt;
* &#039;&#039;&#039;External Forms:&#039;&#039;&#039; Enable export to PDF for wet signatures and define scanning/archiving SOPs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deliverables:&#039;&#039;&#039; Environmental audit notes, list of digitization-ready forms, and identified workflow constraints.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Phase 3: Post-Visit Synthesis ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Produce optimized, ERPNext-aligned workflows and digitization roadmaps.&lt;br /&gt;
&lt;br /&gt;
=== 1. Analysis &amp;amp; Recommendations ===&lt;br /&gt;
* &#039;&#039;&#039;Process Bottlenecks:&#039;&#039;&#039; Identify where Data Handling Time accumulates (e.g., waiting for cross-department approval).&lt;br /&gt;
* &#039;&#039;&#039;Touch Time Optimization:&#039;&#039;&#039; Remove redundant checks, automate manual entries, and streamline approvals.&lt;br /&gt;
* &#039;&#039;&#039;Organizational Alignment:&#039;&#039;&#039; Re-map roles to reduce handoffs and clarify accountability.&lt;br /&gt;
&lt;br /&gt;
=== 2. Mapping and Charting: Visualizing Flow and Risks ===&lt;br /&gt;
* Process mapping seeks to answer two core questions: &#039;&#039;&#039;&amp;quot;What happens next?&amp;quot;&#039;&#039;&#039; and &#039;&#039;&#039;&amp;quot;What happens when something goes wrong?&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Each process map includes &#039;&#039;&#039;decision points, error paths, and rework loops&#039;&#039;&#039;, showing how exceptions propagate.&lt;br /&gt;
* Risks identified are annotated with &#039;&#039;&#039;problem triggers&#039;&#039;&#039; and &#039;&#039;&#039;required coordination protocols&#039;&#039;&#039;—clarifying how updates or changes in SOPs are communicated and executed.&lt;br /&gt;
* Rework events are traced to quantify &#039;&#039;&#039;resource impact&#039;&#039;&#039; and guide corrective measures.&lt;br /&gt;
&lt;br /&gt;
=== 3. Deliverables ===&lt;br /&gt;
* &#039;&#039;&#039;Lean Process Maps:&#039;&#039;&#039; Show current vs. proposed workflows with quantified time savings.&lt;br /&gt;
* &#039;&#039;&#039;Digitization Roadmap:&#039;&#039;&#039; Rank processes and forms for ERPNext integration.&lt;br /&gt;
* &#039;&#039;&#039;Business Case:&#039;&#039;&#039; Estimate savings from reduced Data Handling Time and rework avoidance.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tools &amp;amp; Templates ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! #&lt;br /&gt;
! Tool&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Touch Time vs. Data Handling Log&lt;br /&gt;
| Role / Task / Touch Time (mins) / Data Handling Time (mins) / Bottlenecks&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Org Chart Template&lt;br /&gt;
| Includes roles, approvals, and cross-functional dependencies&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Digitization Checklist&lt;br /&gt;
| Lists internal/external forms, signature needs, and archiving procedures&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Process Mapping A3 Template&lt;br /&gt;
| Documents flow, decision points, and escalation paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reference Links and Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://next.comfaccorp.com/s/XxmLWbjSnmFQgx6 Sample ERPNext Company Process Template]&lt;br /&gt;
* [https://www.iso.org/standard/62085.html ISO 9001:2015 Standard Overview]&lt;br /&gt;
** [https://www.iso.org/obp/ui/en/#iso:std:iso:9001:ed-5:v1:en Read the outline/sample content here]&lt;br /&gt;
** &#039;&#039;Cost:&#039;&#039; Approximately 8,000 PHP (CHF 178 for MSMEs)&lt;br /&gt;
* [https://www.iso.org/files/live/sites/isoorg/files/standards/docs/en/iso_9001_2015_guidance_documented_information.pdf ISO 9001 Guidance on Documented Information]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeline Considerations ==&lt;br /&gt;
&lt;br /&gt;
Project duration depends on SME availability and process maturity.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Non-ISO 9001 organizations&#039;&#039;&#039; typically require longer interviews and iterative mapping due to undocumented workflows.&lt;br /&gt;
* &#039;&#039;&#039;ISO 9001-compliant organizations&#039;&#039;&#039; can progress faster, but maturity varies by department and the currency of documentation and training.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Phase&lt;br /&gt;
! Description&lt;br /&gt;
! Duration&lt;br /&gt;
! Dependencies&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1. Discovery&#039;&#039;&#039;&lt;br /&gt;
| Stakeholder interviews, workflow collection&lt;br /&gt;
| 2–3 weeks&lt;br /&gt;
| SME access, process documentation maturity&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2. Analysis&#039;&#039;&#039;&lt;br /&gt;
| Validation, bottleneck identification, Lean alignment&lt;br /&gt;
| 1–2 weeks&lt;br /&gt;
| Availability of validated data&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3. HLD&#039;&#039;&#039;&lt;br /&gt;
| ERPNext process mapping, A3 document creation, procedure linking&lt;br /&gt;
| 1 week&lt;br /&gt;
| Approved workflows from prior phase&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Total Duration:&#039;&#039;&#039; 4–6 weeks for a medium-sized enterprise, depending on access to SMEs and process documentation depth.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Key Success Metrics ==&lt;br /&gt;
&lt;br /&gt;
* Reduction in Data Handling Time per role.&lt;br /&gt;
* Stakeholder validation of updated org and process charts.&lt;br /&gt;
* % of paper forms migrated to ERPNext.&lt;br /&gt;
* Reduction in rework and approval cycle time.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Risks and Mitigation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Risk&lt;br /&gt;
! Description&lt;br /&gt;
! Mitigation&lt;br /&gt;
|-&lt;br /&gt;
| Limited SME availability&lt;br /&gt;
| Operational workload limits interview access&lt;br /&gt;
| Schedule early, break sessions into focused blocks&lt;br /&gt;
|-&lt;br /&gt;
| Undocumented or implicit processes&lt;br /&gt;
| Missing or informal workflows&lt;br /&gt;
| Use shadowing and cross-validation interviews&lt;br /&gt;
|-&lt;br /&gt;
| Outdated documentation&lt;br /&gt;
| Misalignment between written and actual practice&lt;br /&gt;
| Validate through observation and workshops&lt;br /&gt;
|-&lt;br /&gt;
| Rework from unclear instructions&lt;br /&gt;
| Ambiguous SOP updates&lt;br /&gt;
| Establish clear escalation and change communication protocol&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Appendix: ISO 9001 and the PDCA Cycle ==&lt;br /&gt;
&lt;br /&gt;
ISO 9001 serves as the foundation for all quality and process management systems. At its core, ISO 9001 can be distilled into the &#039;&#039;&#039;PDCA (Plan–Do–Check–Act)&#039;&#039;&#039; framework — a continuous improvement model that structures how organizations think, execute, and refine their work.&lt;br /&gt;
&lt;br /&gt;
=== Plan ===&lt;br /&gt;
Planning begins with identifying &#039;&#039;&#039;goals&#039;&#039;&#039; and &#039;&#039;&#039;intended outcomes&#039;&#039;&#039;, and translating these into specific, measurable actions. It requires:&lt;br /&gt;
* Extrapolating from goals to actionable steps.&lt;br /&gt;
* Verifying that each planned action logically contributes to the intended outcome.&lt;br /&gt;
* Ensuring all goals address a &#039;&#039;&#039;problem statement&#039;&#039;&#039; or test an &#039;&#039;&#039;opportunity hypothesis&#039;&#039;&#039;.&lt;br /&gt;
* Advanced practitioners also factor in &#039;&#039;&#039;risks, opportunities, and constraints&#039;&#039;&#039; (time, manpower, skills, cost, equipment, etc.) when designing plans.&lt;br /&gt;
&lt;br /&gt;
=== Do ===&lt;br /&gt;
Execution involves &#039;&#039;&#039;mobilizing and communicating resources&#039;&#039;&#039; — including manpower, finances, tools, permissions, and authority. This phase focuses on clear delegation, coordination, and accountability to carry out the planned activities effectively.&lt;br /&gt;
&lt;br /&gt;
=== Check ===&lt;br /&gt;
Checking requires examining the &#039;&#039;&#039;results of both the plan and its execution&#039;&#039;&#039; to identify:&lt;br /&gt;
* &#039;&#039;&#039;Gaps&#039;&#039;&#039; between expected and actual outcomes.&lt;br /&gt;
* A &#039;&#039;&#039;taxonomy of problems and risks&#039;&#039;&#039;, categorized by impact and recurrence.&lt;br /&gt;
* The need to update documents, processes, and organizational knowledge to reflect current practice.&lt;br /&gt;
&lt;br /&gt;
=== Act ===&lt;br /&gt;
Acting is about &#039;&#039;&#039;refinement and iteration&#039;&#039;&#039; — applying lessons learned to improve efficiency, reduce risk, and optimize future outcomes. The cycle repeats, incorporating insights from the previous Check phase to better address goals, risks, and opportunities.&lt;br /&gt;
&lt;br /&gt;
By embedding PDCA into ERPNext-driven process mapping, Comfac-IT ensures that every documented workflow not only aligns with ISO 9001 principles but also creates a living system of continuous improvement and learning.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Excel_Description_Filler_Tool_%F0%9F%93%9D&amp;diff=45</id>
		<title>Excel Description Filler Tool 📝</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Excel_Description_Filler_Tool_%F0%9F%93%9D&amp;diff=45"/>
		<updated>2026-02-25T06:57:36Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;== Excel Description Filler Tool ==  Automatically populate product descriptions in your Excel spreadsheet using Python. Perfect for e-commerce product imports, inventory management, and bulk data processing.  ----  == What This Tool Does ==  # Reads your Excel file with product names # Matches products to pre-written descriptions # Fills in blank Description cells automatically # Preserves existing descriptions (will not overwrite) # Saves a new Excel file with complete...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Excel Description Filler Tool ==&lt;br /&gt;
&lt;br /&gt;
Automatically populate product descriptions in your Excel spreadsheet using Python. Perfect for e-commerce product imports, inventory management, and bulk data processing.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What This Tool Does ==&lt;br /&gt;
&lt;br /&gt;
# Reads your Excel file with product names&lt;br /&gt;
# Matches products to pre-written descriptions&lt;br /&gt;
# Fills in blank Description cells automatically&lt;br /&gt;
# Preserves existing descriptions (will not overwrite)&lt;br /&gt;
# Saves a new Excel file with completed data&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Files Included ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;description.py&amp;lt;/code&amp;gt; || The main Python script (heavily commented)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;QUICKSTART.md&amp;lt;/code&amp;gt; || Get started in 5 minutes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;INSTRUCTIONS.md&amp;lt;/code&amp;gt; || Complete step-by-step guide&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TEMPLATE_GUIDE.md&amp;lt;/code&amp;gt; || Examples and formatting templates&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt; || Project overview&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Python 3.7+ (Python 3.9+ recommended)&lt;br /&gt;
* &amp;lt;code&amp;gt;pandas&amp;lt;/code&amp;gt; library (data manipulation)&lt;br /&gt;
* &amp;lt;code&amp;gt;openpyxl&amp;lt;/code&amp;gt; library (Excel file support)&lt;br /&gt;
&lt;br /&gt;
Your Excel file must have these columns:&lt;br /&gt;
* &#039;&#039;&#039;Item Name&#039;&#039;&#039; – product names to match&lt;br /&gt;
* &#039;&#039;&#039;Description&#039;&#039;&#039; – column to fill (can be empty)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Quick Start (5 Minutes) ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1 – Install Python ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows:&#039;&#039;&#039; Download from [https://www.python.org/downloads/ python.org] → check &amp;quot;Add Python to PATH&amp;quot; during installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux (Ubuntu/Debian):&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install python3 python3-pip&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2 – Install Required Libraries ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install pandas openpyxl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip3 install pandas openpyxl&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3 – Get Product Descriptions Using AI ===&lt;br /&gt;
&lt;br /&gt;
Ask Claude or ChatGPT using a prompt like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
I need concise product descriptions (50-80 words each)&lt;br /&gt;
for these products suitable for a professional webstore:&lt;br /&gt;
&lt;br /&gt;
- Product Name 1&lt;br /&gt;
- Product Name 2&lt;br /&gt;
- Product Name 3&lt;br /&gt;
&lt;br /&gt;
Include key specifications, features, and target use cases.&lt;br /&gt;
Format: Professional, B2B tone.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4 – Organize Your Files ===&lt;br /&gt;
&lt;br /&gt;
Place both files in the &#039;&#039;&#039;same folder&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
📂 Downloads/&lt;br /&gt;
├── description.py&lt;br /&gt;
└── your-data.xlsx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5 – Configure the Script ===&lt;br /&gt;
&lt;br /&gt;
Open &amp;lt;code&amp;gt;description.py&amp;lt;/code&amp;gt; and update these sections:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Input filename (line 19):&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
path = &amp;quot;your-data.xlsx&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Product descriptions (lines 24–50):&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
descriptions = {&lt;br /&gt;
    &amp;quot;Product A&amp;quot;: &amp;quot;Description for Product A...&amp;quot;,&lt;br /&gt;
    &amp;quot;Product B&amp;quot;: &amp;quot;Description for Product B...&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 6 – Run the Script ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\Users\YourName\Downloads&lt;br /&gt;
python description.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Linux:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/Downloads&lt;br /&gt;
python3 description.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 7 – Check Output ===&lt;br /&gt;
&lt;br /&gt;
Look for the file: &amp;lt;code&amp;gt;webstore_import_with_descriptions.xlsx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Description Dictionary Format ==&lt;br /&gt;
&lt;br /&gt;
=== Basic Template ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
descriptions = {&lt;br /&gt;
    &amp;quot;Product Name 1&amp;quot;: &amp;quot;Short description here.&amp;quot;,&lt;br /&gt;
    &amp;quot;Product Name 2&amp;quot;: &amp;quot;Another short description.&amp;quot;,&lt;br /&gt;
    &amp;quot;Product Name 3&amp;quot;: &amp;quot;Yet another description.&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multi-Line Template (Recommended) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
descriptions = {&lt;br /&gt;
    &amp;quot;Product Name 1&amp;quot;: (&lt;br /&gt;
        &amp;quot;First part of the description. &amp;quot;&lt;br /&gt;
        &amp;quot;Second part of the description. &amp;quot;&lt;br /&gt;
        &amp;quot;Third part continues here.&amp;quot;&lt;br /&gt;
    ),&lt;br /&gt;
    &amp;quot;Product Name 2&amp;quot;: (&lt;br /&gt;
        &amp;quot;Another product with a longer description &amp;quot;&lt;br /&gt;
        &amp;quot;that spans multiple lines for better readability.&amp;quot;&lt;br /&gt;
    ),&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Mistakes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ❌ Wrong !! ✅ Correct&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;quot;Dell OptiPlex&amp;quot;&amp;lt;/code&amp;gt; (too generic, won&#039;t match) || &amp;lt;code&amp;gt;&amp;quot;Dell OptiPlex 7010&amp;quot;&amp;lt;/code&amp;gt; (exact match)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Dell OptiPlex 7010: &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; (missing quotes on key) || &amp;lt;code&amp;gt;&amp;quot;Dell OptiPlex 7010&amp;quot;: &amp;quot;...&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Missing comma after entry || Each entry ends with a comma&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== The Full Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# ============================================================================&lt;br /&gt;
# CONFIGURATION SECTION - UPDATE THESE VALUES&lt;br /&gt;
# ============================================================================&lt;br /&gt;
&lt;br /&gt;
# STEP 1: Change this to your Excel filename&lt;br /&gt;
path = &amp;quot;251106 netgate selling price.xlsx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# STEP 2: Add your product descriptions here&lt;br /&gt;
descriptions = {&lt;br /&gt;
    &amp;quot;Netgate 8300 TAA&amp;quot;: (&lt;br /&gt;
        &amp;quot;pfSense+ 1U security gateway with Intel Xeon D-1733NT (8-core/16-thread) and Intel AVX-512. &amp;quot;&lt;br /&gt;
        &amp;quot;Ports: 4×10G SFP+, 4×1G SFP, 3×2.5G RJ-45; PCIe expansion up to 10/25/100G. &amp;quot;&lt;br /&gt;
        &amp;quot;TAA-compliant hardware; built for medium/large sites, MSPs, and data centers.&amp;quot;&lt;br /&gt;
    ),&lt;br /&gt;
    # ADD MORE PRODUCTS HERE...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# STEP 3 (Optional): Change output filename&lt;br /&gt;
output_filename = &amp;quot;webstore_import_with_descriptions.xlsx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ============================================================================&lt;br /&gt;
# MAIN SCRIPT&lt;br /&gt;
# ============================================================================&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Loading Excel file: {path}&amp;quot;)&lt;br /&gt;
df = pd.read_excel(path, sheet_name=0)&lt;br /&gt;
print(f&amp;quot;✓ Loaded {df.shape[0]} rows and {df.shape[1]} columns&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def fill_desc(row):&lt;br /&gt;
    name = str(row.get(&amp;quot;Item Name&amp;quot;, &amp;quot;&amp;quot;)).strip()&lt;br /&gt;
    existing = row.get(&amp;quot;Description&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    if pd.notna(existing) and str(existing).strip():&lt;br /&gt;
        return existing&lt;br /&gt;
    return descriptions.get(name, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;\nProcessing descriptions...&amp;quot;)&lt;br /&gt;
df[&amp;quot;Description&amp;quot;] = df.apply(fill_desc, axis=1)&lt;br /&gt;
&lt;br /&gt;
filled_count = df[&amp;quot;Description&amp;quot;].notna().sum()&lt;br /&gt;
print(f&amp;quot;✓ Filled {filled_count} descriptions&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;\nSaving to: {output_filename}&amp;quot;)&lt;br /&gt;
df.to_excel(output_filename, index=False)&lt;br /&gt;
print(&amp;quot;✓ File saved successfully!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Issue !! Solution&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ModuleNotFoundError: pandas&amp;lt;/code&amp;gt; || Run: &amp;lt;code&amp;gt;pip install pandas openpyxl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FileNotFoundError&amp;lt;/code&amp;gt; || Check Excel file is in the same folder as the script&lt;br /&gt;
|-&lt;br /&gt;
| Descriptions not filling || Product names must match exactly (case and spacing)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Permission denied&amp;lt;/code&amp;gt; || Close the Excel file if it is currently open&lt;br /&gt;
|-&lt;br /&gt;
| Character encoding issues (e.g. Ã— instead of ×) || Save the &amp;lt;code&amp;gt;.py&amp;lt;/code&amp;gt; file with UTF-8 encoding&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Best Practices ==&lt;br /&gt;
&lt;br /&gt;
# Always test with 2–3 products before bulk processing&lt;br /&gt;
# Keep a backup of your original Excel file&lt;br /&gt;
# Product names must match character-for-character&lt;br /&gt;
# Review the generated file before importing&lt;br /&gt;
# Use UTF-8 encoding to prevent character display issues&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Workflow Summary ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1. Get product names from Excel&lt;br /&gt;
        ↓&lt;br /&gt;
2. Generate descriptions using AI&lt;br /&gt;
        ↓&lt;br /&gt;
3. Format as Python dictionary&lt;br /&gt;
        ↓&lt;br /&gt;
4. Update description.py&lt;br /&gt;
        ↓&lt;br /&gt;
5. Run script&lt;br /&gt;
        ↓&lt;br /&gt;
6. Check output file&lt;br /&gt;
        ↓&lt;br /&gt;
7. Import to your system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Metric !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Processing Speed || ~1,000 rows per second&lt;br /&gt;
|-&lt;br /&gt;
| File Size Limit || Tested up to 100,000 rows&lt;br /&gt;
|-&lt;br /&gt;
| Memory Usage || &amp;lt; 100 MB for typical files&lt;br /&gt;
|-&lt;br /&gt;
| Excel Compatibility || .xlsx, .xlsm formats&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_and_Publishing_Process&amp;diff=44</id>
		<title>ERPNext Webshop Setup and Publishing Process</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=ERPNext_Webshop_Setup_and_Publishing_Process&amp;diff=44"/>
		<updated>2026-02-25T06:57:18Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= ERPNext Webshop Setup and Publishing Process =  == Step 1: Create Item Groups ==  === Example Tree ===   All Item Groups  ├── Products  │   ├── Desktops  │   ├── Industrial Controllers  │   ├── Laptops  │   ├── Network  │   ├── Network Attached Storage (NAS)  │   └── Servers  ├── Services  │   ├── Frappe ERPNext Solutions  │   ├── Industrial Controller Solutions  │   ├── Network Solutio...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ERPNext Webshop Setup and Publishing Process =&lt;br /&gt;
&lt;br /&gt;
== Step 1: Create Item Groups ==&lt;br /&gt;
&lt;br /&gt;
=== Example Tree ===&lt;br /&gt;
&lt;br /&gt;
 All Item Groups&lt;br /&gt;
 ├── Products&lt;br /&gt;
 │   ├── Desktops&lt;br /&gt;
 │   ├── Industrial Controllers&lt;br /&gt;
 │   ├── Laptops&lt;br /&gt;
 │   ├── Network&lt;br /&gt;
 │   ├── Network Attached Storage (NAS)&lt;br /&gt;
 │   └── Servers&lt;br /&gt;
 ├── Services&lt;br /&gt;
 │   ├── Frappe ERPNext Solutions&lt;br /&gt;
 │   ├── Industrial Controller Solutions&lt;br /&gt;
 │   ├── Network Solutions&lt;br /&gt;
 │   ├── NextCloud Solutions&lt;br /&gt;
 │   └── Open Source Solutions&lt;br /&gt;
 ├── Raw Material&lt;br /&gt;
 ├── Sub Assemblies&lt;br /&gt;
 └── Consumable&lt;br /&gt;
&lt;br /&gt;
=== Guidelines ===&lt;br /&gt;
* Go to &#039;&#039;&#039;Stock → Item Group Tree&#039;&#039;&#039;.&lt;br /&gt;
* Create or edit groups according to your product/service taxonomy.&lt;br /&gt;
* Ensure correct hierarchy (e.g., &amp;quot;Products&amp;quot; and &amp;quot;Services&amp;quot; under &amp;quot;All Item Groups&amp;quot;).&lt;br /&gt;
* For each &#039;&#039;&#039;Item Group&#039;&#039;&#039;:&lt;br /&gt;
** Check ✅ &#039;&#039;&#039;Show in Website&#039;&#039;&#039; under &#039;&#039;Website Section&#039;&#039;.&lt;br /&gt;
** Verify the &#039;&#039;&#039;route&#039;&#039;&#039; (URL path) is valid.&lt;br /&gt;
** Optionally write a short description of what the category means (can be added later).&lt;br /&gt;
&lt;br /&gt;
=== Tax Configuration ===&lt;br /&gt;
* Groups like &#039;&#039;&#039;Services, Goods (Products), Rent&#039;&#039;&#039; → typically have Withholding Tax and VAT.&lt;br /&gt;
* &#039;&#039;&#039;Raw Material, Subassemblies, Consumables&#039;&#039;&#039; → generally not published on webshop, internal use only.&lt;br /&gt;
&lt;br /&gt;
=== Special Notes ===&lt;br /&gt;
* &#039;&#039;Open Source Solutions&#039;&#039; includes SECADA, STEWARD, SYNX, and third-party open source projects (e.g., Open WebUI, Ollama, WordPress, Mailcow, etc.).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 2: Configure Webshop Settings ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Path:&#039;&#039;&#039; Website → Webshop Settings&lt;br /&gt;
&lt;br /&gt;
# Enable ✅ &#039;&#039;Field Filters (Categories)&#039;&#039;.&lt;br /&gt;
# Add Website Item Fields:&lt;br /&gt;
#* &amp;lt;code&amp;gt;brand&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;item_group&amp;lt;/code&amp;gt;&lt;br /&gt;
#* &amp;lt;code&amp;gt;item_code&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enable ✅ &#039;&#039;Attribute Filters&#039;&#039; (optional, for Colour, Size, etc.).&lt;br /&gt;
# Save settings.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 3: Bulk Upload and Edit Items ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Path:&#039;&#039;&#039; Stock → Item → ⋯ (ellipses) → Import&lt;br /&gt;
&lt;br /&gt;
# Download or view &#039;&#039;&#039;Sample Upload Template&#039;&#039;&#039;.&lt;br /&gt;
# Ensure the following default fields are included:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Fieldname&lt;br /&gt;
! Description&lt;br /&gt;
! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_code&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unique item identifier&lt;br /&gt;
| DELL-DC15255&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_name&amp;lt;/code&amp;gt;&lt;br /&gt;
| Display name&lt;br /&gt;
| Dell 15 DC15255 Laptop&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;brand&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link to Brand DocType&lt;br /&gt;
| Dell&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;item_group&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link to Item Group&lt;br /&gt;
| Laptops&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;&lt;br /&gt;
| HTML/Text&lt;br /&gt;
| Intel i7, 16GB RAM, 512GB SSD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;standard_rate&amp;lt;/code&amp;gt;&lt;br /&gt;
| Selling Price&lt;br /&gt;
| 50000&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;show_in_website&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1 = Published&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;&lt;br /&gt;
| Image URL&lt;br /&gt;
| /files/dell15.png&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stock_uom&amp;lt;/code&amp;gt;&lt;br /&gt;
| Unit of Measure&lt;br /&gt;
| Nos&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;website_item_group&amp;lt;/code&amp;gt;&lt;br /&gt;
| Group shown on webshop&lt;br /&gt;
| Products&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Upload via Import Tool (Add New or Update Existing Items).&lt;br /&gt;
4. Save the spreadsheet at: [https://next.comfaccorp.com/f/152937 Nextcloud Product Information Folder]&lt;br /&gt;
&lt;br /&gt;
All product and service images must be uploaded and stored in the respective &#039;&#039;&#039;Item&#039;&#039;&#039; entries. These images will later be fetched into slideshows automatically.&lt;br /&gt;
&lt;br /&gt;
=== Bulk Automation Tip ===&lt;br /&gt;
For large item sets, automate editing using &#039;&#039;&#039;Python + Pandas + Openpyxl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install python3-pandas python3-openpyxl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://erp.comfac-it.com/wiki/excel-description-filler-tool-%F0%9F%93%9D Excel Description Filler Tool]&lt;br /&gt;
* [https://next.comfaccorp.com/s/CYts2pyFFW8FmPc Bulk Encode Descriptions Script]&lt;br /&gt;
* [https://next.comfaccorp.com/s/mjJWZR5RfmsNm6z Bulk Upload File Template]&lt;br /&gt;
&lt;br /&gt;
Ensure the column &#039;&#039;&#039;Published in Website&#039;&#039;&#039; is set to &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 4: Configure and Publish Webshop Items ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Path:&#039;&#039;&#039; Website → Website Item&lt;br /&gt;
&lt;br /&gt;
# Publish items using the &amp;quot;Publish to Website&amp;quot; action.&lt;br /&gt;
# Verify each entry under &#039;&#039;&#039;Website Item&#039;&#039;&#039;.&lt;br /&gt;
# Ensure every item has a &#039;&#039;&#039;Slideshow&#039;&#039;&#039; with matching name to its Item Code or Item Name.&lt;br /&gt;
# Right-click → Open linked &#039;&#039;&#039;Slideshow&#039;&#039;&#039; in new tab.&lt;br /&gt;
&lt;br /&gt;
=== Slideshow Configuration ===&lt;br /&gt;
* Use &#039;&#039;Customized&#039;&#039; type.&lt;br /&gt;
* If &#039;&#039;&#039;Allow Bulk Edit&#039;&#039;&#039; is visible, it is already configured. If not visible, escalate to the system admin team to enable it.&lt;br /&gt;
* In the Slideshow table (columns: &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Image&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Heading&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Description&amp;lt;/code&amp;gt;), click the gear icon ⚙️ and add a &#039;&#039;&#039;URL&#039;&#039;&#039; field to make it visible.&lt;br /&gt;
* Note: when using &#039;&#039;Fetch Attached Images from Document&#039;&#039; (from Item → Item Code), ERPNext does not always save the images properly.&lt;br /&gt;
* After fetching, download the CSV file and copy the &amp;lt;code&amp;gt;Image&amp;lt;/code&amp;gt; column contents into the &amp;lt;code&amp;gt;URL&amp;lt;/code&amp;gt; column manually.&lt;br /&gt;
* Name each slide heading as &amp;lt;code&amp;gt;&amp;lt;Item Code&amp;gt; 01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;Item Code&amp;gt; 02&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
* Upload modified CSV again (ERPNext sometimes doesn&#039;t retain inline edits).&lt;br /&gt;
&lt;br /&gt;
This ensures all product images appear properly in the webshop.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Summary Flow ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step&lt;br /&gt;
! Module&lt;br /&gt;
! Key Action&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Stock&lt;br /&gt;
| Create and configure Item Groups (Show in Website)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Website&lt;br /&gt;
| Configure Webshop Filters (brand, website_item_group, item_code)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Stock&lt;br /&gt;
| Bulk upload items with all required fields&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Website&lt;br /&gt;
| Publish items and set up slideshows&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Verify&lt;br /&gt;
| Filters and products appear correctly in &amp;lt;code&amp;gt;/all-products&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Next Improvements ==&lt;br /&gt;
&lt;br /&gt;
* Add category descriptions and icons for better UI.&lt;br /&gt;
* Automate bulk slideshow generation with a script.&lt;br /&gt;
* Use tags for easier multi-criteria filtering (e.g., ESG, Open Source, SaaS).&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Comparison:_TrueNAS_Mini_X%2B_vs_Dell_Precision_3680_Tower_(2025)&amp;diff=43</id>
		<title>Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025)</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Comparison:_TrueNAS_Mini_X%2B_vs_Dell_Precision_3680_Tower_(2025)&amp;diff=43"/>
		<updated>2026-02-25T06:56:54Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) =  {| class=&amp;quot;wikitable&amp;quot; |- ! Specification ! TrueNAS Mini X+ ! Dell Precision 3680 Tower ! Notes |- | &amp;#039;&amp;#039;&amp;#039;CPU&amp;#039;&amp;#039;&amp;#039; | Intel Atom C3758 (8 cores, 2.2GHz, 25W TDP) | Intel Core i7-14700 (20 cores [8P+12E], up to 5.4GHz, 65–219W TDP) | Atom is a low-power CPU (25W vs 219W); Dell&amp;#039;s higher wattage triggers need for higher-grade PSU, GPU, and cooling, which increases total system cost. |- | &amp;#039;&amp;#039;&amp;#039;Architecture&amp;#039;&amp;#039;&amp;#039; | Se...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Specification&lt;br /&gt;
! TrueNAS Mini X+&lt;br /&gt;
! Dell Precision 3680 Tower&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;CPU&#039;&#039;&#039;&lt;br /&gt;
| Intel Atom C3758 (8 cores, 2.2GHz, 25W TDP)&lt;br /&gt;
| Intel Core i7-14700 (20 cores [8P+12E], up to 5.4GHz, 65–219W TDP)&lt;br /&gt;
| Atom is a low-power CPU (25W vs 219W); Dell&#039;s higher wattage triggers need for higher-grade PSU, GPU, and cooling, which increases total system cost.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
| Server-grade (Atom Denverton, low power, optimized for 24/7)&lt;br /&gt;
| Desktop/workstation-grade (Raptor Lake 14th Gen)&lt;br /&gt;
| Precision&#039;s CPU architecture is workstation-class, designed for mixed workloads, not constant uptime NAS use.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ECC Support&#039;&#039;&#039;&lt;br /&gt;
| Yes, supports ECC DDR4 up to 64GB&lt;br /&gt;
| Supports ECC and Non-ECC DDR5 (up to 128GB)&lt;br /&gt;
| [https://www.dell.com/support/manuals/en-ph/oth-3680-xe/precision_3680_tower_om/memory?guid=guid-e9d2ea83-38a4-431d-803c-96d63c1dbc34&amp;amp;lang=en-us Dell Precision 3680 Memory Manual] — ECC-capable CPU and motherboard are expensive and enterprise-grade.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;RAM (Included / Max)&#039;&#039;&#039;&lt;br /&gt;
| 32GB ECC DDR4 (expandable to 64GB)&lt;br /&gt;
| 16GB DDR5 (expandable to 128GB)&lt;br /&gt;
| ECC memory ensures ZFS integrity and resilience; DDR5 non-ECC is faster but not fault-tolerant.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Storage (Base)&#039;&#039;&#039;&lt;br /&gt;
| Diskless chassis (5x 3.5&amp;quot; + 2x 2.5&amp;quot; bays)&lt;br /&gt;
| 256GB M.2 SSD + 2TB SATA HDD&lt;br /&gt;
| TrueNAS Mini X+ is designed for multi-drive RAID setups; Dell is optimized for workstation OS and local storage.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expansion Bays&#039;&#039;&#039;&lt;br /&gt;
| 7 hot-swap bays total&lt;br /&gt;
| 2 internal 3.5&amp;quot; bays + 1 M.2 slot&lt;br /&gt;
| TrueNAS supports RAIDZ2 or mirrored arrays; Dell is limited for expansion.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Network Ports&#039;&#039;&#039;&lt;br /&gt;
| 2x 10GbE RJ45&lt;br /&gt;
| 1x 1GbE RJ45&lt;br /&gt;
| TrueNAS provides higher throughput and redundancy for storage traffic.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GPU&#039;&#039;&#039;&lt;br /&gt;
| Integrated (no GPU)&lt;br /&gt;
| NVIDIA T400 (4GB GDDR6, 3x mDP)&lt;br /&gt;
| GPU adds cost and power consumption but not essential for NAS workloads.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Power Supply&#039;&#039;&#039;&lt;br /&gt;
| Proprietary internal PSU, 250W–300W (quiet, efficient)&lt;br /&gt;
| Standard ATX PSU (up to 400–500W)&lt;br /&gt;
| Precision&#039;s power supply complexity stems from its higher CPU and GPU load.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chassis Type&#039;&#039;&#039;&lt;br /&gt;
| Small form factor NAS (whisper-quiet)&lt;br /&gt;
| Mid-tower workstation (active cooling, louder)&lt;br /&gt;
| Precision 3680 has more airflow but higher acoustic footprint.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Operating System&#039;&#039;&#039;&lt;br /&gt;
| [https://www.truenas.com/blog/truenas-mini-x-and-mini-x-plus/ TrueNAS CORE/Scale] (FreeBSD/Linux-based NAS OS)&lt;br /&gt;
| Windows 11 Pro&lt;br /&gt;
| TrueNAS is an appliance OS built for storage; Windows is general-purpose.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Target Use Case&#039;&#039;&#039;&lt;br /&gt;
| Dedicated NAS / storage appliance&lt;br /&gt;
| General workstation, can run TrueNAS in a VM&lt;br /&gt;
| Precision is more flexible but not storage-optimized.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Power Efficiency&#039;&#039;&#039;&lt;br /&gt;
| 25W CPU, typically &amp;lt;60W total load&lt;br /&gt;
| 65–200W typical load depending on use&lt;br /&gt;
| TrueNAS Mini is 3–4x more power efficient, suitable for 24/7 uptime.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Base Price (USD)&#039;&#039;&#039;&lt;br /&gt;
| USD 2,000&lt;br /&gt;
| —&lt;br /&gt;
| [https://www.truenas.com/blog/truenas-mini-x-and-mini-x-plus/ TrueNAS Mini X+ Overview]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Converted Price (PHP)&#039;&#039;&#039;&lt;br /&gt;
| 2,000 × 60 = &#039;&#039;&#039;₱120,000&#039;&#039;&#039;&lt;br /&gt;
| ₱91,000–₱115,000&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Estimated Landed Cost&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;₱156,000 landed in PH&#039;&#039;&#039; (₱120,000 × 1.3)&lt;br /&gt;
| ₱91,000–₱115,000 (local pricing)&lt;br /&gt;
| Landing cost includes import duties, VAT, and handling.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Warranty&#039;&#039;&#039;&lt;br /&gt;
| 3 years iXsystems warranty (return to base)&lt;br /&gt;
| 3 years ProSupport (on-site, local Dell PH service)&lt;br /&gt;
| TrueNAS warranty requires overseas RMA; Dell is locally supported.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Availability / Logistics&#039;&#039;&#039;&lt;br /&gt;
| Imported (may need stock of PSU, shipping delay for parts)&lt;br /&gt;
| Widely available in PH (Dell-authorized service)&lt;br /&gt;
| TrueNAS PSU and parts should be stocked locally to minimize downtime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance:&#039;&#039;&#039; Precision 3680&#039;s CPU and GPU make it far more powerful but also power-hungry and costly due to enterprise-class board and PSU requirements. The TrueNAS Mini X+ is slower but optimized for stability, uptime, and ZFS performance.&lt;br /&gt;
* &#039;&#039;&#039;ECC &amp;amp; Data Integrity:&#039;&#039;&#039; Both systems can support ECC memory, but TrueNAS uses it by default with ZFS, ensuring data consistency. ECC-capable Dell boards are expensive, confirming their enterprise orientation.&lt;br /&gt;
* &#039;&#039;&#039;Networking:&#039;&#039;&#039; TrueNAS offers dual 10GbE, vastly superior to Dell&#039;s single 1GbE port for data transfer.&lt;br /&gt;
* &#039;&#039;&#039;Noise &amp;amp; Efficiency:&#039;&#039;&#039; TrueNAS is ultra-quiet and efficient; Dell consumes more power and generates more heat under load.&lt;br /&gt;
* &#039;&#039;&#039;Expandability:&#039;&#039;&#039; TrueNAS wins with more drive bays and easier RAID management.&lt;br /&gt;
* &#039;&#039;&#039;Supportability:&#039;&#039;&#039; Dell wins for local warranty and logistics; TrueNAS requires self-maintenance and stocking spares.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
* For &#039;&#039;&#039;dedicated NAS / enterprise storage reliability&#039;&#039;&#039;, the &#039;&#039;&#039;TrueNAS Mini X+&#039;&#039;&#039; is the better choice even at &#039;&#039;&#039;₱156,000 landed&#039;&#039;&#039;.&lt;br /&gt;
* For &#039;&#039;&#039;workstation workloads (rendering, dev, light NAS)&#039;&#039;&#039;, the &#039;&#039;&#039;Dell Precision 3680&#039;&#039;&#039; is more flexible but costlier to operate long-term.&lt;br /&gt;
&lt;br /&gt;
{{Note|If Comfac plans to adopt TrueNAS Mini units, &#039;&#039;&#039;keep spare PSUs and fans&#039;&#039;&#039; locally in stock to minimize lead time and downtime.}}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Mailcow_SOGo:_Creating_Filters_for_Events,_Approvals,_and_Organizational_Emails&amp;diff=42</id>
		<title>Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Mailcow_SOGo:_Creating_Filters_for_Events,_Approvals,_and_Organizational_Emails&amp;diff=42"/>
		<updated>2026-02-25T06:56:04Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails =  &amp;#039;&amp;#039;&amp;#039;Goal:&amp;#039;&amp;#039;&amp;#039; Automatically organize event invitations, approval requests, and messages from students, interns, or capstone projects into dedicated folders for easier review and management.  ----  == Step 1: Open SOGo Mail Preferences ==  # Log in to your &amp;#039;&amp;#039;&amp;#039;Mailcow SOGo web interface&amp;#039;&amp;#039;&amp;#039;. # In the top menu, click &amp;#039;&amp;#039;&amp;#039;Preferences&amp;#039;&amp;#039;&amp;#039;. # Select the &amp;#039;&amp;#039;&amp;#039;Mail&amp;#039;&amp;#039;&amp;#039; tab.  ----  == Step 2: Go to the F...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goal:&#039;&#039;&#039; Automatically organize event invitations, approval requests, and messages from students, interns, or capstone projects into dedicated folders for easier review and management.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 1: Open SOGo Mail Preferences ==&lt;br /&gt;
&lt;br /&gt;
# Log in to your &#039;&#039;&#039;Mailcow SOGo web interface&#039;&#039;&#039;.&lt;br /&gt;
# In the top menu, click &#039;&#039;&#039;Preferences&#039;&#039;&#039;.&lt;br /&gt;
# Select the &#039;&#039;&#039;Mail&#039;&#039;&#039; tab.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 2: Go to the Filters Section ==&lt;br /&gt;
&lt;br /&gt;
Within Mail preferences, navigate through the tabs:&lt;br /&gt;
* General&lt;br /&gt;
* Labels&lt;br /&gt;
* IMAP Accounts&lt;br /&gt;
* &#039;&#039;&#039;Filters&#039;&#039;&#039; ← Click this one&lt;br /&gt;
* Vacation&lt;br /&gt;
* Forward&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 3: Create a Filter for Calendar Events ==&lt;br /&gt;
&lt;br /&gt;
This captures Google Calendar and other event invitations.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Filter name&#039;&#039;&#039;&lt;br /&gt;
| Events&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;For incoming messages&#039;&#039;&#039;&lt;br /&gt;
| Match &#039;&#039;&#039;any&#039;&#039;&#039; of the following rules&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Condition&#039;&#039;&#039;&lt;br /&gt;
| Subject &#039;&#039;&#039;contains&#039;&#039;&#039; &amp;lt;code&amp;gt;Invitation:&amp;lt;/code&amp;gt; (used by Google Calendar)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Condition (optional)&#039;&#039;&#039;&lt;br /&gt;
| Body &#039;&#039;&#039;contains&#039;&#039;&#039; &amp;lt;code&amp;gt;.ics&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Action&#039;&#039;&#039;&lt;br /&gt;
| File the message in Mailbox (folder) → &#039;&#039;&#039;Events&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This ensures any invite with the standard Google Calendar subject (&amp;quot;Invitation: [Event Name]&amp;quot;) goes to your &#039;&#039;&#039;Events&#039;&#039;&#039; folder.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 4: Create Filters for Organizational and Academic Emails ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Filter Name&lt;br /&gt;
! Conditions&lt;br /&gt;
! Target Folder&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Approvals&#039;&#039;&#039;&lt;br /&gt;
| Subject contains &amp;lt;code&amp;gt;approval&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;approved&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;for review&amp;lt;/code&amp;gt;&lt;br /&gt;
| Approvals&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Students&#039;&#039;&#039;&lt;br /&gt;
| From contains &amp;lt;code&amp;gt;@edu.ph&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;student&amp;lt;/code&amp;gt;&lt;br /&gt;
| Students&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Interns&#039;&#039;&#039;&lt;br /&gt;
| Subject or Body contains &amp;lt;code&amp;gt;intern&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OJT&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;training&amp;lt;/code&amp;gt;&lt;br /&gt;
| Interns&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Capstones&#039;&#039;&#039;&lt;br /&gt;
| Subject contains &amp;lt;code&amp;gt;capstone&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;project&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;final defense&amp;lt;/code&amp;gt;&lt;br /&gt;
| Capstones&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;Match any of the following rules&#039;&#039;&#039; for each filter so that related emails are automatically grouped.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 5: Save the Filters ==&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Save &amp;amp; Close&#039;&#039;&#039; or &#039;&#039;&#039;Apply Changes&#039;&#039;&#039; after setting each filter.&lt;br /&gt;
* Test by sending sample messages (with keywords like &amp;quot;Invitation:&amp;quot; or &amp;quot;Capstone&amp;quot;) to confirm correct routing.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 6: Verify &amp;amp; Refine ==&lt;br /&gt;
&lt;br /&gt;
* Review your folders after a few days to ensure emails are being categorized correctly.&lt;br /&gt;
* Add or edit conditions if some emails are missed (for example, new sender domains or different subject formats).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
This configuration helps you centralize events, organizational approvals, and student or intern communication while keeping your inbox clean and organized.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Google_Drive_and_Shared_Drive_Training&amp;diff=41</id>
		<title>Google Drive and Shared Drive Training</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Google_Drive_and_Shared_Drive_Training&amp;diff=41"/>
		<updated>2026-02-25T06:55:30Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= 251028 DDC-OP-01 Google Drive and Shared Drive Training = &amp;#039;&amp;#039;Comfac Group of Companies&amp;#039;&amp;#039;  ----  == Objectives ==  To train all departments of the Comfac Group of Companies in the proper and efficient use of Google Drive (GDrive) and Shared Drives as a centralized platform for document management, collaboration, and information accessibility.  === Key Result Areas (KRAs) === * Ensure end users have &amp;#039;&amp;#039;&amp;#039;convenient and automated backups&amp;#039;&amp;#039;&amp;#039; of their work and files through Go...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 251028 DDC-OP-01 Google Drive and Shared Drive Training =&lt;br /&gt;
&#039;&#039;Comfac Group of Companies&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
To train all departments of the Comfac Group of Companies in the proper and efficient use of Google Drive (GDrive) and Shared Drives as a centralized platform for document management, collaboration, and information accessibility.&lt;br /&gt;
&lt;br /&gt;
=== Key Result Areas (KRAs) ===&lt;br /&gt;
* Ensure end users have &#039;&#039;&#039;convenient and automated backups&#039;&#039;&#039; of their work and files through Google Drive and Shared Drive integration.&lt;br /&gt;
* Ensure all staff have &#039;&#039;&#039;continuous access&#039;&#039;&#039; to their files, folders, and backups from any authorized device.&lt;br /&gt;
* Promote &#039;&#039;&#039;collaborative document use&#039;&#039;&#039; as the &#039;&#039;Single Source of Truth (SSOT)&#039;&#039; — meaning documents edited and finalized collaboratively in GDrive become the official record, eliminating after-the-fact consolidation.&lt;br /&gt;
* Standardize naming conventions and folder structures across departments.&lt;br /&gt;
* Support ISO-compliant document control and traceability.&lt;br /&gt;
&lt;br /&gt;
=== Expected Deliverables ===&lt;br /&gt;
* Trained users capable of managing Shared Drive folders and automated backup workflows.&lt;br /&gt;
* Departmental compliance with naming conventions and backup procedures.&lt;br /&gt;
* Improved accessibility and version control through collaboration-based workflows.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
The Comfac Group transitioned to Google Workspace to improve coordination, reliability, and document access. Challenges in version control, lost files, and uncoordinated backups necessitated a standardized procedure for file organization, backup, and collaboration. This training ensures every employee can securely store, back up, and share files without reliance on manual or redundant saving methods.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
&lt;br /&gt;
This document applies to all departments within the Comfac Group using Google Workspace. It defines the process for training, file backup automation, and collaborative document management using Google Drive and Shared Drives.&lt;br /&gt;
&lt;br /&gt;
=== Activities and Methodologies ===&lt;br /&gt;
* Structured training sessions on GDrive and Shared Drive fundamentals.&lt;br /&gt;
* Hands-on exercises in file sharing, access control, and real-time collaboration.&lt;br /&gt;
* Implementation of automatic synchronization through Google Drive for Desktop.&lt;br /&gt;
* Demonstration of how collaborative documents function as live SSOT records.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Estimated Duration:&#039;&#039;&#039; 1.5–2 hours per training session.&lt;br /&gt;
* &#039;&#039;&#039;Resources:&#039;&#039;&#039; Standard IT training setup, 1 trainer, and 1–2 facilitators.&lt;br /&gt;
&lt;br /&gt;
=== System Requirements ===&lt;br /&gt;
* Browser: Google Chrome (latest version)&lt;br /&gt;
* Internet: Minimum 1 Mbps stable connection&lt;br /&gt;
* RAM: 4 GB or higher&lt;br /&gt;
* Google Workspace account under company domain&lt;br /&gt;
* Google Drive for Desktop (for automated backup)&lt;br /&gt;
* Access to departmental Shared Drives&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
; Single Source of Truth (SSOT)&lt;br /&gt;
: In the context of Google Drive collaboration, the live and collaboratively edited document is the official reference — replacing redundant versions or re-uploaded files.&lt;br /&gt;
&lt;br /&gt;
; Shared Drive&lt;br /&gt;
: Centralized company-managed drive ensuring data persistence and continuity even if members leave.&lt;br /&gt;
&lt;br /&gt;
; My Drive&lt;br /&gt;
: Individual user&#039;s workspace for temporary or personal files, subject to manual backup if not synchronized.&lt;br /&gt;
&lt;br /&gt;
; Automated Backup&lt;br /&gt;
: Continuous file synchronization between local storage and GDrive via Google Drive for Desktop.&lt;br /&gt;
&lt;br /&gt;
; Account Control&lt;br /&gt;
: The company&#039;s ability to revoke or transfer access to GDrive and Shared Drive data through IT for data continuity and security.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;DDC-OP03&#039;&#039;&#039; – Control of Documents in GDrive&lt;br /&gt;
* &#039;&#039;&#039;17-04-03&#039;&#039;&#039; – Google Drive Training (Legacy 2017 Version)&lt;br /&gt;
* &#039;&#039;&#039;Shared Drives and Backups (Dec 2024)&#039;&#039;&#039;&lt;br /&gt;
* [https://support.google.com/a/users/answer/9308868 Google Workspace Sharing Guide]&lt;br /&gt;
* [https://support.google.com/drive/answer/7329379 Google Drive for Desktop Sync]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Responsible ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Role&lt;br /&gt;
! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SSD Manager&#039;&#039;&#039;&lt;br /&gt;
| Oversees creation of Shared Drive folders, monitors backup compliance, and validates structure.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Department Managers&#039;&#039;&#039;&lt;br /&gt;
| Ensure staff participation in training, verify backup setup, and maintain document integrity.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IT Department&#039;&#039;&#039;&lt;br /&gt;
| Provides access, backup configuration, and troubleshooting; manages account control and data transfer.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Trainers/Facilitators&#039;&#039;&#039;&lt;br /&gt;
| Conduct and document training, verify successful setup of Drive sync and Shared Drive access.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;All Employees&#039;&#039;&#039;&lt;br /&gt;
| Maintain their file organization, ensure Drive backup is active, and use Shared Drives for collaboration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Procedure ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Preparation Phase ===&lt;br /&gt;
* Verify workstation readiness: internet, browser, and Drive access.&lt;br /&gt;
* Coordinate with IT to ensure Google Drive for Desktop is installed.&lt;br /&gt;
* Preload training materials and Shared Drive examples.&lt;br /&gt;
&lt;br /&gt;
=== 2. Training Session ===&lt;br /&gt;
&lt;br /&gt;
==== Module 1: GDrive and Shared Drive Fundamentals ====&lt;br /&gt;
* Explain My Drive vs Shared Drive ownership and security.&lt;br /&gt;
* Demonstrate automated file synchronization and backup setup.&lt;br /&gt;
* Configure Google Drive for Desktop for real-time cloud sync.&lt;br /&gt;
* Explain file version recovery and offline editing.&lt;br /&gt;
&lt;br /&gt;
==== Module 2: Folder Hierarchy and Naming Convention ====&lt;br /&gt;
* Use standard naming: &amp;lt;code&amp;gt;ProjectName + SO#&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ProjectName + JO# + Department&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Demonstrate access inheritance and subfolder management.&lt;br /&gt;
* Create shortcuts for cross-departmental references.&lt;br /&gt;
&lt;br /&gt;
==== Module 3: Collaboration and File Ownership ====&lt;br /&gt;
* Demonstrate real-time collaboration on Docs, Sheets, and Slides.&lt;br /&gt;
* Discuss how collaborative versions eliminate redundant edits.&lt;br /&gt;
* Apply commenting (&amp;lt;code&amp;gt;Ctrl + Alt + M&amp;lt;/code&amp;gt;) and linking (&amp;lt;code&amp;gt;Ctrl + K&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Set document protections and explain version history for audit trail.&lt;br /&gt;
* Explain &#039;&#039;&#039;Sharing Controls&#039;&#039;&#039;, including using Groups or individual users for sharing and setting &#039;&#039;&#039;Expiring Permissions&#039;&#039;&#039; for temporary access.&lt;br /&gt;
* Highlight that Google provides &#039;&#039;&#039;reports identifying publicly shared documents&#039;&#039;&#039; within the organization.&lt;br /&gt;
* Demonstrate how to view document activity:&lt;br /&gt;
** In Docs: go to &#039;&#039;&#039;Tools &amp;gt; Activity Dashboard&#039;&#039;&#039; to see who viewed the document.&lt;br /&gt;
** In Drive: use &#039;&#039;&#039;Right-click &amp;gt; File Information &amp;gt; Activity&#039;&#039;&#039; to see recent file actions.&lt;br /&gt;
&lt;br /&gt;
==== Module 4: Backup Management and Verification ====&lt;br /&gt;
* Walkthrough: verify Drive sync status on desktop and web.&lt;br /&gt;
* Demonstrate recovering files from Trash or version history.&lt;br /&gt;
* Ensure key folders (Desktop, Documents, Projects) are synced to GDrive.&lt;br /&gt;
&lt;br /&gt;
=== 3. Post-Training Implementation ===&lt;br /&gt;
* Department heads confirm all users have functioning Drive backup and access.&lt;br /&gt;
* SSD audits folder structures and permissions quarterly.&lt;br /&gt;
* IT verifies backup logs and storage quota status monthly.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* Attendance and feedback from trainees.&lt;br /&gt;
* Record of Drive sync installations and account verifications.&lt;br /&gt;
* Backup compliance reports and periodic review results.&lt;br /&gt;
* Confirmation from managers of collaborative workflow adoption.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Drive Backup Setup Example ===&lt;br /&gt;
My Drive → Shared Drive → Local Sync&lt;br /&gt;
&lt;br /&gt;
=== Standard Folder Hierarchy ===&lt;br /&gt;
Root → Department → Project&lt;br /&gt;
&lt;br /&gt;
=== Google Drive Hotkeys Reference ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Shortcut&lt;br /&gt;
! Action&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Ctrl + /&amp;lt;/code&amp;gt;&lt;br /&gt;
| View hotkeys&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Ctrl + Tab&amp;lt;/code&amp;gt;&lt;br /&gt;
| Switch tabs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;F11&amp;lt;/code&amp;gt;&lt;br /&gt;
| Full screen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Ctrl + \&amp;lt;/code&amp;gt;&lt;br /&gt;
| Clear formatting&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Tplink_Mikrotik_Equivalent&amp;diff=40</id>
		<title>Tplink Mikrotik Equivalent</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Tplink_Mikrotik_Equivalent&amp;diff=40"/>
		<updated>2026-02-25T06:55:02Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= TP-Link vs MikroTik: Switch Equivalents and Non-China Alternatives =  ----  == TP-Link vs MikroTik Switch Comparison (Lazada Philippines) ==  {| class=&amp;quot;wikitable&amp;quot; |- ! TP-Link Model ! Description (Ports, PoE Budget, Layer Support) ! Lazada Price ! MikroTik Equivalent ! Lazada Price |- | [https://www.lazada.com.ph/products/tp-link-tl-sg3424-24-port-gigabit-l2-managed-switch-i149548514-s176532765.html &amp;#039;&amp;#039;&amp;#039;TL-SG3424&amp;#039;&amp;#039;&amp;#039;] | 24-Port Gigabit Managed Switch (No PoE, Layer 2) |...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TP-Link vs MikroTik: Switch Equivalents and Non-China Alternatives =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== TP-Link vs MikroTik Switch Comparison (Lazada Philippines) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! TP-Link Model&lt;br /&gt;
! Description (Ports, PoE Budget, Layer Support)&lt;br /&gt;
! Lazada Price&lt;br /&gt;
! MikroTik Equivalent&lt;br /&gt;
! Lazada Price&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg3424-24-port-gigabit-l2-managed-switch-i149548514-s176532765.html &#039;&#039;&#039;TL-SG3424&#039;&#039;&#039;]&lt;br /&gt;
| 24-Port Gigabit Managed Switch (No PoE, Layer 2)&lt;br /&gt;
| ₱8,900&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-crs326-24g-2srm-cloud-router-switch-24-gigabit-port-switch-w-2-sfp-cages-in-1u-rackmount-case-dual-boot-routeros-or-switchos-crs326-i627130727.html &#039;&#039;&#039;CSS326-24G-2S+RM&#039;&#039;&#039;]&lt;br /&gt;
| ₱10,049&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg2210mp-jetstream-10-port-gigabit-smart-switch-with-8-poe-ports-i1695704721.html &#039;&#039;&#039;TL-SG2210MP&#039;&#039;&#039;]&lt;br /&gt;
| 10-Port Gigabit Smart Switch (8 PoE+, 150W, Layer 2+)&lt;br /&gt;
| ₱10,990&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-crs112-8p-4s-in-cloud-router-switch-i647127116.html &#039;&#039;&#039;CRS112-8P-4S-IN&#039;&#039;&#039;]&lt;br /&gt;
| ₱12,359&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg1024de-24-port-gigabit-easy-smart-switch-i111305859-s113784783.html &#039;&#039;&#039;TL-SG1024DE&#039;&#039;&#039;]&lt;br /&gt;
| 24-Port Gigabit Easy Smart (No PoE, Layer 2)&lt;br /&gt;
| ₱4,000&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-crs326-24g-2srm-cloud-router-switch-24-gigabit-port-switch-w-2-sfp-cages-in-1u-rackmount-case-dual-boot-routeros-or-switchos-crs326-i627130727.html &#039;&#039;&#039;CSS326-24G-2S+RM&#039;&#039;&#039;]&lt;br /&gt;
| ₱10,049&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg108pe-8-port-gigabit-easy-smart-switch-4-port-poe-i138322841.html &#039;&#039;&#039;TL-SG108PE&#039;&#039;&#039;]&lt;br /&gt;
| 8-Port Gigabit Easy Smart (4 PoE+, 55W, Layer 2)&lt;br /&gt;
| ₱4,295&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-rb260gsp-5-port-gigabit-smart-switch-with-poe-out-i629619412.html &#039;&#039;&#039;RB260GSP&#039;&#039;&#039;]&lt;br /&gt;
| ₱3,950&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg3428-jetstream-24-port-gigabit-l2-managed-switch-with-4-10g-sfp-i1642355581.html &#039;&#039;&#039;TL-SG3428&#039;&#039;&#039;]&lt;br /&gt;
| 24-Port Gigabit Managed (No PoE, Layer 2+)&lt;br /&gt;
| ₱17,999&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-crs326-24g-2srm-cloud-router-switch-24-gigabit-port-switch-w-2-sfp-cages-in-1u-rackmount-case-dual-boot-routeros-or-switchos-crs326-i627130727.html &#039;&#039;&#039;CSS326-24G-2S+RM&#039;&#039;&#039;]&lt;br /&gt;
| ₱10,049&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.lazada.com.ph/products/tp-link-tl-sg2218-jetstream-16-port-gigabit-smart-switch-with-2-sfp-slots-i1782234235.html &#039;&#039;&#039;TL-SG2218&#039;&#039;&#039;]&lt;br /&gt;
| 16-Port Gigabit Smart (No PoE, Layer 2+)&lt;br /&gt;
| ₱8,299&lt;br /&gt;
| [https://www.lazada.com.ph/products/mikrotik-css318-16g-2s-in-smart-switch-i647127120.html &#039;&#039;&#039;CSS318-16G-2S+IN&#039;&#039;&#039;]&lt;br /&gt;
| ₱8,699&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Footnotes ===&lt;br /&gt;
* Verify MikroTik specifications (Layer support, PoE wattage, uplink ports) before procurement; listings can vary slightly by seller.&lt;br /&gt;
* Prices are indicative; check Lazada for current rates.&lt;br /&gt;
* MikroTik &amp;lt;code&amp;gt;CSS&amp;lt;/code&amp;gt; series uses &#039;&#039;&#039;SwitchOS&#039;&#039;&#039;, while &amp;lt;code&amp;gt;CRS&amp;lt;/code&amp;gt; supports both &#039;&#039;&#039;RouterOS&#039;&#039;&#039; and &#039;&#039;&#039;SwitchOS&#039;&#039;&#039; for flexible management.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== China (TP-Link) Alternatives in Network Equipment ==&lt;br /&gt;
&lt;br /&gt;
=== Context ===&lt;br /&gt;
China-based brands like TP-Link have dominated the low- to mid-tier networking market for years. However, growing concerns over supply chain dependency, firmware transparency, and data sovereignty are pushing integrators and IT managers to explore &#039;&#039;&#039;non-China alternatives&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 1. Japan: The Exit of NEC and the Void Left Behind ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;NEC&#039;s Exit (2024):&#039;&#039;&#039; NEC formally exited the network hardware market segment outside of its enterprise and telco contracts. Its managed switch line was phased out due to declining margins and internal restructuring to focus on core telecom and AI services.&lt;br /&gt;
* &#039;&#039;&#039;Impact:&#039;&#039;&#039; Left a vacuum in the mid-tier enterprise segment that Japan once filled with dependable, security-oriented equipment.&lt;br /&gt;
* &#039;&#039;&#039;Current Japanese Presence:&#039;&#039;&#039; Companies like Furukawa Electric and Hitachi Kokusai retain niche positions but not in the mass-market switch or router sectors. Japan remains strong in industrial automation networking (Ethernet/IP, Profinet, etc.), but &#039;&#039;&#039;not in general managed switches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 2. European Alternatives ===&lt;br /&gt;
&lt;br /&gt;
==== MikroTik (Latvia) ====&lt;br /&gt;
* &#039;&#039;&#039;Positioning:&#039;&#039;&#039; The strongest European alternative to TP-Link in terms of affordability and feature set.&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Switches (CSS and CRS series), routers, access points, and carrier-grade routing systems.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; RouterOS flexibility, strong VLAN/QoS/Layer3-lite functions, and open configuration environment.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Steeper learning curve; smaller support network in the Philippines.&lt;br /&gt;
&lt;br /&gt;
==== Ubiquiti (USA/European operations in Lithuania and Poland) ====&lt;br /&gt;
* &#039;&#039;&#039;Positioning:&#039;&#039;&#039; Hybrid US/EU company with European manufacturing.&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; UniFi switches, Dream Machine routers, and APs.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Ecosystem integration, solid software controller, strong community support.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Closed ecosystem, proprietary controller dependencies, and higher pricing.&lt;br /&gt;
&lt;br /&gt;
==== D-Link (originally Taiwan, now with EU and SEA ops) ====&lt;br /&gt;
* &#039;&#039;&#039;Positioning:&#039;&#039;&#039; Transitional vendor between budget and enterprise space.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Widely available, established Philippine distribution.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Limited innovation; slower firmware updates.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3. Taiwan&#039;s Offerings ===&lt;br /&gt;
&lt;br /&gt;
==== Zyxel (Taiwan) ====&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Managed switches, security gateways, and WiFi access points.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Strong SMB presence, cloud-managed Nebula platform, and robust after-sales support in Asia.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Slightly higher cost per port than TP-Link; Nebula licensing for some features.&lt;br /&gt;
&lt;br /&gt;
==== QNAP (Taiwan) ====&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Primarily NAS but offers high-performance managed switches (QSW series).&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; High-speed 2.5G/10G switching integrated with NAS environments.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Limited management features; geared toward small offices and media setups.&lt;br /&gt;
&lt;br /&gt;
==== Edgecore Networks (Taiwan) ====&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Enterprise and telco-grade managed switches, open networking hardware (ONIE, SONiC).&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Open networking capability; used by hyperscalers (Facebook, Google).&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Requires advanced network engineering knowledge; limited retail availability.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 4. South Korea&#039;s Options ===&lt;br /&gt;
&lt;br /&gt;
==== Dasan Zhone Solutions (DZS) ====&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Managed switches, GPON/EPON access systems, and broadband access gear.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Industrial-grade reliability; active telco partnerships in SEA.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Higher price point; limited consumer and SMB presence.&lt;br /&gt;
&lt;br /&gt;
==== HFR Networks ====&lt;br /&gt;
* &#039;&#039;&#039;Product Range:&#039;&#039;&#039; Metro Ethernet and 5G backhaul systems.&lt;br /&gt;
* &#039;&#039;&#039;Strengths:&#039;&#039;&#039; Strong in enterprise-grade and telco deployments.&lt;br /&gt;
* &#039;&#039;&#039;Weaknesses:&#039;&#039;&#039; Minimal SMB presence; not cost-competitive for general IT infrastructure.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 5. Distribution &amp;amp; Supply Chain Notes ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VST-ECS Lock-In:&#039;&#039;&#039; Many mainstream brands (TP-Link, D-Link, Ubiquiti, Hikvision) in the Philippines are distributed through &#039;&#039;&#039;VST-ECS&#039;&#039;&#039;, creating a bottleneck and potential conflict of interest for integrators seeking vendor-neutral sourcing.&lt;br /&gt;
* &#039;&#039;&#039;Alternative Channels:&#039;&#039;&#039; European and Taiwanese brands (MikroTik, Zyxel, Edgecore) are increasingly available through &#039;&#039;&#039;independent online retailers&#039;&#039;&#039; or &#039;&#039;&#039;direct procurement via EU warehouses&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 6. Summary: Strategic Direction for Migration ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Region&lt;br /&gt;
! Brand&lt;br /&gt;
! Market Position&lt;br /&gt;
! Pros&lt;br /&gt;
! Cons&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Europe&#039;&#039;&#039;&lt;br /&gt;
| MikroTik&lt;br /&gt;
| Affordable Enterprise&lt;br /&gt;
| High configurability, open OS&lt;br /&gt;
| Steep learning curve&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Europe/US&#039;&#039;&#039;&lt;br /&gt;
| Ubiquiti&lt;br /&gt;
| Ecosystem-Driven&lt;br /&gt;
| Integrated UI, wide support&lt;br /&gt;
| Proprietary control, cost&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Taiwan&#039;&#039;&#039;&lt;br /&gt;
| Zyxel&lt;br /&gt;
| SMB/Enterprise Hybrid&lt;br /&gt;
| Nebula Cloud Mgmt, reliable&lt;br /&gt;
| Subscription overhead&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Taiwan&#039;&#039;&#039;&lt;br /&gt;
| Edgecore&lt;br /&gt;
| Enterprise/Open Networking&lt;br /&gt;
| SONiC/ONIE support&lt;br /&gt;
| Requires network expertise&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;South Korea&#039;&#039;&#039;&lt;br /&gt;
| DZS&lt;br /&gt;
| Telco/Industrial&lt;br /&gt;
| Robust hardware&lt;br /&gt;
| Expensive, limited SMB support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion:&#039;&#039;&#039; Migrating away from TP-Link and other China-based brands means adopting a mixed-vendor European and Taiwanese stack. MikroTik offers the most practical step for early migration due to its affordability and feature parity, while Zyxel and Edgecore can be integrated gradually for higher-end deployments.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== MikroTik Wireless Devices Overview ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Model&lt;br /&gt;
! Description&lt;br /&gt;
! Price (PHP, ₱80/USD)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/audience &#039;&#039;&#039;Audience&#039;&#039;&#039;]&lt;br /&gt;
| Tri-band mesh WiFi (2.4 GHz + dual 5 GHz), RouterOS powered, PoE-in, ideal for large homes or offices.&lt;br /&gt;
| ₱13,520&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/hap_ax3 &#039;&#039;&#039;hAP ax³&#039;&#039;&#039;]&lt;br /&gt;
| WiFi 6 router, dual-band 2.4 GHz + 5 GHz, quad-core ARM CPU, 1 GB RAM, 5× Gigabit Ethernet.&lt;br /&gt;
| ₱14,320 (US $179)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/cap_ax &#039;&#039;&#039;cAP ax&#039;&#039;&#039;]&lt;br /&gt;
| Ceiling-mounted dual-band WiFi 6 AP, designed for enterprise or campus mesh networks, PoE-in supported.&lt;br /&gt;
| ₱9,520 (US $119)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/chateau_5g &#039;&#039;&#039;Chateau 5G&#039;&#039;&#039;]&lt;br /&gt;
| Dual-band WiFi 5 router with built-in 5G NR modem, 5× Gigabit ports, LTE/5G WAN redundancy.&lt;br /&gt;
| ₱36,000 (US $450)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/chateau_lte12 &#039;&#039;&#039;Chateau LTE12&#039;&#039;&#039;]&lt;br /&gt;
| Dual-band WiFi 5 router with CAT12 LTE modem, ideal for areas with limited wired internet access.&lt;br /&gt;
| ₱16,800 (US $210)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/lhg_lte6_kit &#039;&#039;&#039;LHG LTE6 Kit&#039;&#039;&#039;]&lt;br /&gt;
| Outdoor LTE CPE with 17 dBi antenna, long-range rural connectivity, PoE-in support, single Ethernet port.&lt;br /&gt;
| ₱9,600 (US $120)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/wap_ac &#039;&#039;&#039;wAP ac&#039;&#039;&#039;]&lt;br /&gt;
| Weatherproof dual-band (2.4 GHz + 5 GHz) access point for outdoor installations, compact form factor.&lt;br /&gt;
| ₱5,360 (US $67)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/ldf_lte6_kit &#039;&#039;&#039;LDF LTE6 Kit&#039;&#039;&#039;]&lt;br /&gt;
| Outdoor LTE CPE designed to fit standard satellite dishes, increasing range for remote connectivity.&lt;br /&gt;
| ₱8,000 (US $100)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/hap_ax2 &#039;&#039;&#039;hAP ax²&#039;&#039;&#039;]&lt;br /&gt;
| Compact WiFi 6 router, dual-band, 4× Gigabit ports, optimized for small offices and home networks.&lt;br /&gt;
| ₱9,520 (US $119)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/wap_ax &#039;&#039;&#039;wAP ax&#039;&#039;&#039; (wAPG-5HaxD2HaxD)]&lt;br /&gt;
| Weatherproof dual-band WiFi 6 AP with 2× Gigabit Ethernet, PoE-in and DC jack, RouterOS v7. &#039;&#039;&#039;Available stock via United Plexus.&#039;&#039;&#039;&lt;br /&gt;
| ₱5,250 (VAT INC)&lt;br /&gt;
|-&lt;br /&gt;
| [https://mikrotik.com/product/cap_ax &#039;&#039;&#039;cAP ax&#039;&#039;&#039; (RbcAPGi-5HaxD2HaxD)]&lt;br /&gt;
| Ceiling-mount WiFi 6 AP with PoE-in and PoE-out, 1 GB RAM, quad-core CPU, optimized for enterprise deployment. &#039;&#039;&#039;ETA mid-Nov via United Plexus.&#039;&#039;&#039;&lt;br /&gt;
| ₱7,600 (VAT INC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Summary Notes ===&lt;br /&gt;
* Prices converted at &#039;&#039;&#039;₱80 per USD&#039;&#039;&#039;, unless otherwise noted as VAT INC.&lt;br /&gt;
* Models from &#039;&#039;&#039;United Plexus&#039;&#039;&#039;: wAP ax (current stock) and cAP ax (mid-Nov arrival).&lt;br /&gt;
* Most models support &#039;&#039;&#039;RouterOS v7&#039;&#039;&#039; and PoE-in for flexible deployment.&lt;br /&gt;
* WiFi 6 models (hAP ax², hAP ax³, cAP ax, wAP ax) are recommended for future-proof installations.&lt;br /&gt;
* LTE/5G models (Chateau series, LHG LTE6, LDF LTE6) provide strong options for off-grid or rural connectivity.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=2026_MIS_IT_KRA_KPI_Biz_Plan&amp;diff=39</id>
		<title>2026 MIS IT KRA KPI Biz Plan</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=2026_MIS_IT_KRA_KPI_Biz_Plan&amp;diff=39"/>
		<updated>2026-02-25T06:54:39Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= 2026 MIS IT KRA KPI Business Plan =  == IT Request Management and Turnaround Time Monitoring ==  &amp;#039;&amp;#039;&amp;#039;Objective:&amp;#039;&amp;#039;&amp;#039; Efficiently manage and resolve IT requests to ensure minimal downtime and maintain high service levels. Establish and monitor turnaround time for IT requests to enhance efficiency and service quality.  === KPI === * &amp;#039;&amp;#039;&amp;#039;Review Time:&amp;#039;&amp;#039;&amp;#039; 3 calendar days (≈2 workdays) * &amp;#039;&amp;#039;&amp;#039;Task Time:&amp;#039;&amp;#039;&amp;#039; 3 calendar days (≈2 workdays) * &amp;#039;&amp;#039;&amp;#039;Repairs &amp;amp; Emergencies:&amp;#039;&amp;#039;&amp;#039; SLA &amp;lt; 1 da...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2026 MIS IT KRA KPI Business Plan =&lt;br /&gt;
&lt;br /&gt;
== IT Request Management and Turnaround Time Monitoring ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Efficiently manage and resolve IT requests to ensure minimal downtime and maintain high service levels. Establish and monitor turnaround time for IT requests to enhance efficiency and service quality.&lt;br /&gt;
&lt;br /&gt;
=== KPI ===&lt;br /&gt;
* &#039;&#039;&#039;Review Time:&#039;&#039;&#039; 3 calendar days (≈2 workdays)&lt;br /&gt;
* &#039;&#039;&#039;Task Time:&#039;&#039;&#039; 3 calendar days (≈2 workdays)&lt;br /&gt;
* &#039;&#039;&#039;Repairs &amp;amp; Emergencies:&#039;&#039;&#039; SLA &amp;lt; 1 day&lt;br /&gt;
&lt;br /&gt;
=== Plan / Program ===&lt;br /&gt;
* Daily monitoring by &#039;&#039;&#039;Justin, Avie, Jun, and Mike&#039;&#039;&#039; using ERPNext:&lt;br /&gt;
** [https://erp1.cornersteelsystems.com/app/task?name=%5B%22like%22%2C%22%25ITR%25%22%5D ITR List]&lt;br /&gt;
** [https://erp1.cornersteelsystems.com/app/dashboard-view/ITR%20DASHBOARD Dashboard]&lt;br /&gt;
* Ensure all tickets are assigned, acknowledged, and have receipt confirmation.&lt;br /&gt;
* Dashboards show SLA by category (Access, IT Equipment, Admin Services, etc.) with 4.5-day SLA targets.&lt;br /&gt;
* Analyze trends to reduce delays and improve workflows.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Secure and Protect Company Information Systems and Hardware ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objective:&#039;&#039;&#039; Ensure protection and continuous availability of all company IT assets through documented preventive maintenance, security protocols, and role-based accountability.&lt;br /&gt;
&lt;br /&gt;
=== KPI ===&lt;br /&gt;
* Document IT preventive maintenance and security scope.&lt;br /&gt;
* Complete duty and procedure listings by &#039;&#039;&#039;Feb 2026&#039;&#039;&#039;.&lt;br /&gt;
* Integrate documentation into MIS IT Procedure Plan.&lt;br /&gt;
&lt;br /&gt;
=== Plan / Program ===&lt;br /&gt;
* Maintain a [https://erp.comfac-it.com/wiki/home wiki-based documentation system].&lt;br /&gt;
* Consolidate Risk Management Plan + Biz Plan into one MIS Action Plan.&lt;br /&gt;
* Require IT sub-teams (ERPNext, Network, Support, QMS) to submit duties.&lt;br /&gt;
* Conduct monthly compliance checks via dashboards.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Note&lt;br /&gt;
! Detail&lt;br /&gt;
|-&lt;br /&gt;
| SLA Duration Basis&lt;br /&gt;
| SLA durations are logged in &#039;&#039;&#039;calendar days&#039;&#039;&#039;. To compare with working days, apply a &#039;&#039;&#039;1.4 multiplier&#039;&#039;&#039; (1 workday × 1.4 = 1.4 calendar days). Therefore, 3 calendar days ≈ 2 working days.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Reference Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://next.comfaccorp.com/f/169723 2026 MIS IT KRA KPI Biz Plan]&lt;br /&gt;
* [https://next.comfaccorp.com/f/73709 2026 Risk and Opportunities]&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/19_AjOFAdVgNHF42QUCs8KcC6LNzyf340f_zWQnY1vYk/edit?gid=1459534687#gid=1459534687 251027 Cornersteel Users]&lt;br /&gt;
* [https://next.comfaccorp.com/s/qtpzGJbZaxjNAHt 2024 Audit Findings – No Risk and Opportunities Plan]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=SALES_INVOICE_TAX_OUTPUT_250829&amp;diff=38</id>
		<title>SALES INVOICE TAX OUTPUT 250829</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=SALES_INVOICE_TAX_OUTPUT_250829&amp;diff=38"/>
		<updated>2026-02-25T06:54:14Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Sales Invoice Tax Output Report =  This page documents the development history and SQL query versions for the &amp;#039;&amp;#039;&amp;#039;Sales Invoice Tax Output&amp;#039;&amp;#039;&amp;#039; custom report in ERPNext. It is used to extract VAT output tax data per sales invoice, including customer tax IDs, payment references, project links, and item descriptions.  ----  == Report Columns ==  The final report includes the following columns:  * &amp;#039;&amp;#039;&amp;#039;Posting Date&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;Sales Invoice ID&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;Customer Tax ID&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;Custo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sales Invoice Tax Output Report =&lt;br /&gt;
&lt;br /&gt;
This page documents the development history and SQL query versions for the &#039;&#039;&#039;Sales Invoice Tax Output&#039;&#039;&#039; custom report in ERPNext. It is used to extract VAT output tax data per sales invoice, including customer tax IDs, payment references, project links, and item descriptions.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Report Columns ==&lt;br /&gt;
&lt;br /&gt;
The final report includes the following columns:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Posting Date&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Sales Invoice ID&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Customer Tax ID&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Customer&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Invoice Total&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Grand Total&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Amount (Sales Taxes and Charges)&#039;&#039;&#039; – VAT Output filtered by account head&lt;br /&gt;
* &#039;&#039;&#039;Sales Orders ID (via Project)&#039;&#039;&#039; – SO linked through project dimension (preferred)&lt;br /&gt;
* &#039;&#039;&#039;Sales Orders ID (from Items)&#039;&#039;&#039; – SO directly on SI items (secondary)&lt;br /&gt;
* &#039;&#039;&#039;Payment ID&#039;&#039;&#039; – Payment Entry references&lt;br /&gt;
* &#039;&#039;&#039;Account Head (Sales Taxes and Charges)&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Debit To&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Against Income Account&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Project&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Projects/JO (List)&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Query Version History ==&lt;br /&gt;
&lt;br /&gt;
=== 250829 – Initial Version (Missing Description and SO) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    si.posting_date                  AS &amp;quot;Posting Date:Date:100&amp;quot;,&lt;br /&gt;
    si.name                          AS &amp;quot;Sales Invoice ID:Link/Sales Invoice:140&amp;quot;,&lt;br /&gt;
    cust.tax_id                      AS &amp;quot;Customer Tax ID:Data:150&amp;quot;,&lt;br /&gt;
    si.customer                      AS &amp;quot;Customer:Data:200&amp;quot;,&lt;br /&gt;
    si.total                         AS &amp;quot;Invoice Total:Currency:150&amp;quot;,&lt;br /&gt;
    si.grand_total                   AS &amp;quot;Grand Total:Currency:150&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT COALESCE(SUM(stc.tax_amount_after_discount_amount), 0)&lt;br /&gt;
        FROM `tabSales Taxes and Charges` stc&lt;br /&gt;
        WHERE stc.parent = si.name&lt;br /&gt;
          AND stc.account_head = &#039;2506 - VATOUTPUT TAXES PAYABLE - ESCO&#039;&lt;br /&gt;
    ) AS &amp;quot;Amount (Sales Taxes and Charges):Currency:140&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT sii.sales_order SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii&lt;br /&gt;
        WHERE sii.parent = si.name AND sii.sales_order IS NOT NULL&lt;br /&gt;
    ) AS &amp;quot;Sales Orders ID:Data:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT per.parent SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabPayment Entry Reference` per&lt;br /&gt;
        WHERE per.reference_doctype = &#039;Sales Invoice&#039;&lt;br /&gt;
          AND per.reference_name = si.name&lt;br /&gt;
    ) AS &amp;quot;Payment ID:Link/Payment Entry:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT stc2.account_head&lt;br /&gt;
        FROM `tabSales Taxes and Charges` stc2&lt;br /&gt;
        WHERE stc2.parent = si.name&lt;br /&gt;
          AND stc2.account_head = &#039;2506 - VATOUTPUT TAXES PAYABLE - ESCO&#039;&lt;br /&gt;
        LIMIT 1&lt;br /&gt;
    ) AS &amp;quot;Account Head (Sales Taxes and Charges):Data:240&amp;quot;,&lt;br /&gt;
    si.debit_to                      AS &amp;quot;Debit To:Link/Account:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT sii3.income_account SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii3&lt;br /&gt;
        WHERE sii3.parent = si.name&lt;br /&gt;
    ) AS &amp;quot;Against Income Account:Data:220&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT sii2.project&lt;br /&gt;
        FROM `tabSales Invoice Item` sii2&lt;br /&gt;
        WHERE sii2.parent = si.name AND IFNULL(sii2.project, &#039;&#039;) != &#039;&#039;&lt;br /&gt;
        LIMIT 1&lt;br /&gt;
    ) AS &amp;quot;Project:Link/Project:120&amp;quot;,&lt;br /&gt;
    si.remarks                       AS &amp;quot;Remarks:Data:250&amp;quot;&lt;br /&gt;
FROM `tabSales Invoice` si&lt;br /&gt;
LEFT JOIN `tabCustomer` cust ON cust.name = si.customer&lt;br /&gt;
WHERE si.docstatus = 1&lt;br /&gt;
  AND si.company = %(company)s&lt;br /&gt;
  AND si.posting_date BETWEEN %(from_date)s AND %(to_date)s&lt;br /&gt;
ORDER BY si.posting_date, si.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 250829 – Final Version (Added Description, SO via Project, Projects List) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Key changes:&#039;&#039;&#039;&lt;br /&gt;
* Moved SO ID column to use &#039;&#039;&#039;project dimension&#039;&#039;&#039; (more reliable linkage).&lt;br /&gt;
* Kept SO ID via items as a secondary column.&lt;br /&gt;
* Added &#039;&#039;&#039;Description&#039;&#039;&#039; column (from SI item descriptions/names).&lt;br /&gt;
* Added &#039;&#039;&#039;Projects/JO (List)&#039;&#039;&#039; column.&lt;br /&gt;
* Reordered columns for clarity.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    si.posting_date                  AS &amp;quot;Posting Date:Date:100&amp;quot;,&lt;br /&gt;
    si.name                          AS &amp;quot;Sales Invoice ID:Link/Sales Invoice:160&amp;quot;,&lt;br /&gt;
    cust.tax_id                      AS &amp;quot;Customer Tax ID:Data:150&amp;quot;,&lt;br /&gt;
    si.customer                      AS &amp;quot;Customer:Data:200&amp;quot;,&lt;br /&gt;
    si.total                         AS &amp;quot;Invoice Total:Currency:150&amp;quot;,&lt;br /&gt;
    si.grand_total                   AS &amp;quot;Grand Total:Currency:150&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT COALESCE(SUM(stc.tax_amount_after_discount_amount), 0)&lt;br /&gt;
        FROM `tabSales Taxes and Charges` stc&lt;br /&gt;
        WHERE stc.parent = si.name&lt;br /&gt;
          AND stc.account_head = &#039;2506 - VATOUTPUT TAXES PAYABLE - ESCO&#039;&lt;br /&gt;
    ) AS &amp;quot;Amount (Sales Taxes and Charges):Currency:160&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT sii_i.sales_order ORDER BY sii_i.sales_order SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii_i&lt;br /&gt;
        WHERE sii_i.parent = si.name&lt;br /&gt;
          AND sii_i.sales_order IS NOT NULL AND sii_i.sales_order != &#039;&#039;&lt;br /&gt;
    ) AS &amp;quot;Sales Orders ID (from Items):Data:220&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT per.parent ORDER BY per.parent SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabPayment Entry Reference` per&lt;br /&gt;
        WHERE per.reference_doctype = &#039;Sales Invoice&#039;&lt;br /&gt;
          AND per.reference_name = si.name&lt;br /&gt;
    ) AS &amp;quot;Payment ID:Link/Payment Entry:220&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT stc2.account_head&lt;br /&gt;
        FROM `tabSales Taxes and Charges` stc2&lt;br /&gt;
        WHERE stc2.parent = si.name&lt;br /&gt;
          AND stc2.account_head = &#039;2506 - VATOUTPUT TAXES PAYABLE - ESCO&#039;&lt;br /&gt;
        LIMIT 1&lt;br /&gt;
    ) AS &amp;quot;Account Head (Sales Taxes and Charges):Data:260&amp;quot;,&lt;br /&gt;
    si.debit_to                      AS &amp;quot;Debit To:Link/Account:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(DISTINCT sii_ia.income_account ORDER BY sii_ia.income_account SEPARATOR &#039;, &#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii_ia&lt;br /&gt;
        WHERE sii_ia.parent = si.name&lt;br /&gt;
    ) AS &amp;quot;Against Income Account:Data:240&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT sii_p.project&lt;br /&gt;
        FROM `tabSales Invoice Item` sii_p&lt;br /&gt;
        WHERE sii_p.parent = si.name AND IFNULL(sii_p.project, &#039;&#039;) != &#039;&#039;&lt;br /&gt;
        ORDER BY sii_p.idx ASC LIMIT 1&lt;br /&gt;
    ) AS &amp;quot;Project:Link/Project:140&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(&lt;br /&gt;
            IFNULL(NULLIF(sii_d.description, &#039;&#039;), IFNULL(sii_d.item_name, sii_d.item_code))&lt;br /&gt;
            ORDER BY sii_d.idx SEPARATOR &#039;; &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii_d&lt;br /&gt;
        WHERE sii_d.parent = si.name&lt;br /&gt;
    ) AS &amp;quot;Description:Data:400&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(DISTINCT so_x.name ORDER BY so_x.transaction_date, so_x.name SEPARATOR &#039;, &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Order` so_x&lt;br /&gt;
        WHERE so_x.company = si.company&lt;br /&gt;
          AND (&lt;br /&gt;
              EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Invoice Item` sii_px&lt;br /&gt;
                  WHERE sii_px.parent = si.name AND IFNULL(sii_px.project,&#039;&#039;) != &#039;&#039;&lt;br /&gt;
                    AND so_x.project = sii_px.project&lt;br /&gt;
              )&lt;br /&gt;
              OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi_px&lt;br /&gt;
                  WHERE soi_px.parent = so_x.name AND IFNULL(soi_px.project,&#039;&#039;) != &#039;&#039;&lt;br /&gt;
                    AND EXISTS (&lt;br /&gt;
                        SELECT 1 FROM `tabSales Invoice Item` sii_py&lt;br /&gt;
                        WHERE sii_py.parent = si.name AND IFNULL(sii_py.project,&#039;&#039;) != &#039;&#039;&lt;br /&gt;
                          AND soi_px.project = sii_py.project&lt;br /&gt;
                    )&lt;br /&gt;
              )&lt;br /&gt;
          )&lt;br /&gt;
    ) AS &amp;quot;Sales Orders ID (via Project):Data:240&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(DISTINCT sii_pl.project ORDER BY sii_pl.project SEPARATOR &#039;, &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Invoice Item` sii_pl&lt;br /&gt;
        WHERE sii_pl.parent = si.name AND IFNULL(sii_pl.project,&#039;&#039;) != &#039;&#039;&lt;br /&gt;
    ) AS &amp;quot;Projects/JO (List):Data:220&amp;quot;&lt;br /&gt;
FROM `tabSales Invoice` si&lt;br /&gt;
LEFT JOIN `tabCustomer` cust ON cust.name = si.customer&lt;br /&gt;
WHERE si.docstatus = 1&lt;br /&gt;
  AND si.company = %(company)s&lt;br /&gt;
  AND si.posting_date BETWEEN %(from_date)s AND %(to_date)s&lt;br /&gt;
ORDER BY si.posting_date, si.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Column Reference ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column&lt;br /&gt;
! Source&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Posting Date&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.posting_date&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sales Invoice ID&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.name&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link field&lt;br /&gt;
|-&lt;br /&gt;
| Customer Tax ID&lt;br /&gt;
| &amp;lt;code&amp;gt;tabCustomer.tax_id&amp;lt;/code&amp;gt;&lt;br /&gt;
| Joined from Customer table&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.customer&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Invoice Total&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.total&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pre-tax total&lt;br /&gt;
|-&lt;br /&gt;
| Grand Total&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.grand_total&amp;lt;/code&amp;gt;&lt;br /&gt;
| Post-tax total&lt;br /&gt;
|-&lt;br /&gt;
| VAT Amount&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Taxes and Charges.tax_amount_after_discount_amount&amp;lt;/code&amp;gt;&lt;br /&gt;
| Filtered by account head &amp;lt;code&amp;gt;2506 - VATOUTPUT TAXES PAYABLE - ESCO&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sales Orders ID (from Items)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.sales_order&amp;lt;/code&amp;gt;&lt;br /&gt;
| Direct link on SI items&lt;br /&gt;
|-&lt;br /&gt;
| Sales Orders ID (via Project)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Order&amp;lt;/code&amp;gt; (subquery via project match)&lt;br /&gt;
| More reliable; matches SO linked to same project as SI items&lt;br /&gt;
|-&lt;br /&gt;
| Payment ID&lt;br /&gt;
| &amp;lt;code&amp;gt;tabPayment Entry Reference.parent&amp;lt;/code&amp;gt;&lt;br /&gt;
| Payment entries referencing this SI&lt;br /&gt;
|-&lt;br /&gt;
| Account Head&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Taxes and Charges.account_head&amp;lt;/code&amp;gt;&lt;br /&gt;
| VAT output account&lt;br /&gt;
|-&lt;br /&gt;
| Debit To&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice.debit_to&amp;lt;/code&amp;gt;&lt;br /&gt;
| Accounts Receivable account&lt;br /&gt;
|-&lt;br /&gt;
| Against Income Account&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.income_account&amp;lt;/code&amp;gt;&lt;br /&gt;
| Distinct list from all SI items&lt;br /&gt;
|-&lt;br /&gt;
| Project&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.project&amp;lt;/code&amp;gt;&lt;br /&gt;
| First non-null project from items&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.description&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;item_name&amp;lt;/code&amp;gt;&lt;br /&gt;
| Concatenated with semicolon separator&lt;br /&gt;
|-&lt;br /&gt;
| Projects/JO (List)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.project&amp;lt;/code&amp;gt;&lt;br /&gt;
| Distinct list of all projects on the invoice&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;account head&#039;&#039;&#039; value &amp;lt;code&amp;gt;2506 - VATOUTPUT TAXES PAYABLE - ESCO&amp;lt;/code&amp;gt; must be updated if used for a different company.&lt;br /&gt;
* &#039;&#039;&#039;Sales Orders ID (via Project)&#039;&#039;&#039; is the preferred SO reference as it handles cases where the SO is not directly linked on the SI item.&lt;br /&gt;
* Report uses &amp;lt;code&amp;gt;%(company)s&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%(from_date)s&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;%(to_date)s&amp;lt;/code&amp;gt; as ERPNext report filter parameters.&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Projects_in_Process_Report_251023&amp;diff=37</id>
		<title>Projects in Process Report 251023</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Projects_in_Process_Report_251023&amp;diff=37"/>
		<updated>2026-02-25T06:53:50Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Projects in Process Report =  This page documents the development history and SQL query versions for the &amp;#039;&amp;#039;&amp;#039;Projects in Process&amp;#039;&amp;#039;&amp;#039; custom report in ERPNext. Queries are listed from earliest to latest revision.  ----  == Report Columns ==  The final report includes the following columns:  * &amp;#039;&amp;#039;&amp;#039;PROJECT ID&amp;#039;&amp;#039;&amp;#039; – Link to Project * &amp;#039;&amp;#039;&amp;#039;Department&amp;#039;&amp;#039;&amp;#039; – Link to Department * &amp;#039;&amp;#039;&amp;#039;Customer&amp;#039;&amp;#039;&amp;#039; – Link to Customer * &amp;#039;&amp;#039;&amp;#039;Earliest SO&amp;#039;&amp;#039;&amp;#039; – Link to Sales Order * &amp;#039;&amp;#039;&amp;#039;Estimated Start...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projects in Process Report =&lt;br /&gt;
&lt;br /&gt;
This page documents the development history and SQL query versions for the &#039;&#039;&#039;Projects in Process&#039;&#039;&#039; custom report in ERPNext. Queries are listed from earliest to latest revision.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Report Columns ==&lt;br /&gt;
&lt;br /&gt;
The final report includes the following columns:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT ID&#039;&#039;&#039; – Link to Project&lt;br /&gt;
* &#039;&#039;&#039;Department&#039;&#039;&#039; – Link to Department&lt;br /&gt;
* &#039;&#039;&#039;Customer&#039;&#039;&#039; – Link to Customer&lt;br /&gt;
* &#039;&#039;&#039;Earliest SO&#039;&#039;&#039; – Link to Sales Order&lt;br /&gt;
* &#039;&#039;&#039;Estimated Start Date&#039;&#039;&#039; (or Earliest SO Date in earlier versions)&lt;br /&gt;
* &#039;&#039;&#039;Total SI Items (Base, by Project)&#039;&#039;&#039; – Currency&lt;br /&gt;
* &#039;&#039;&#039;Total Purchase Invoices (Grand Total)&#039;&#039;&#039; – Currency&lt;br /&gt;
* &#039;&#039;&#039;Project MR (from Stores)&#039;&#039;&#039; – Currency (Stock Entry withdrawals from Stores)&lt;br /&gt;
* &#039;&#039;&#039;Project MRS (to Stores)&#039;&#039;&#039; – Currency (Stock Entry returns to Stores)&lt;br /&gt;
* &#039;&#039;&#039;Timesheets Costing Amount (by Project)&#039;&#039;&#039; – Currency&lt;br /&gt;
* &#039;&#039;&#039;Remainder (SI - PI - MR - TS)&#039;&#039;&#039; – Currency&lt;br /&gt;
* &#039;&#039;&#039;Sales Order Items (List)&#039;&#039;&#039; – Data&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Query Version History ==&lt;br /&gt;
&lt;br /&gt;
=== 250828 – Initial Working Version ===&lt;br /&gt;
Basic report with Project ID, Department, Customer, Sales Order Date. No Timesheets or MR/MRS columns yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    proj.name AS &amp;quot;PROJECT ID:Link/Project:120&amp;quot;,&lt;br /&gt;
    proj.department AS &amp;quot;Department:Link/Department:150&amp;quot;,&lt;br /&gt;
    proj.customer AS &amp;quot;Customer:Link/Customer:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT MIN(so.transaction_date)&lt;br /&gt;
        FROM `tabSales Order` so&lt;br /&gt;
        WHERE so.company = proj.company&lt;br /&gt;
          AND (&lt;br /&gt;
              so.project = proj.name&lt;br /&gt;
              OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi&lt;br /&gt;
                  WHERE soi.parent = so.name AND soi.project = proj.name&lt;br /&gt;
              )&lt;br /&gt;
          )&lt;br /&gt;
    ) AS &amp;quot;Sales Order Date:Date:120&amp;quot;&lt;br /&gt;
FROM `tabProject` proj&lt;br /&gt;
WHERE proj.company = %(company)s&lt;br /&gt;
ORDER BY proj.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 250828 – Added Sales Order Link + Items List ===&lt;br /&gt;
Added Sales Order name column and Sales Order Items list (plain text, no brackets).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    proj.name AS &amp;quot;PROJECT ID:Link/Project:120&amp;quot;,&lt;br /&gt;
    proj.department AS &amp;quot;Department:Link/Department:150&amp;quot;,&lt;br /&gt;
    proj.customer AS &amp;quot;Customer:Link/Customer:200&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT so.name&lt;br /&gt;
        FROM `tabSales Order` so&lt;br /&gt;
        WHERE so.company = proj.company&lt;br /&gt;
          AND (&lt;br /&gt;
              so.project = proj.name&lt;br /&gt;
              OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi&lt;br /&gt;
                  WHERE soi.parent = so.name AND soi.project = proj.name&lt;br /&gt;
              )&lt;br /&gt;
          )&lt;br /&gt;
        ORDER BY so.transaction_date ASC, so.name ASC&lt;br /&gt;
        LIMIT 1&lt;br /&gt;
    ) AS &amp;quot;Sales Order:Link/Sales Order:180&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT MIN(so.transaction_date)&lt;br /&gt;
        FROM `tabSales Order` so&lt;br /&gt;
        WHERE so.company = proj.company&lt;br /&gt;
          AND (&lt;br /&gt;
              so.project = proj.name&lt;br /&gt;
              OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi&lt;br /&gt;
                  WHERE soi.parent = so.name AND soi.project = proj.name&lt;br /&gt;
              )&lt;br /&gt;
          )&lt;br /&gt;
    ) AS &amp;quot;Sales Order Date:Date:120&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(&lt;br /&gt;
            GROUP_CONCAT(IFNULL(soi.item_name, soi.item_code) ORDER BY soi.idx SEPARATOR &#039;, &#039;),&lt;br /&gt;
            &#039;&#039;&lt;br /&gt;
        )&lt;br /&gt;
        FROM `tabSales Order Item` soi&lt;br /&gt;
        WHERE soi.parent = (&lt;br /&gt;
            SELECT so.name&lt;br /&gt;
            FROM `tabSales Order` so&lt;br /&gt;
            WHERE so.company = proj.company&lt;br /&gt;
              AND (&lt;br /&gt;
                  so.project = proj.name&lt;br /&gt;
                  OR EXISTS (&lt;br /&gt;
                      SELECT 1 FROM `tabSales Order Item` soi2&lt;br /&gt;
                      WHERE soi2.parent = so.name AND soi2.project = proj.name&lt;br /&gt;
                  )&lt;br /&gt;
              )&lt;br /&gt;
            ORDER BY so.transaction_date ASC, so.name ASC&lt;br /&gt;
            LIMIT 1&lt;br /&gt;
        )&lt;br /&gt;
    ) AS &amp;quot;Sales Order Items (List):Data:360&amp;quot;&lt;br /&gt;
FROM `tabProject` proj&lt;br /&gt;
WHERE proj.company = %(company)s&lt;br /&gt;
ORDER BY proj.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 250828 – Added Purchase Invoices + Project Stock Value ===&lt;br /&gt;
Added Total Purchase Invoices and Project Stock Value (current + as-of date) using Bin and Stock Ledger Entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WITH&lt;br /&gt;
earliest_so AS (&lt;br /&gt;
    SELECT &lt;br /&gt;
        p.name AS project,&lt;br /&gt;
        (&lt;br /&gt;
            SELECT so2.name&lt;br /&gt;
            FROM `tabSales Order` so2&lt;br /&gt;
            WHERE so2.company = p.company&lt;br /&gt;
              AND (so2.project = p.name OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi2&lt;br /&gt;
                  WHERE soi2.parent = so2.name AND soi2.project = p.name))&lt;br /&gt;
            ORDER BY so2.transaction_date ASC, so2.name ASC LIMIT 1&lt;br /&gt;
        ) AS so_name,&lt;br /&gt;
        (&lt;br /&gt;
            SELECT MIN(so3.transaction_date)&lt;br /&gt;
            FROM `tabSales Order` so3&lt;br /&gt;
            WHERE so3.company = p.company&lt;br /&gt;
              AND (so3.project = p.name OR EXISTS (&lt;br /&gt;
                  SELECT 1 FROM `tabSales Order Item` soi3&lt;br /&gt;
                  WHERE soi3.parent = so3.name AND soi3.project = p.name))&lt;br /&gt;
        ) AS so_date&lt;br /&gt;
    FROM `tabProject` p WHERE p.company = %(company)s&lt;br /&gt;
),&lt;br /&gt;
pi_totals AS (&lt;br /&gt;
    SELECT pii.project AS project, SUM(DISTINCT pi.grand_total) AS pi_total&lt;br /&gt;
    FROM `tabPurchase Invoice` pi&lt;br /&gt;
    JOIN `tabPurchase Invoice Item` pii ON pi.name = pii.parent&lt;br /&gt;
    WHERE pi.docstatus = 1&lt;br /&gt;
    GROUP BY pii.project&lt;br /&gt;
),&lt;br /&gt;
proj_wh AS (&lt;br /&gt;
    SELECT p.name AS project, p.company, w.name AS wh&lt;br /&gt;
    FROM `tabProject` p&lt;br /&gt;
    JOIN `tabWarehouse` w ON w.company = p.company AND w.`custom_project` = p.name&lt;br /&gt;
    WHERE p.company = %(company)s&lt;br /&gt;
),&lt;br /&gt;
bin_val AS (&lt;br /&gt;
    SELECT pw.project, SUM(b.actual_qty * IFNULL(b.valuation_rate, 0)) AS val_now&lt;br /&gt;
    FROM proj_wh pw&lt;br /&gt;
    JOIN `tabBin` b ON b.warehouse = pw.wh&lt;br /&gt;
    GROUP BY pw.project&lt;br /&gt;
),&lt;br /&gt;
asof_val AS (&lt;br /&gt;
    SELECT pw.project, SUM(sle.stock_value) AS val_asof&lt;br /&gt;
    FROM proj_wh pw&lt;br /&gt;
    JOIN (&lt;br /&gt;
        SELECT x.item_code, x.warehouse, IFNULL(x.batch_no, &#039;&#039;) AS batch_no,&lt;br /&gt;
               MAX(CONCAT(x.posting_date, &#039; &#039;, x.posting_time, &#039; &#039;, x.name)) AS maxkey&lt;br /&gt;
        FROM `tabStock Ledger Entry` x&lt;br /&gt;
        WHERE x.is_cancelled = 0 AND x.posting_date &amp;lt;= %(to_date)s&lt;br /&gt;
        GROUP BY x.item_code, x.warehouse, IFNULL(x.batch_no, &#039;&#039;)&lt;br /&gt;
    ) last ON last.warehouse = pw.wh&lt;br /&gt;
    JOIN `tabStock Ledger Entry` sle&lt;br /&gt;
      ON sle.item_code = last.item_code AND sle.warehouse = last.warehouse&lt;br /&gt;
     AND IFNULL(sle.batch_no, &#039;&#039;) = last.batch_no&lt;br /&gt;
     AND CONCAT(sle.posting_date, &#039; &#039;, sle.posting_time, &#039; &#039;, sle.name) = last.maxkey&lt;br /&gt;
    GROUP BY pw.project&lt;br /&gt;
)&lt;br /&gt;
SELECT&lt;br /&gt;
    p.name AS &amp;quot;PROJECT ID:Link/Project:120&amp;quot;,&lt;br /&gt;
    p.department AS &amp;quot;Department:Link/Department:150&amp;quot;,&lt;br /&gt;
    p.customer AS &amp;quot;Customer:Link/Customer:200&amp;quot;,&lt;br /&gt;
    e.so_name AS &amp;quot;Sales Order:Link/Sales Order:160&amp;quot;,&lt;br /&gt;
    e.so_date AS &amp;quot;Sales Order Date:Date:110&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(IFNULL(soi.item_name, soi.item_code) ORDER BY soi.idx SEPARATOR &#039;, &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Order Item` soi WHERE soi.parent = e.so_name&lt;br /&gt;
    ) AS &amp;quot;Sales Order Items (List):Data:300&amp;quot;,&lt;br /&gt;
    COALESCE(pt.pi_total, 0) AS &amp;quot;Total Purchase Invoices (Grand Total):Currency:160&amp;quot;,&lt;br /&gt;
    COALESCE(bv.val_now, 0) AS &amp;quot;Project Stock Value (Current):Currency:160&amp;quot;,&lt;br /&gt;
    COALESCE(av.val_asof, 0) AS &amp;quot;Project Stock Value as of To Date:Currency:170&amp;quot;&lt;br /&gt;
FROM `tabProject` p&lt;br /&gt;
LEFT JOIN earliest_so e ON e.project = p.name&lt;br /&gt;
LEFT JOIN pi_totals pt  ON pt.project = p.name&lt;br /&gt;
LEFT JOIN bin_val bv    ON bv.project = p.name&lt;br /&gt;
LEFT JOIN asof_val av   ON av.project = p.name&lt;br /&gt;
WHERE p.company = %(company)s&lt;br /&gt;
ORDER BY p.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 250901 – Added Timesheets Costing Amount ===&lt;br /&gt;
Timesheet costing amount column enabled. Stock Value columns still present at this stage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    p.name AS &amp;quot;PROJECT ID:Link/Project:140&amp;quot;,&lt;br /&gt;
    p.department AS &amp;quot;Department:Link/Department:150&amp;quot;,&lt;br /&gt;
    p.customer AS &amp;quot;Customer:Link/Customer:200&amp;quot;,&lt;br /&gt;
    e.so_name AS &amp;quot;Earliest SO:Link/Sales Order:160&amp;quot;,&lt;br /&gt;
    e.so_date AS &amp;quot;Earliest SO Date:Date:110&amp;quot;,&lt;br /&gt;
    COALESCE(si.si_items_total_base, 0) AS &amp;quot;Total SI Items (Base, by Project):Currency:180&amp;quot;,&lt;br /&gt;
    COALESCE(pt.pi_total, 0) AS &amp;quot;Total Purchase Invoices (Grand Total):Currency:170&amp;quot;,&lt;br /&gt;
    COALESCE(av.val_asof, 0) AS &amp;quot;Project Stock Value (As of Last Movement):Currency:180&amp;quot;,&lt;br /&gt;
    COALESCE(ts.ts_costing_amount, 0) AS &amp;quot;Timesheets Costing Amount (by Project):Currency:180&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(IFNULL(soi.item_name, soi.item_code) ORDER BY soi.idx SEPARATOR &#039;, &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Order Item` soi WHERE soi.parent = e.so_name&lt;br /&gt;
    ) AS &amp;quot;Sales Order Items (List):Data:300&amp;quot;&lt;br /&gt;
FROM `tabProject` p&lt;br /&gt;
/* ... (same LEFT JOINs as above) ... */&lt;br /&gt;
WHERE p.company = %(company)s&lt;br /&gt;
  AND ( %(project_like)s = &#039;&#039; OR p.name LIKE %(project_like)s )&lt;br /&gt;
ORDER BY p.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 250901-01 – Replaced Stock Value with MR/MRS + Remainder Column ===&lt;br /&gt;
&#039;&#039;&#039;Key changes:&#039;&#039;&#039;&lt;br /&gt;
* Removed Project Stock Value column.&lt;br /&gt;
* Added &#039;&#039;&#039;Project MR&#039;&#039;&#039; (Stock Entry withdrawals where Source Warehouse LIKE &amp;lt;code&amp;gt;%Stores%&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Added &#039;&#039;&#039;Project MRS&#039;&#039;&#039; (Stock Entry returns where Target Warehouse LIKE &amp;lt;code&amp;gt;%Stores%&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Added &#039;&#039;&#039;Remainder&#039;&#039;&#039; column: SI Items − PI − MR − Timesheets.&lt;br /&gt;
* Replaced Earliest SO Date with &#039;&#039;&#039;Estimated Start Date&#039;&#039;&#039; (&amp;lt;code&amp;gt;p.expected_start_date&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
    p.name AS &amp;quot;PROJECT ID:Link/Project:140&amp;quot;,&lt;br /&gt;
    p.department AS &amp;quot;Department:Link/Department:150&amp;quot;,&lt;br /&gt;
    p.customer AS &amp;quot;Customer:Link/Customer:200&amp;quot;,&lt;br /&gt;
    e.so_name AS &amp;quot;Earliest SO:Link/Sales Order:160&amp;quot;,&lt;br /&gt;
    p.expected_start_date AS &amp;quot;Estimated Start Date:Date:110&amp;quot;,&lt;br /&gt;
    COALESCE(si.si_items_total_base, 0) AS &amp;quot;Total SI Items (Base, by Project):Currency:180&amp;quot;,&lt;br /&gt;
    COALESCE(pt.pi_total, 0) AS &amp;quot;Total Purchase Invoices (Grand Total):Currency:170&amp;quot;,&lt;br /&gt;
    COALESCE(mr.mr_amount, 0) AS &amp;quot;Project MR (from Stores):Currency:160&amp;quot;,&lt;br /&gt;
    COALESCE(mrs.mrs_amount, 0) AS &amp;quot;Project MRS (to Stores):Currency:160&amp;quot;,&lt;br /&gt;
    COALESCE(ts.ts_costing_amount, 0) AS &amp;quot;Timesheets Costing Amount (by Project):Currency:180&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        COALESCE(si.si_items_total_base, 0)&lt;br /&gt;
      - (COALESCE(pt.pi_total, 0) + COALESCE(mr.mr_amount, 0) + COALESCE(ts.ts_costing_amount, 0))&lt;br /&gt;
    ) AS &amp;quot;Remainder (SI - PI - MR - TS):Currency:160&amp;quot;,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT IFNULL(GROUP_CONCAT(IFNULL(soi.item_name, soi.item_code) ORDER BY soi.idx SEPARATOR &#039;, &#039;), &#039;&#039;)&lt;br /&gt;
        FROM `tabSales Order Item` soi WHERE soi.parent = e.so_name&lt;br /&gt;
    ) AS &amp;quot;Sales Order Items (List):Data:300&amp;quot;&lt;br /&gt;
FROM `tabProject` p&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT p2.name AS project,&lt;br /&gt;
        (SELECT so2.name FROM `tabSales Order` so2&lt;br /&gt;
         WHERE so2.company = p2.company&lt;br /&gt;
           AND (so2.project = p2.name OR EXISTS (&lt;br /&gt;
               SELECT 1 FROM `tabSales Order Item` soi2&lt;br /&gt;
               WHERE soi2.parent = so2.name AND soi2.project = p2.name))&lt;br /&gt;
         ORDER BY so2.transaction_date ASC, so2.name ASC LIMIT 1) AS so_name&lt;br /&gt;
    FROM `tabProject` p2&lt;br /&gt;
    WHERE p2.company = %(company)s&lt;br /&gt;
      AND ( %(project_like)s = &#039;&#039; OR p2.name LIKE %(project_like)s )&lt;br /&gt;
) e ON e.project = p.name&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT t.project, SUM(t.grand_total) AS pi_total&lt;br /&gt;
    FROM (SELECT DISTINCT pi.name, pii.project, pi.grand_total&lt;br /&gt;
          FROM `tabPurchase Invoice` pi&lt;br /&gt;
          JOIN `tabPurchase Invoice Item` pii ON pi.name = pii.parent&lt;br /&gt;
          WHERE pi.docstatus = 1 AND pi.company = %(company)s&lt;br /&gt;
            AND pii.project IS NOT NULL AND pii.project != &#039;&#039;&lt;br /&gt;
            AND ( %(project_like)s = &#039;&#039; OR pii.project LIKE %(project_like)s )) t&lt;br /&gt;
    GROUP BY t.project&lt;br /&gt;
) pt ON pt.project = p.name&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT COALESCE(NULLIF(sii.project, &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;) AS project,&lt;br /&gt;
           SUM(sii.base_net_amount) AS si_items_total_base&lt;br /&gt;
    FROM `tabSales Invoice` si&lt;br /&gt;
    JOIN `tabSales Invoice Item` sii ON sii.parent = si.name&lt;br /&gt;
    WHERE si.docstatus = 1 AND si.company = %(company)s&lt;br /&gt;
      AND ( %(project_like)s = &#039;&#039; OR sii.project LIKE %(project_like)s )&lt;br /&gt;
    GROUP BY COALESCE(NULLIF(sii.project, &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;)&lt;br /&gt;
) si ON si.project = p.name&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT COALESCE(NULLIF(tsd.project, &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;) AS project,&lt;br /&gt;
           SUM(tsd.costing_amount) AS ts_costing_amount&lt;br /&gt;
    FROM `tabTimesheet Detail` tsd&lt;br /&gt;
    JOIN `tabTimesheet` ts ON ts.name = tsd.parent&lt;br /&gt;
    WHERE ts.docstatus = 1 AND ts.company = %(company)s&lt;br /&gt;
      AND ( %(project_like)s = &#039;&#039; OR tsd.project LIKE %(project_like)s )&lt;br /&gt;
    GROUP BY COALESCE(NULLIF(tsd.project, &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;)&lt;br /&gt;
) ts ON ts.project = p.name&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT COALESCE(NULLIF(COALESCE(sed.project, se.project), &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;) AS project,&lt;br /&gt;
           SUM(IFNULL(sed.basic_amount, 0)) AS mr_amount&lt;br /&gt;
    FROM `tabStock Entry` se&lt;br /&gt;
    JOIN `tabStock Entry Detail` sed ON sed.parent = se.name&lt;br /&gt;
    WHERE se.docstatus = 1 AND se.company = %(company)s&lt;br /&gt;
      AND ( %(project_like)s = &#039;&#039; OR COALESCE(sed.project, se.project) LIKE %(project_like)s )&lt;br /&gt;
      AND IFNULL(sed.s_warehouse, &#039;&#039;) LIKE &#039;%%Stores%%&#039;&lt;br /&gt;
    GROUP BY COALESCE(NULLIF(COALESCE(sed.project, se.project), &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;)&lt;br /&gt;
) mr ON mr.project = p.name&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT COALESCE(NULLIF(COALESCE(sed.project, se.project), &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;) AS project,&lt;br /&gt;
           SUM(IFNULL(sed.basic_amount, 0)) AS mrs_amount&lt;br /&gt;
    FROM `tabStock Entry` se&lt;br /&gt;
    JOIN `tabStock Entry Detail` sed ON sed.parent = se.name&lt;br /&gt;
    WHERE se.docstatus = 1 AND se.company = %(company)s&lt;br /&gt;
      AND ( %(project_like)s = &#039;&#039; OR COALESCE(sed.project, se.project) LIKE %(project_like)s )&lt;br /&gt;
      AND IFNULL(sed.t_warehouse, &#039;&#039;) LIKE &#039;%%Stores%%&#039;&lt;br /&gt;
    GROUP BY COALESCE(NULLIF(COALESCE(sed.project, se.project), &#039;&#039;), &#039;&amp;lt;&amp;lt;NO PROJECT&amp;gt;&amp;gt;&#039;)&lt;br /&gt;
) mrs ON mrs.project = p.name&lt;br /&gt;
WHERE p.company = %(company)s&lt;br /&gt;
  AND ( %(project_like)s = &#039;&#039; OR p.name LIKE %(project_like)s )&lt;br /&gt;
ORDER BY p.name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Column Reference ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Column&lt;br /&gt;
! Source&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Project ID&lt;br /&gt;
| &amp;lt;code&amp;gt;tabProject.name&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link field&lt;br /&gt;
|-&lt;br /&gt;
| Department&lt;br /&gt;
| &amp;lt;code&amp;gt;tabProject.department&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link field&lt;br /&gt;
|-&lt;br /&gt;
| Customer&lt;br /&gt;
| &amp;lt;code&amp;gt;tabProject.customer&amp;lt;/code&amp;gt;&lt;br /&gt;
| Link field&lt;br /&gt;
|-&lt;br /&gt;
| Earliest SO&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Order&amp;lt;/code&amp;gt; (subquery)&lt;br /&gt;
| Matches SO header OR SO Item project link&lt;br /&gt;
|-&lt;br /&gt;
| Estimated Start Date&lt;br /&gt;
| &amp;lt;code&amp;gt;tabProject.expected_start_date&amp;lt;/code&amp;gt;&lt;br /&gt;
| Replaced SO Date in 250901-01&lt;br /&gt;
|-&lt;br /&gt;
| Total SI Items (Base)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Invoice Item.base_net_amount&amp;lt;/code&amp;gt;&lt;br /&gt;
| Submitted SIs only&lt;br /&gt;
|-&lt;br /&gt;
| Total Purchase Invoices&lt;br /&gt;
| &amp;lt;code&amp;gt;tabPurchase Invoice.grand_total&amp;lt;/code&amp;gt;&lt;br /&gt;
| Submitted PIs only; DISTINCT to avoid double-count&lt;br /&gt;
|-&lt;br /&gt;
| Project MR (from Stores)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabStock Entry Detail.basic_amount&amp;lt;/code&amp;gt;&lt;br /&gt;
| Source Warehouse LIKE &amp;lt;code&amp;gt;%Stores%&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Project MRS (to Stores)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabStock Entry Detail.basic_amount&amp;lt;/code&amp;gt;&lt;br /&gt;
| Target Warehouse LIKE &amp;lt;code&amp;gt;%Stores%&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Timesheets Costing Amount&lt;br /&gt;
| &amp;lt;code&amp;gt;tabTimesheet Detail.costing_amount&amp;lt;/code&amp;gt;&lt;br /&gt;
| Submitted timesheets only&lt;br /&gt;
|-&lt;br /&gt;
| Remainder&lt;br /&gt;
| SI − PI − MR − TS&lt;br /&gt;
| Calculated column&lt;br /&gt;
|-&lt;br /&gt;
| Sales Order Items (List)&lt;br /&gt;
| &amp;lt;code&amp;gt;tabSales Order Item.item_name&amp;lt;/code&amp;gt;&lt;br /&gt;
| GROUP_CONCAT, comma-separated, ordered by idx&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=PfSense_Sales_Training_Material&amp;diff=36</id>
		<title>PfSense Sales Training Material</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=PfSense_Sales_Training_Material&amp;diff=36"/>
		<updated>2026-02-25T06:53:28Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= pfSense Sales Training Material =  &amp;#039;&amp;#039;&amp;#039;Reference:&amp;#039;&amp;#039;&amp;#039; [https://chatgpt.com/share/67c82515-7074-800e-b29c-0df75f5492f3 Full Session Log]  ----  == 1. Introduction ==  ; Objective : Provide a clear, layman-friendly explanation of what a firewall is, why pfSense is a powerful solution, and how its key features protect networks.  ; Audience : Sales teams who need to explain the technology to potential customers (non-technical decision-makers, IT managers, SMB owners).  ----...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= pfSense Sales Training Material =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reference:&#039;&#039;&#039; [https://chatgpt.com/share/67c82515-7074-800e-b29c-0df75f5492f3 Full Session Log]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Introduction ==&lt;br /&gt;
&lt;br /&gt;
; Objective&lt;br /&gt;
: Provide a clear, layman-friendly explanation of what a firewall is, why pfSense is a powerful solution, and how its key features protect networks.&lt;br /&gt;
&lt;br /&gt;
; Audience&lt;br /&gt;
: Sales teams who need to explain the technology to potential customers (non-technical decision-makers, IT managers, SMB owners).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Network Basics ==&lt;br /&gt;
&lt;br /&gt;
; Definition&lt;br /&gt;
: Networking is the ability to connect computers and systems together. It occurs when more than one device communicates with another device or group of devices.&lt;br /&gt;
&lt;br /&gt;
=== Networking Disciplines ===&lt;br /&gt;
&lt;br /&gt;
==== ECE (Electronics and Communication Engineering) ====&lt;br /&gt;
* Focuses on how electronic devices work and on designing/building network hardware from basic components.&lt;br /&gt;
* In the Philippines, a PRC ECE license is required to sign off plans for CCTV installations—the only legally mandated network designs (CCTV and phone lines).&lt;br /&gt;
* &#039;&#039;&#039;Sales Note:&#039;&#039;&#039; Clients needing custom electronic solutions (for automation or high-security requirements) will require ECE expertise.&lt;br /&gt;
&lt;br /&gt;
==== IT (Information Technology) ====&lt;br /&gt;
* Specializes in deploying and integrating off-the-shelf networking equipment.&lt;br /&gt;
* Advanced configurations improve reliability, scalability (hundreds to thousands of users), and automation for convenience.&lt;br /&gt;
* &#039;&#039;&#039;Sales Note:&#039;&#039;&#039; Larger-scale deployments and convenience features command higher-level IT skills and corresponding investment.&lt;br /&gt;
&lt;br /&gt;
=== Networking Functions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WAN&#039;&#039;&#039; (Wide Area Network)&lt;br /&gt;
| Connects the facility to external networks (Internet or other sites).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LAN&#039;&#039;&#039; (Local Area Network)&lt;br /&gt;
| Connects devices within the facility for internal communications.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;High Availability&#039;&#039;&#039;&lt;br /&gt;
| Builds redundancy and resilience so services stay online despite failures.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;User Management&#039;&#039;&#039;&lt;br /&gt;
| Implements captive portals, LDAP, RADIUS to organize users by roles and privileges and control access.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
| Establishes hardened systems using DMZs (buffer zones), proxy servers (middlemen), and data hygiene practices.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wireless&#039;&#039;&#039;&lt;br /&gt;
| Deploys mesh or enterprise Wi-Fi for convenient, flexible connectivity.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wired&#039;&#039;&#039;&lt;br /&gt;
| Provides high-bandwidth, low-latency connections for critical systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Why pfSense? ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Open Source:&#039;&#039;&#039; No recurring feature licenses; you pay only for support and updates. When support lapses, pfSense continues to work—only security updates stop.&lt;br /&gt;
* &#039;&#039;&#039;Enterprise Features:&#039;&#039;&#039;&lt;br /&gt;
** LAN/WAN routing and segmentation&lt;br /&gt;
** VPN (remote access and site-to-site)&lt;br /&gt;
** IDS/IPS (intrusion detection and prevention)&lt;br /&gt;
** High Availability &amp;amp; Load Balancing&lt;br /&gt;
** DHCP, DNS, and user Authentication&lt;br /&gt;
* &#039;&#039;&#039;Competitor Critique:&#039;&#039;&#039; Other vendors &amp;quot;rent&amp;quot; features that expire with licenses. pfSense features remain available indefinitely.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Core Functions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LAN&#039;&#039;&#039;&lt;br /&gt;
| Segments and protects internal network traffic to enforce security zones.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WAN&#039;&#039;&#039;&lt;br /&gt;
| Controls access to the Internet; filters inbound/outbound traffic.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;VPN&#039;&#039;&#039;&lt;br /&gt;
| Creates encrypted tunnels for secure remote access or site-to-site links.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IDS/IPS&#039;&#039;&#039;&lt;br /&gt;
| Monitors traffic for threats and automatically blocks or alerts on intrusions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Secondary Features ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Authentication:&#039;&#039;&#039; Integrates with Active Directory, LDAP, RADIUS for user-based firewall policies.&lt;br /&gt;
* &#039;&#039;&#039;DHCP:&#039;&#039;&#039; Assigns IP addresses automatically to devices on the network.&lt;br /&gt;
* &#039;&#039;&#039;DNS:&#039;&#039;&#039; Acts as resolver or forwarder to improve name lookup speed and security.&lt;br /&gt;
* &#039;&#039;&#039;Load Balancer / HA:&#039;&#039;&#039; Distributes traffic across multiple WAN links or appliances and provides failover.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Dispelling Key Misunderstandings ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;Anyone doesn&#039;t need a firewall&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#: &#039;&#039;Reality:&#039;&#039; Anyone hosting servers (web, NAS, ERP, AI apps) or running remote networks needs a firewall to block attacks and manage user access.&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;Firewalls only block traffic&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#: &#039;&#039;Reality:&#039;&#039; They also segment networks, prioritize critical traffic (e.g., video calls), and enable secure VPN connections.&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;Hardware firewalls exist&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#: &#039;&#039;Reality:&#039;&#039; All firewalls are computers running software—performance scales by upgrading NICs (100 Mbps → 1 Gbps → 10 Gbps → 100 Gbps).&lt;br /&gt;
# &#039;&#039;&#039;&amp;quot;Competitors offer better out-of-the-box&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
#: &#039;&#039;Reality:&#039;&#039; Competitors lock features behind licenses that expire. pfSense provides full features without license lock-in—only updates and support require payment.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Sizing &amp;amp; Total Cost of Ownership (TCO) ==&lt;br /&gt;
&lt;br /&gt;
=== Sizing Guidelines ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Company Size / Bandwidth&lt;br /&gt;
! Recommended Model&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Under 1 Gbps Internet&lt;br /&gt;
| Netgate 6100 Series&lt;br /&gt;
| Fits most small-to-medium offices&lt;br /&gt;
|-&lt;br /&gt;
| Up to 500 Users&lt;br /&gt;
| 2× Netgate 4200 MAX (HA setup)&lt;br /&gt;
| ~120k PHP one-time cost for both appliances&lt;br /&gt;
|-&lt;br /&gt;
| Large Networks / ISPs (&amp;gt;1 Gbps)&lt;br /&gt;
| Netgate 6100+ or higher&lt;br /&gt;
| Only ISPs or large enterprises need these models&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example: Makati Office (200 Users) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Hardware Cost:&#039;&#039;&#039; 2×4200 MAX for HA → &#039;&#039;&#039;120,000 PHP&#039;&#039;&#039; (one-time)&lt;br /&gt;
* &#039;&#039;&#039;Annual Costs:&#039;&#039;&#039;&lt;br /&gt;
** License Renewal: 7,500 PHP × 2 = &#039;&#039;&#039;15,000 PHP/year&#039;&#039;&#039;&lt;br /&gt;
** TAC Support: &#039;&#039;&#039;45,000 PHP/year&#039;&#039;&#039; (one needed in HA)&lt;br /&gt;
** Snort Subscription: 24,000 PHP × 2 = &#039;&#039;&#039;48,000 PHP/year&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Total Annual: ~84,000 PHP/year&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;Competitor Comparison:&#039;&#039;&#039; Fortinet equivalent: 150k PHP hardware + 200k PHP/year support → pfSense is more cost-effective.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Selling Process &amp;amp; Key Observations ==&lt;br /&gt;
&lt;br /&gt;
=== Footprint ===&lt;br /&gt;
* Small office (&amp;lt;10 users), medium/large office (&amp;gt;100 users), or multi-building campus.&lt;br /&gt;
* Determine how many locations must operate as a single network to size solutions and costs.&lt;br /&gt;
&lt;br /&gt;
=== Value of Data &amp;amp; Communication ===&lt;br /&gt;
* Quantify by manpower cost to change processes—high communication workloads indicate greater impact.&lt;br /&gt;
&lt;br /&gt;
=== Pain Points ===&lt;br /&gt;
* Losses from unreliable or insecure networks: downtime, lost sales, and productivity hits.&lt;br /&gt;
&lt;br /&gt;
=== Process Steps ===&lt;br /&gt;
# &#039;&#039;&#039;Discovery:&#039;&#039;&#039; Gather requirements (users, bandwidth, locations).&lt;br /&gt;
# &#039;&#039;&#039;Footprint Assessment:&#039;&#039;&#039; Map office layout and device count.&lt;br /&gt;
# &#039;&#039;&#039;Prioritize:&#039;&#039;&#039; Identify critical applications and data flows.&lt;br /&gt;
# &#039;&#039;&#039;Risk Analysis:&#039;&#039;&#039; Pinpoint security and availability concerns.&lt;br /&gt;
# &#039;&#039;&#039;Tailored Proposal:&#039;&#039;&#039; Match pfSense functions to customer needs.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Next Steps for Sales ==&lt;br /&gt;
&lt;br /&gt;
# Select the right appliance (6100 vs 4200 MAX vs higher models).&lt;br /&gt;
# Prepare TCO comparison (pfSense vs competitor).&lt;br /&gt;
# Send proposal template and service brochure.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Resources &amp;amp; References ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.comfac-it.com/services/netgate-pfsense-setup Setup Services]&lt;br /&gt;
* [https://www.comfac-it.com/blog-post/making-sense-of-unified-threat-management-utm UTM Deep Dive]&lt;br /&gt;
* [https://www.pfsense.org/products/ Netgate Product Info]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Steps_to_Repair_and_OCR_a_Scanned_or_Corrupted_PDF_in_Ubuntu&amp;diff=35</id>
		<title>Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Steps_to_Repair_and_OCR_a_Scanned_or_Corrupted_PDF_in_Ubuntu&amp;diff=35"/>
		<updated>2026-02-25T06:52:12Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu =  ----  == Step 1: Clean or Repair the PDF ==  Use &amp;#039;&amp;#039;&amp;#039;Ghostscript&amp;#039;&amp;#039;&amp;#039; to rebuild damaged cross-reference tables and fix malformed PDF structure.  &amp;lt;pre&amp;gt; sudo apt install ghostscript  gs -o fixed.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dNOPAUSE -dBATCH &amp;quot;input.pdf&amp;quot; &amp;lt;/pre&amp;gt;  &amp;#039;&amp;#039;&amp;#039;What it does:&amp;#039;&amp;#039;&amp;#039; * Repairs broken references (&amp;lt;code&amp;gt;xref&amp;lt;/code&amp;gt; errors) * Normalizes streams and compression * Outputs a clean, sta...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 1: Clean or Repair the PDF ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;Ghostscript&#039;&#039;&#039; to rebuild damaged cross-reference tables and fix malformed PDF structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install ghostscript&lt;br /&gt;
&lt;br /&gt;
gs -o fixed.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dNOPAUSE -dBATCH &amp;quot;input.pdf&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What it does:&#039;&#039;&#039;&lt;br /&gt;
* Repairs broken references (&amp;lt;code&amp;gt;xref&amp;lt;/code&amp;gt; errors)&lt;br /&gt;
* Normalizes streams and compression&lt;br /&gt;
* Outputs a clean, standards-compliant PDF (&amp;lt;code&amp;gt;fixed.pdf&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
If Ghostscript cannot fix the file, try &#039;&#039;&#039;qpdf&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install qpdf&lt;br /&gt;
qpdf --repair &amp;quot;input.pdf&amp;quot; fixed.pdf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 2: Run OCR on the Cleaned PDF ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;OCRmyPDF&#039;&#039;&#039; to embed searchable text into the PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install ocrmypdf tesseract-ocr tesseract-ocr-eng tesseract-ocr-fil&lt;br /&gt;
ocrmypdf --jobs 4 --deskew --clean -l eng+fil fixed.pdf output_ocr.pdf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What it does:&#039;&#039;&#039;&lt;br /&gt;
* Performs OCR using Tesseract (English + Filipino)&lt;br /&gt;
* Deskews and cleans pages&lt;br /&gt;
* Embeds text layer for search and selection&lt;br /&gt;
&lt;br /&gt;
If OCRmyPDF fails on rendering, use an alternate renderer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ocrmypdf --pdf-renderer sandwich fixed.pdf output_ocr.pdf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the PDF is too broken, force rasterization and OCR:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ocrmypdf --force-ocr fixed.pdf output_ocr.pdf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Step 3: Verify OCR Success ==&lt;br /&gt;
&lt;br /&gt;
Check if text extraction works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pdftotext output_ocr.pdf - | head&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you see readable text, the OCR worked successfully.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Summary Workflow ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Step&lt;br /&gt;
! Tool&lt;br /&gt;
! Command&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Ghostscript&lt;br /&gt;
| &amp;lt;code&amp;gt;gs -o fixed.pdf -sDEVICE=pdfwrite ...&amp;lt;/code&amp;gt;&lt;br /&gt;
| Clean and repair corrupted PDF&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| QPDF&lt;br /&gt;
| &amp;lt;code&amp;gt;qpdf --repair input.pdf fixed.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Alternate PDF repair if Ghostscript fails&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| OCRmyPDF&lt;br /&gt;
| &amp;lt;code&amp;gt;ocrmypdf --jobs 4 --deskew --clean fixed.pdf output_ocr.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
| Add searchable text layer&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Verify&lt;br /&gt;
| &amp;lt;code&amp;gt;pdftotext output_ocr.pdf - | head&amp;lt;/code&amp;gt;&lt;br /&gt;
| Confirm OCR success&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=IT_REQUEST_(OP-ERP-ITR)_-_EDITED_250801&amp;diff=34</id>
		<title>IT REQUEST (OP-ERP-ITR) - EDITED 250801</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=IT_REQUEST_(OP-ERP-ITR)_-_EDITED_250801&amp;diff=34"/>
		<updated>2026-02-25T06:51:33Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= IT Request (OP-ERP-ITR) =  ----  == 1. Objective ==  # To define the method how to create and process the IT Request. # To ensure every request is recorded in a systematic way for tracking and resolution.  ----  == 2. Scope ==  IT Request is a process by which users within the organization seek assistance or services from the IT Department.  === Standard Request === * Access (CCTV, Network, Files, Timelogs) * Admin Service  === Complex Request === * Repair/Maintenance...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IT Request (OP-ERP-ITR) =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Objective ==&lt;br /&gt;
&lt;br /&gt;
# To define the method how to create and process the IT Request.&lt;br /&gt;
# To ensure every request is recorded in a systematic way for tracking and resolution.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==&lt;br /&gt;
&lt;br /&gt;
IT Request is a process by which users within the organization seek assistance or services from the IT Department.&lt;br /&gt;
&lt;br /&gt;
=== Standard Request ===&lt;br /&gt;
* Access (CCTV, Network, Files, Timelogs)&lt;br /&gt;
* Admin Service&lt;br /&gt;
&lt;br /&gt;
=== Complex Request ===&lt;br /&gt;
* Repair/Maintenance&lt;br /&gt;
* Training&lt;br /&gt;
* Product/Service Quote&lt;br /&gt;
* IT Equipment/Material (In house)&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
For request types not listed above.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Definition ==&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;IT Request&#039;&#039; is a formal submission made through the ERP system to seek assistance, service, or resources from the IT Department. It may include requests for technical support, system access, equipment repair or issuance, software installation, or resolution of IT-related issues. Each IT Request must contain sufficient details and, when necessary, supporting attachments to ensure proper review, categorization, and timely resolution.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. References ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1WWkH9K52a8b-tUHBt844qa2qVQF072ep/view?usp=sharing ITR Procedure – Workflow (PDF)]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Responsibility ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Role&lt;br /&gt;
! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;End User&#039;&#039;&#039;&lt;br /&gt;
| Submits the IT request through the ERP system, providing detailed information and any relevant attachments.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;End User Manager&#039;&#039;&#039;&lt;br /&gt;
| Reviews and approves IT requests submitted by end users, ensuring that they are necessary and justified before submission.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IT Technical Support&#039;&#039;&#039;&lt;br /&gt;
| Reviews all IT requests and approves &#039;&#039;Standard requests&#039;&#039;. Provides timely technical support for IT-related issues across the organization. Maintains regular communication with requestors, giving updates and ensuring resolution within the agreed timeframe. Escalates complex or unresolved requests to the IT Manager when needed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IT Manager&#039;&#039;&#039;&lt;br /&gt;
| Approves &#039;&#039;Complex requests&#039;&#039;. Provides guidance and support to IT Technical Support staff, especially in handling complex or escalated requests.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IT Director&#039;&#039;&#039;&lt;br /&gt;
| Approves &#039;&#039;Complex requests&#039;&#039;. Addresses any escalated issues from the IT Manager that require executive decision-making. Reviews and analyzes feedback and performance metrics to drive continuous improvement in IT services.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Procedure ==&lt;br /&gt;
&lt;br /&gt;
=== A. Create IT Request ===&lt;br /&gt;
&lt;br /&gt;
# Create IT Requests through the ERP system. Follow the step by step guide (ERP IT Request TM-ERP-05).&lt;br /&gt;
# Include detailed information about the issue or request, any relevant attachments, and the desired completion date.&lt;br /&gt;
#* &#039;&#039;Select/Type &#039;&#039;&#039;MIS – CSC&#039;&#039;&#039; in the &#039;&#039;&#039;Department Field&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
#* &#039;&#039;Select/Type &#039;&#039;&#039;N/A – IT Request&#039;&#039;&#039; in the following fields&#039;&#039;:&lt;br /&gt;
#** Customer&lt;br /&gt;
#** SO/JO&lt;br /&gt;
#** Address&lt;br /&gt;
# Use &#039;&#039;&#039;ASSIGNED TO – ASSIGN TO USER GROUP&#039;&#039;&#039;:&lt;br /&gt;
#* Click the branch-specific IT Department to send them a notification.&lt;br /&gt;
&lt;br /&gt;
=== B. Processing of Request ===&lt;br /&gt;
&lt;br /&gt;
# The IT technical support staff will receive and evaluate the approved request. Executes the designated tasks and updates the status of requests.&lt;br /&gt;
# Requests requiring special authority or resources will be forwarded to the IT Manager for validation or escalated to the IT Director if it requires executive decision making.&lt;br /&gt;
# Because IT operates differently, the workflow status in ERPNext has specific meanings for IT Requests (ITRs). Workflow Approval does not apply to IT, so there is &#039;&#039;&#039;no need for Department approval&#039;&#039;&#039;.&lt;br /&gt;
# Instead, &#039;&#039;IT staff&#039;&#039; will regularly scan for ITRs with the status &#039;&#039;&#039;For Review&#039;&#039;&#039;.&lt;br /&gt;
#* When &#039;&#039;IT&#039;&#039; clicks &#039;&#039;&#039;Submit for Approval&#039;&#039;&#039;, it signifies that the &#039;&#039;&#039;request has been received by the IT team&#039;&#039;&#039;.&lt;br /&gt;
#* Once the request is marked &#039;&#039;&#039;Approved&#039;&#039;&#039;, it means the &#039;&#039;&#039;task is already ongoing&#039;&#039;&#039;.&lt;br /&gt;
#* At this stage, &#039;&#039;IT&#039;&#039; will also specify whether the request is a &#039;&#039;Standard&#039;&#039; or a &#039;&#039;Complex request&#039;&#039; and will provide an &#039;&#039;estimated time for completion&#039;&#039;.&lt;br /&gt;
#* After completing the task, IT will write &#039;&#039;&#039;DONE&#039;&#039;&#039; in the comments section and tag the requestor to &#039;&#039;notify them of completion&#039;&#039;.&lt;br /&gt;
#* In &#039;&#039;&#039;emergency situations&#039;&#039;&#039;, requestors are advised to &#039;&#039;&#039;call IT first&#039;&#039;&#039; before creating a ticket.&lt;br /&gt;
#* To ensure this is easily maintained:&lt;br /&gt;
#** Filters are configured.&lt;br /&gt;
#** The assigned staff are told to check regularly.&lt;br /&gt;
&lt;br /&gt;
=== C. Service Level ===&lt;br /&gt;
&lt;br /&gt;
Requests should be fulfilled within &#039;&#039;&#039;3 days for standard requests&#039;&#039;&#039;, and within &#039;&#039;&#039;30 to 45 days for complex/external dependency requests&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Standard Request&#039;&#039;&#039; – Routine IT requests that can be handled entirely within the IT department. These are &#039;&#039;reviewed and approved by IT Staff&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Complex/External Dependency Requests&#039;&#039;&#039; – Requests that require input, approval, or action from other departments, which may impact the IT department&#039;s ability to meet the three-day closure target. These are &#039;&#039;reviewed by IT Staff&#039;&#039; and &#039;&#039;approved by the IT Manager or IT Director&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Types of Requests ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
! Examples&lt;br /&gt;
! SLA&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Access&#039;&#039;&#039; (CCTV, Network, Files, Timelogs)&lt;br /&gt;
| —&lt;br /&gt;
| Within &#039;&#039;&#039;24 hours&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Admin Service&#039;&#039;&#039;&lt;br /&gt;
| Password reset, Purchase Request, ERPNext and Desktop support&lt;br /&gt;
| Within &#039;&#039;&#039;24 hours&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repair/Maintenance&#039;&#039;&#039;&lt;br /&gt;
| Urgent: initial response within half a day. Item repairs follow Complex Request timeline.&lt;br /&gt;
| Half day (response); Complex timeline (repairs)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Training&#039;&#039;&#039;&lt;br /&gt;
| —&lt;br /&gt;
| Scheduled within &#039;&#039;&#039;24 hours&#039;&#039;&#039;; next available schedule within a Month of request accepted&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Product/Service Quote&#039;&#039;&#039;&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IT Equipment/Material (In house)&#039;&#039;&#039;&lt;br /&gt;
| —&lt;br /&gt;
| Response within &#039;&#039;&#039;half a day&#039;&#039;&#039;; issuance depends on availability&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Problem Analysis&#039;&#039;&#039;&lt;br /&gt;
| —&lt;br /&gt;
| Scheduled within &#039;&#039;&#039;24 hours&#039;&#039;&#039;; task scheduled within &#039;&#039;&#039;2 weeks&#039;&#039;&#039; upon availability of End Users/Requestors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== D. Downloading ITR Reports ===&lt;br /&gt;
&lt;br /&gt;
Report Filters:&lt;br /&gt;
* All ITR&lt;br /&gt;
* Period of Current Fiscal Year&lt;br /&gt;
* Add Column: ITR Type&lt;br /&gt;
* Time Difference (Prepared to Check) – Received&lt;br /&gt;
* Time Difference (Checked to Approved) – Ongoing&lt;br /&gt;
* Time Difference (Approved to Done) – Done&lt;br /&gt;
&lt;br /&gt;
If targets are exceeded, proceed to Root Cause Analysis.&lt;br /&gt;
&lt;br /&gt;
=== E. Collecting Feedback ===&lt;br /&gt;
&lt;br /&gt;
# Conduct a survey to manage and understand requester expectations, enhancing overall satisfaction and driving continuous improvement.&lt;br /&gt;
# &#039;&#039;After fulfilling the request, send a survey link to the requestor.&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;IT Manager:&#039;&#039;&#039; Monitors survey results to ensure consistent and accurate data collection.&lt;br /&gt;
# &#039;&#039;&#039;IT Director:&#039;&#039;&#039; Reviews analysis results and identifies areas for improvement.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Documentation ==&lt;br /&gt;
&lt;br /&gt;
All action request forms and related documentation should be archived systematically and retained for a &#039;&#039;&#039;minimum of 3 years&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Google Form version of the IT Request System is replaced by this system.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Document Control ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Created by&lt;br /&gt;
! Reviewed by&lt;br /&gt;
! Approved by&lt;br /&gt;
!&lt;br /&gt;
|-&lt;br /&gt;
| Macy Milleza&lt;br /&gt;
| Emmilyn Requierme&lt;br /&gt;
| Avegail Mindanao&lt;br /&gt;
| Justin Aquino&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=8D_(Eight_Discipline)_Problem_Solving_Procedure&amp;diff=33</id>
		<title>8D (Eight Discipline) Problem Solving Procedure</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=8D_(Eight_Discipline)_Problem_Solving_Procedure&amp;diff=33"/>
		<updated>2026-02-25T06:50:59Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= 8D-OP-01: Eight Discipline (8D) Problem Solving Procedure =  &amp;#039;&amp;#039;Revised for Clarity&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Document Control:&amp;#039;&amp;#039;&amp;#039; 8D-OP-01 | Rev. 0 | Effective: 30-Oct-2017 | Prepared by: IMS | Approved by: Top Management  [https://next.comfaccorp.com/s/MgENbcMPSZxmgRe CGG 8D Form Download]  == 1. Objective ==  Establish a systematic, team-based approach for identifying, analyzing, correcting, and preventing problems or nonconformities in products, services, and processes.  == 2. Scope ==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 8D-OP-01: Eight Discipline (8D) Problem Solving Procedure =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Revised for Clarity&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Document Control:&#039;&#039;&#039; 8D-OP-01 | Rev. 0 | Effective: 30-Oct-2017 | Prepared by: IMS | Approved by: Top Management&lt;br /&gt;
&lt;br /&gt;
[https://next.comfaccorp.com/s/MgENbcMPSZxmgRe CGG 8D Form Download]&lt;br /&gt;
&lt;br /&gt;
== 1. Objective ==&lt;br /&gt;
&lt;br /&gt;
Establish a systematic, team-based approach for identifying, analyzing, correcting, and preventing problems or nonconformities in products, services, and processes.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==&lt;br /&gt;
&lt;br /&gt;
Applies to all forms of nonconformity and complaints involving:&lt;br /&gt;
&lt;br /&gt;
* Products and Services&lt;br /&gt;
* Fit-out category issues&lt;br /&gt;
* Installation work&lt;br /&gt;
* Customer Complaints&lt;br /&gt;
* Internal Complaints&lt;br /&gt;
* Audit findings (External and Internal)&lt;br /&gt;
* Any unmet target, objective, or procedural lapse&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Customer-requested changes to conforming products/services are &#039;&#039;&#039;not&#039;&#039;&#039; considered nonconformities.&lt;br /&gt;
&lt;br /&gt;
== 3. Definitions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Nonconformity:&#039;&#039;&#039; Deviation from agreed specifications or standards.&lt;br /&gt;
* &#039;&#039;&#039;Recurrence:&#039;&#039;&#039; Repetition of a problem due to misidentification of the root cause.&lt;br /&gt;
* &#039;&#039;&#039;PNC:&#039;&#039;&#039; Product Nonconformity&lt;br /&gt;
* &#039;&#039;&#039;IC:&#039;&#039;&#039; Internal Complaint&lt;br /&gt;
* &#039;&#039;&#039;CC:&#039;&#039;&#039; Customer Complaint&lt;br /&gt;
* &#039;&#039;&#039;Executive Summary:&#039;&#039;&#039; Summary of actions and results achieved through problem-solving.&lt;br /&gt;
* &#039;&#039;&#039;Discretion:&#039;&#039;&#039; IMS Team and Top Management determine if a problem warrants an 8D, based on impact and complexity.&lt;br /&gt;
&lt;br /&gt;
== 4. References ==&lt;br /&gt;
&lt;br /&gt;
* Process Control Charts&lt;br /&gt;
* Production Work Instructions&lt;br /&gt;
* CNCP-F01: Delivery Nonconformance Report&lt;br /&gt;
* CNCP-F02: Customer Complaint / Product Nonconformity Report&lt;br /&gt;
* CNCP-F03: Complaints / Nonconformity Action Log&lt;br /&gt;
* CA-OP-01: Corrective Action Procedure&lt;br /&gt;
* CF-OP-01: Handling Customer Complaints&lt;br /&gt;
&lt;br /&gt;
== 5. Responsibilities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Role !! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Top Management / Directors&#039;&#039;&#039; || Monitor complaint resolution and intervene if closure is delayed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;All Departments&#039;&#039;&#039; || May raise issues using the 8D form or monitoring sheet.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Department Head / Supervisor&#039;&#039;&#039; || Default &#039;&#039;&#039;Team Leader&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Department Manager&#039;&#039;&#039; || Default &#039;&#039;&#039;Team Champion&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IMS Team&#039;&#039;&#039; || Assigns 8D teams, ensures process compliance, and maintains monitoring.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;8D Team&#039;&#039;&#039; || Performs analysis, implements corrective/preventive actions, and reports results.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Management Representative (MR)&#039;&#039;&#039; || Reviews and approves the final report.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. Procedure ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Completing the 8D Form ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Discipline !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D0 – Problem Awareness &amp;amp; Preparation&#039;&#039;&#039; || Identify issue, assign CAPA number, define ownership, and document references (e.g., SO, JO, ARF, NCR, CC, IC). Include details such as area, quantity, date/time, and short description.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D1 – Problem Description&#039;&#039;&#039; || Describe the issue using &#039;&#039;&#039;5W+2H&#039;&#039;&#039; (What, When, Where, Who, Why, How Many, How Much). Attach visuals (photos, flowcharts).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D2 – Team Formation&#039;&#039;&#039; || MR designates a cross-functional team to gather and analyze data.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D3 – Containment Actions&#039;&#039;&#039; || Define immediate steps to control impact and prevent escalation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D4 – Root Cause Analysis&#039;&#039;&#039; || Identify &#039;&#039;&#039;Problem Cause&#039;&#039;&#039; (why it occurred) and &#039;&#039;&#039;Escape Cause&#039;&#039;&#039; (why it wasn&#039;t detected).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D5 – Corrective Actions&#039;&#039;&#039; || Define and verify short-term corrective actions.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D6 – Implementation &amp;amp; Validation&#039;&#039;&#039; || Execute and validate actions using measurable data (e.g., reduced defects, increased yield, zero recurrence).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D7 – Preventive Actions&#039;&#039;&#039; || Update processes, FMEA, risk analysis, or parameters to prevent recurrence.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;D8 – Closure &amp;amp; Recognition&#039;&#039;&#039; || Summarize findings and results. Submit to Top Management for review and recognition of team efforts.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 6.2 General Procedures ===&lt;br /&gt;
&lt;br /&gt;
==== A. Customer Complaint Handling ====&lt;br /&gt;
&lt;br /&gt;
* Applies to post-handover issues not covered in punch lists.&lt;br /&gt;
* Reporter completes D0 and D1, then submits to IMS.&lt;br /&gt;
* IMS assigns a team and sends the file for completion.&lt;br /&gt;
* Team has &#039;&#039;&#039;1 week&#039;&#039;&#039; to complete the 8D report, including corrective and preventive actions.&lt;br /&gt;
* Unresolved reports after 1 week may be subject to disciplinary review (with due process).&lt;br /&gt;
&lt;br /&gt;
==== B. Internal Complaints (within CSC) ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;8D Required:&#039;&#039;&#039; For major incidents (e.g., line stoppage, reworks, repeated PNCs, or issues requiring &amp;gt;0.5 man-day effort).&lt;br /&gt;
* &#039;&#039;&#039;No 8D Needed:&#039;&#039;&#039; Minor issues logged in the complaint master list; still require root cause and corrective actions.&lt;br /&gt;
&lt;br /&gt;
==== C. Performance Review ====&lt;br /&gt;
&lt;br /&gt;
* IMS issues a &#039;&#039;&#039;Monthly 8D Performance Report&#039;&#039;&#039; to Top Management summarizing open, closed, and overdue actions.&lt;br /&gt;
&lt;br /&gt;
== 7. Documentation ==&lt;br /&gt;
&lt;br /&gt;
# Completed 8D Reports (with attachments) must be archived by SSD for &#039;&#039;&#039;3 years&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Document Numbering Format:&#039;&#039;&#039;&lt;br /&gt;
#: &amp;lt;code&amp;gt;YY-MM-CSC-[Code]-####&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Year (e.g., 17 → 2017)&lt;br /&gt;
#* Month (e.g., 09 → September)&lt;br /&gt;
#* CSC Site (P: Plant, M: Makati, C: Calbayog)&lt;br /&gt;
#* Type (CC: Customer Complaint, IC: Internal Complaint, etc.)&lt;br /&gt;
#* Series (0001…)&lt;br /&gt;
&lt;br /&gt;
== 8. Clarity Improvements ==&lt;br /&gt;
&lt;br /&gt;
* Simplified and unified terminology (removed redundancy and old phrasing).&lt;br /&gt;
* Clarified responsibility roles (Champion vs. Leader distinction).&lt;br /&gt;
* Added structured tables for readability.&lt;br /&gt;
* Aligned formatting for consistency with current Comfac-iT QMS style.&lt;br /&gt;
* Updated example numbering format for clarity.&lt;br /&gt;
&lt;br /&gt;
[[Category:QMS]]&lt;br /&gt;
[[Category:Procedures]]&lt;br /&gt;
[[Category:IMS]]&lt;br /&gt;
[[Category:Comfac]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Procedure:_CC-Blast_Data_Breach_Prevention&amp;diff=32</id>
		<title>Procedure: CC-Blast Data Breach Prevention</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Procedure:_CC-Blast_Data_Breach_Prevention&amp;diff=32"/>
		<updated>2026-02-25T06:50:29Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Procedure: CC-Blast Data Breach Prevention =  == Overview ==  A &amp;#039;&amp;#039;&amp;#039;CC-Blast Data Breach&amp;#039;&amp;#039;&amp;#039; occurs when someone mistakenly uses the &amp;#039;&amp;#039;&amp;#039;CC (Carbon Copy)&amp;#039;&amp;#039;&amp;#039; field instead of &amp;#039;&amp;#039;&amp;#039;BCC (Blind Carbon Copy)&amp;#039;&amp;#039;&amp;#039; when sending emails to multiple recipients. This exposes the personal email addresses of all recipients to each other.  This is considered a &amp;#039;&amp;#039;&amp;#039;personal data breach&amp;#039;&amp;#039;&amp;#039; under the &amp;#039;&amp;#039;&amp;#039;Data Privacy Act of 2012&amp;#039;&amp;#039;&amp;#039; and must be handled with urgency, professionalism, and complian...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Procedure: CC-Blast Data Breach Prevention =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;CC-Blast Data Breach&#039;&#039;&#039; occurs when someone mistakenly uses the &#039;&#039;&#039;CC (Carbon Copy)&#039;&#039;&#039; field instead of &#039;&#039;&#039;BCC (Blind Carbon Copy)&#039;&#039;&#039; when sending emails to multiple recipients. This exposes the personal email addresses of all recipients to each other.&lt;br /&gt;
&lt;br /&gt;
This is considered a &#039;&#039;&#039;personal data breach&#039;&#039;&#039; under the &#039;&#039;&#039;Data Privacy Act of 2012&#039;&#039;&#039; and must be handled with urgency, professionalism, and compliance with the organization&#039;s Privacy Manual.&lt;br /&gt;
&lt;br /&gt;
== Key Terms and Definitions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CC Blast&#039;&#039;&#039; – Accidentally exposing multiple recipients&#039; email addresses by placing them in the CC or To field instead of BCC.&lt;br /&gt;
* &#039;&#039;&#039;BCC Blast&#039;&#039;&#039; – Correctly sending a bulk email using the BCC field, which hides all recipient email addresses.&lt;br /&gt;
* &#039;&#039;&#039;Reply Storm (Reply-All Storm)&#039;&#039;&#039; – When recipients start replying-all in a CC blast chain, causing an uncontrollable cascade of unnecessary or sensitive emails to all parties.&lt;br /&gt;
* &#039;&#039;&#039;Clawback Limitation&#039;&#039;&#039; – Once personal emails are exposed in a CC blast, they cannot be taken back; the data has already been leaked.&lt;br /&gt;
&lt;br /&gt;
== Precautionary Measures ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Always Check Before Sending:&#039;&#039;&#039; When emailing multiple external contacts (students, clients, partners, etc.), &#039;&#039;&#039;use BCC instead of CC&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Tagging Personal Emails:&#039;&#039;&#039; Configure email systems to &#039;&#039;&#039;alert or warn&#039;&#039;&#039; when sending to recipients tagged as personal email domains (e.g., Gmail, Yahoo, Hotmail). Business/work accounts should be tagged separately.&lt;br /&gt;
# &#039;&#039;&#039;Use Templates:&#039;&#039;&#039; Provide standardized email templates for OJTs, interns, and staff with the &#039;&#039;&#039;BCC field pre-configured&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Two-Person Verification:&#039;&#039;&#039; For mass external communications, have another team member verify that recipients are properly placed in the BCC field before sending.&lt;br /&gt;
&lt;br /&gt;
== Response Procedure (If a CC-Blast Data Breach Happens) ==&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Do Not Reply-All:&#039;&#039;&#039; Immediately stop and &#039;&#039;&#039;avoid adding to the breach&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Send a BCC Notification:&#039;&#039;&#039; Draft a short apology and clarification email to all recipients, but &#039;&#039;&#039;send it via BCC&#039;&#039;&#039; to prevent further exposure. Include instructions to avoid replying to the group email.&lt;br /&gt;
# &#039;&#039;&#039;Notify Management:&#039;&#039;&#039; Escalate the incident to the &#039;&#039;&#039;Privacy Officer&#039;&#039;&#039; and &#039;&#039;&#039;Data Protection Officer (DPO)&#039;&#039;&#039;.&lt;br /&gt;
# &#039;&#039;&#039;Mandatory Reporting:&#039;&#039;&#039; Evaluate the incident. If it meets reporting criteria, &#039;&#039;&#039;notify the National Privacy Commission (NPC)&#039;&#039;&#039; within the prescribed timeframe.&lt;br /&gt;
# &#039;&#039;&#039;Document the Incident:&#039;&#039;&#039; Record the event details (number of recipients, exposed emails, response actions, corrective measures) in the &#039;&#039;&#039;Privacy Incident Register&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Accountability and Training ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Staff and OJTs&#039;&#039;&#039; must undergo periodic reminders and training distinguishing &#039;&#039;&#039;CC vs. BCC usage&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Supervisors&#039;&#039;&#039; must enforce the policy: &#039;&#039;&amp;quot;External personal emails = BCC only.&amp;quot;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;IT/Admin&#039;&#039;&#039; should deploy or configure systems that:&lt;br /&gt;
** Alert when sending to large groups of external addresses.&lt;br /&gt;
** Warn or block when multiple personal emails are detected in the CC field.&lt;br /&gt;
** Suggest converting CCs to BCCs automatically when thresholds are exceeded.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
A CC-blast is a preventable human error that exposes personal data and risks compliance violations. Once it occurs, &#039;&#039;&#039;the exposure cannot be undone&#039;&#039;&#039;, but &#039;&#039;&#039;swift containment using BCC communication and incident reporting&#039;&#039;&#039; can reduce further harm. The long-term solution lies in a &#039;&#039;&#039;combination of staff awareness, training, and technical safeguards&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Data Privacy]]&lt;br /&gt;
[[Category:Procedures]]&lt;br /&gt;
[[Category:Comfac]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=31</id>
		<title>Using Frappe Wiki</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Using_Frappe_Wiki&amp;diff=31"/>
		<updated>2026-02-25T06:49:43Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: Created page with &amp;quot;= Using Frappe Wiki =  == 1. Installation ==  === A. Frappe Cloud Installation ===  # Go to your &amp;#039;&amp;#039;&amp;#039;Dashboard&amp;#039;&amp;#039;&amp;#039;. # Choose &amp;#039;&amp;#039;&amp;#039;Go to Site&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;Go to Server&amp;#039;&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;&amp;#039;If Site:&amp;#039;&amp;#039;&amp;#039; * Select the site. * Go to &amp;#039;&amp;#039;&amp;#039;Apps&amp;#039;&amp;#039;&amp;#039;. * Click &amp;#039;&amp;#039;&amp;#039;Install App&amp;#039;&amp;#039;&amp;#039;. * Select &amp;#039;&amp;#039;&amp;#039;Wiki&amp;#039;&amp;#039;&amp;#039;.  &amp;#039;&amp;#039;&amp;#039;If Server:&amp;#039;&amp;#039;&amp;#039; * Go to &amp;#039;&amp;#039;&amp;#039;Application Server&amp;#039;&amp;#039;&amp;#039;. * Click &amp;#039;&amp;#039;&amp;#039;Install App&amp;#039;&amp;#039;&amp;#039;. * Select &amp;#039;&amp;#039;&amp;#039;Wiki&amp;#039;&amp;#039;&amp;#039;.  === B. Self-Hosted Installation ===  &amp;#039;&amp;#039;&amp;#039;If Docker-based setup:&amp;#039;&amp;#039;&amp;#039; * Ensure persistence using &amp;#039;&amp;#039;&amp;#039;drive volume...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Using Frappe Wiki =&lt;br /&gt;
&lt;br /&gt;
== 1. Installation ==&lt;br /&gt;
&lt;br /&gt;
=== A. Frappe Cloud Installation ===&lt;br /&gt;
&lt;br /&gt;
# Go to your &#039;&#039;&#039;Dashboard&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;Go to Site&#039;&#039;&#039; or &#039;&#039;&#039;Go to Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Site:&#039;&#039;&#039;&lt;br /&gt;
* Select the site.&lt;br /&gt;
* Go to &#039;&#039;&#039;Apps&#039;&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;&#039;Install App&#039;&#039;&#039;.&lt;br /&gt;
* Select &#039;&#039;&#039;Wiki&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Server:&#039;&#039;&#039;&lt;br /&gt;
* Go to &#039;&#039;&#039;Application Server&#039;&#039;&#039;.&lt;br /&gt;
* Click &#039;&#039;&#039;Install App&#039;&#039;&#039;.&lt;br /&gt;
* Select &#039;&#039;&#039;Wiki&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== B. Self-Hosted Installation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If Docker-based setup:&#039;&#039;&#039;&lt;br /&gt;
* Ensure persistence using &#039;&#039;&#039;drive volumes&#039;&#039;&#039; so changes are not lost after restart.&lt;br /&gt;
* Execute via terminal:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench get-app https://github.com/frappe/wiki&lt;br /&gt;
bench --site sitename install-app wiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Follow [https://github.com/frappe/wiki official instructions] for installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If VM setup:&#039;&#039;&#039;&lt;br /&gt;
* Access the command line.&lt;br /&gt;
* Run:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench get-app https://github.com/frappe/wiki&lt;br /&gt;
bench --site sitename install-app wiki&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Start your bench server:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bench start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Creating and Editing Wiki Pages ==&lt;br /&gt;
&lt;br /&gt;
=== Creating Markdown Versions of Documents ===&lt;br /&gt;
&lt;br /&gt;
* Upload files to &#039;&#039;&#039;Google Drive&#039;&#039;&#039;.&lt;br /&gt;
* Download as &#039;&#039;&#039;Markdown (.md)&#039;&#039;&#039;.&lt;br /&gt;
* Alternatively, use &#039;&#039;&#039;ChatGPT Canvas mode&#039;&#039;&#039; to export to markdown.&lt;br /&gt;
* Edit &amp;lt;code&amp;gt;.md&amp;lt;/code&amp;gt; files using any text editor.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Wiki Page ===&lt;br /&gt;
&lt;br /&gt;
# Navigate to &#039;&#039;&#039;Wiki &amp;gt; Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Add Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Enter the &#039;&#039;&#039;Title&#039;&#039;&#039; and &#039;&#039;&#039;Route&#039;&#039;&#039;.&lt;br /&gt;
# (Optional) Uncheck &#039;&#039;&#039;Allow Guest&#039;&#039;&#039; if you want restricted access.&lt;br /&gt;
&lt;br /&gt;
=== Creating from Website Interface ===&lt;br /&gt;
&lt;br /&gt;
# Click your &#039;&#039;&#039;Profile Icon&#039;&#039;&#039; (top-right corner).&lt;br /&gt;
# Select &#039;&#039;&#039;View Website&#039;&#039;&#039;.&lt;br /&gt;
# Navigate to your wiki (e.g., &amp;lt;code&amp;gt;https://yourdomain.frappe.cloud/wiki/home&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Click &#039;&#039;&#039;Edit Sidebar&#039;&#039;&#039; to manage topics.&lt;br /&gt;
# Use the &#039;&#039;&#039;+ icon&#039;&#039;&#039; under each sidebar to add new pages.&lt;br /&gt;
&lt;br /&gt;
== 3. Sorting and Organizing Wiki Pages ==&lt;br /&gt;
&lt;br /&gt;
=== Using Wiki Space ===&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;Wiki Space&#039;&#039;&#039;.&lt;br /&gt;
# Select the &#039;&#039;&#039;Default Wiki&#039;&#039;&#039;.&lt;br /&gt;
# Under &#039;&#039;&#039;Wiki Space &amp;gt; Wiki&#039;&#039;&#039;, organize the &#039;&#039;&#039;Parent Labels&#039;&#039;&#039;.&lt;br /&gt;
#* These will become sidebar sections.&lt;br /&gt;
# Add child pages under each parent label for collapsible sections.&lt;br /&gt;
&lt;br /&gt;
You can also create multiple wiki spaces for different departments or teams (e.g., HR, Accounting, Projects).&lt;br /&gt;
&lt;br /&gt;
== 4. Backup and Data Management ==&lt;br /&gt;
&lt;br /&gt;
=== Backing Up Wiki Content ===&lt;br /&gt;
&lt;br /&gt;
You can back up your wiki using &#039;&#039;&#039;Data Import&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# Go to &#039;&#039;&#039;Data Import&#039;&#039;&#039;.&lt;br /&gt;
# Select &#039;&#039;&#039;Doctype: Wiki Page&#039;&#039;&#039;.&lt;br /&gt;
# Choose &#039;&#039;&#039;Update Entries&#039;&#039;&#039;.&lt;br /&gt;
# Click &#039;&#039;&#039;Download All Wiki Entries&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This creates a JSON/CSV export of all your Wiki pages for backup or version control.&lt;br /&gt;
&lt;br /&gt;
== 5. Common Wiki Features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Pages&#039;&#039;&#039; || Create and manage markdown-based documentation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Space&#039;&#039;&#039; || Organize topics by category.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Feedback&#039;&#039;&#039; || Collect comments and feedback on pages.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Page Patches&#039;&#039;&#039; || Track edits or updates before publishing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Settings&#039;&#039;&#039; || Configure permissions, visibility, and site links.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Wiki Page Revisions&#039;&#039;&#039; || View previous versions of each page.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Broken Links Report&#039;&#039;&#039; || Identify dead or missing links within the Wiki.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. Recommended Practices ==&lt;br /&gt;
&lt;br /&gt;
* Use &#039;&#039;&#039;consistent titles and routes&#039;&#039;&#039; for better searchability.&lt;br /&gt;
* Always review &#039;&#039;&#039;Broken Links Report&#039;&#039;&#039; after restructuring.&lt;br /&gt;
* Maintain a &#039;&#039;&#039;single Wiki Space&#039;&#039;&#039; for each division (e.g., Accounting, HR, Projects).&lt;br /&gt;
* For collaborative editing, enable controlled publishing with &#039;&#039;&#039;Wiki Page Patches&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Issue !! Possible Cause !! Solution&lt;br /&gt;
|-&lt;br /&gt;
| Wiki not appearing in navbar || Navbar link not configured || Go to Website Settings &amp;gt; Navbar &amp;gt; Add Wiki link&lt;br /&gt;
|-&lt;br /&gt;
| Edits not saving || No persistent volume (Docker) || Mount volume or reconfigure persistent storage&lt;br /&gt;
|-&lt;br /&gt;
| Missing sidebar || No parent label in Wiki Space || Add Parent Label under Wiki Space&lt;br /&gt;
|-&lt;br /&gt;
| Access denied || Guest access disabled || Enable &#039;&#039;&#039;Allow Guest&#039;&#039;&#039; if public access is required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ERPNext]]&lt;br /&gt;
[[Category:Wiki]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Comfac]]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=30</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=Main_Page&amp;diff=30"/>
		<updated>2026-02-25T06:48:08Z</updated>

		<summary type="html">&lt;p&gt;BabiSender: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
# [[Mediawiki Setting Up Guide]]&lt;br /&gt;
# [[Mediawiki Additional Configuration]]&lt;br /&gt;
# [[ERPNext Webshop Setup Guide]]&lt;br /&gt;
# [[Manufacturing v16 260125]]&lt;br /&gt;
# [[ERpnext Asset Management Procedure 260113 ]]&lt;br /&gt;
# [[260108 CGG- GitHub Administration Guide ]]&lt;br /&gt;
# [[ERPNext HR Module Outline ]]&lt;br /&gt;
# [[Controller Systems 251213-01 ]]&lt;br /&gt;
# [[Power Distribution Tree 251213 ]]&lt;br /&gt;
# [[Home ]]&lt;br /&gt;
# [[Standard Operating Procedure: Distributed Minute Taking &amp;amp; Task Ownership 251208 ]]&lt;br /&gt;
# [[OpenWebUI - 251128-justin ]]&lt;br /&gt;
# [[Comfac ERPNext Strategy Canvas (Expanded) ]]&lt;br /&gt;
# [[IT Purchase Requests 241126 ]]&lt;br /&gt;
# [[TrueNAS Business Plan: Project 251212 ]]&lt;br /&gt;
# [[ERPNEXT Payroll POC 251212 ]]&lt;br /&gt;
# [[Offline Malware Remediation &amp;amp; Data Recovery ]]&lt;br /&gt;
# [[TrueNAS Configuration Options &amp;amp; Scale Options 251130 ]]&lt;br /&gt;
# [[SOP: Network Troubleshooting &amp;amp; pfSense Monitoring 251130 ]]&lt;br /&gt;
# [[System Hardening Strategy: Win2Lin Migration &amp;amp; Infrastructure 251129 ]]&lt;br /&gt;
# [[IT IMPORTS PROCESSES ]]&lt;br /&gt;
# [[Skills and Competencies for IT Staff Trained in pfSense ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Industrial Controllers and Water Utilities 251011 ]]&lt;br /&gt;
# [[Comfac Sales Knowledge Base ]]&lt;br /&gt;
# [[🌐 WordPress Website — *You Own Everything, Learn Everything* ]]&lt;br /&gt;
# [[Business Continuity ]]&lt;br /&gt;
# [[Using Frappe Wiki ]]&lt;br /&gt;
# [[Procedure: CC-Blast Data Breach Prevention ]]&lt;br /&gt;
# [[8D (Eight Discipline) Problem Solving Procedure ]]&lt;br /&gt;
# [[IT REQUEST (OP-ERP-ITR) - EDITED 250801 ]]&lt;br /&gt;
# [[Steps to Repair and OCR a Scanned or Corrupted PDF in Ubuntu ]]&lt;br /&gt;
# [[pfSense Sales Training Material ]]&lt;br /&gt;
# [[Projects in Process Report 251023 ]]&lt;br /&gt;
# [[SALES INVOICE TAX OUTPUT 250829 ]]&lt;br /&gt;
# [[2026 MIS IT KRA KPI Biz Plan ]]&lt;br /&gt;
# [[Tplink Mikrotik Equivalent ]]&lt;br /&gt;
# [[Google Drive and Shared Drive Training ]]&lt;br /&gt;
# [[Mailcow SOGo: Creating Filters for Events, Approvals, and Organizational Emails ]]&lt;br /&gt;
# [[Comparison: TrueNAS Mini X+ vs Dell Precision 3680 Tower (2025) ]]&lt;br /&gt;
# [[ERPNext Webshop Setup and Publishing Process ]]&lt;br /&gt;
# [[Excel Description Filler Tool 📝 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Biz Analysis Methodology 251109 ]]&lt;br /&gt;
# [[Comfac CRM – Customer Qualification &amp;amp; Conversion Process ]]&lt;br /&gt;
# [[Comfac GPU Scaling and AI Research Goals ]]&lt;br /&gt;
# [[Backblaze Drive Stats for Server and Storage Qualification ]]&lt;br /&gt;
# [[🧠 Process: Selecting and Installing the Right Ollama Model for Your Hardware ]]&lt;br /&gt;
# [[Partner Reseller Pricing 251109 ]]&lt;br /&gt;
# [[LibreOffice / Nextcloud Office – &amp;quot;Due Tasks&amp;quot; Conditional Formatting ]]&lt;br /&gt;
# [[pfSense CE → pfSense Plus Upgrade Guide ]]&lt;br /&gt;
# [[Introduction: Why Self-Host Your Email? ]]&lt;br /&gt;
# [[Spoof Timezone Extension – Setup Guide for Comfac Staff ]]&lt;br /&gt;
# [[Mailcow + Thunderbird Setup Guide (Email + Calendar) ]]&lt;br /&gt;
# [[Viber Focus-Stealing ]]&lt;br /&gt;
# [[Modern Guide: pfSense Captive Portal with FreeRADIUS &amp;amp; ACME ]]&lt;br /&gt;
# [[Frappe Links and References ]]&lt;br /&gt;
&lt;br /&gt;
== For Users Only ==&lt;br /&gt;
* [[Private:Private Ngani]]&lt;br /&gt;
&lt;br /&gt;
== Need Help? ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>BabiSender</name></author>
	</entry>
</feed>