From 905b03acbba0f2f9a1044f0bb38dcb5c65f99d8a Mon Sep 17 00:00:00 2001 From: james-haytko_nwx Date: Mon, 2 Mar 2026 17:23:05 -0600 Subject: [PATCH 1/2] doc rewrite --- docs/passwordsecure/9.2/msp_system.md | 63 ++++++++++++++------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/docs/passwordsecure/9.2/msp_system.md b/docs/passwordsecure/9.2/msp_system.md index 43371e0260..0b82b0ec24 100644 --- a/docs/passwordsecure/9.2/msp_system.md +++ b/docs/passwordsecure/9.2/msp_system.md @@ -1,58 +1,59 @@ --- -title: "MSP System" -description: "MSP System" +title: "MSP system" +description: "Minimum hardware requirements for MSP system deployments" sidebar_position: 30 --- -# MSP System +# MSP system -To ensure optimal operation, we recommend that the following hardware resources are made available: +Ensure the following hardware resources are available for optimal MSP system operation. ## Microsoft SQL Server -The following system requirements are the minimum system requirements and should manage around 10 -customers with less than 20 users each. +These are the minimum system requirements for supporting approximately 10 customers with fewer than 20 users each. -- Windows Server 2016 (or newer) -- MSSQL Server 2014 (or newer) -- 4 CPU’s +- Windows Server 2016 or later +- MSSQL Server 2014 or later +- 4 CPUs - 16 GB RAM -- min. 100 GB HDD +- 100 GB HDD -**CAUTION:** Please note, that using a SQL Server with Express edition is not recommended because of -diverse limitations there. +:::warning +Using SQL Server Express edition isn't recommended because of its limitations. +::: -If your customer's count is growing over time, you should add every 200 users a minimum of at least: +Add the following resources for every additional 200 users: -- 2 CPU’s +- 2 CPUs - 8 GB RAM -## Application Server +## Application server -The following system requirements are the minimum system requirements and should manage around 10 -customers with 20 users each. +These are the minimum system requirements for supporting approximately 10 customers with 20 users each. -- Windows Server 2016 (or newer) -- 4 CPU’s +- Windows Server 2016 or later +- 4 CPUs - 16 GB RAM -- min. 50 GB HDD +- 50 GB HDD - .NET Framework 4.8 -If your customer's count is growing over time, you should add every 200 users a minimum of at least: +Add the following resources for every additional 200 users: - 1 CPU - 4 GB RAM -RECOMMENDED: Currently, we suggest you use an application server to handle a max of about 100 -customers. So if you reach 100 customers, you should set up a second Application Server or use some -sort of load balancing between the application servers. +:::tip +Netwrix recommends limiting each application server to a maximum of approximately 100 customers. If you reach 100 customers, set up a second application server or configure load balancing between your application servers. +::: -**CAUTION:** Every additional 1000 users an additional Web-Endpoint - incl. loadbalancing - is -recommended +:::warning +For every additional 1,000 users, add an additional web endpoint with load balancing. +::: -**CAUTION:** Every additional 100 customers/1000 users an additional Application Server - incl. -loadbalancing - is recommended. +:::warning +For every additional 100 customers or 1,000 users, add an additional application server with load balancing. +::: -NOTE: Please note that individual variables - like the number of passwords per user - will affect -performance. Especially for MSP-Systems it is required to monitor performance continuously, and add -additional resources on demand. +:::note +Individual variables—such as the number of passwords per user—affect performance. For MSP systems, monitor performance continuously and add resources as needed. +::: From 313fbb1b1c74417539831da65f66ab6c4175d1ad Mon Sep 17 00:00:00 2001 From: james-haytko_nwx Date: Mon, 2 Mar 2026 17:39:41 -0600 Subject: [PATCH 2/2] Guarantee consistent doc review output format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rewrite normalize_review_body() with clean patterns covering all known deviations: file headings (### file.md → **file.md**), line headings, bold line refs (**Line N:** and **Line N: label.**), bullet line refs - Add bullet line ref pattern (- Line N: desc → plain text) - All patterns now output plain-text Line N: lines, not bold **Line N:** - Update workflow prompt step 3 to show explicit format example instead of vague "in the format from your instructions" placeholder Generated with AI Co-Authored-By: Claude Code --- .../claude-documentation-reviewer.yml | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/.github/workflows/claude-documentation-reviewer.yml b/.github/workflows/claude-documentation-reviewer.yml index 3e61aafbba..7617a2ad72 100644 --- a/.github/workflows/claude-documentation-reviewer.yml +++ b/.github/workflows/claude-documentation-reviewer.yml @@ -99,10 +99,15 @@ jobs: 2. Review ONLY the added or modified lines from the diff for issues per your instructions. Do not report issues on lines that were not changed. - 3. You MUST write your complete review to `/tmp/review-summary.md` — always, even if there are no issues. Use this exact structure — issues organized by file with a subheading for each file, in the format from your instructions: + 3. You MUST write your complete review to `/tmp/review-summary.md` — always, even if there are no issues. Use this exact structure: ## Issues in PR changes - + + **path/to/file.md** + + Line N: description of issue and fix. + + (Repeat for each file and issue. Write "None." if there are no issues.) 4. Fix ALL issues directly in the files using the Write and Edit tools. Do not post a PR comment. Do not commit or push. @@ -257,21 +262,37 @@ jobs: return valid def normalize_review_body(body): - """Normalize issue formatting to single-line **Line N:** entries.""" + """Normalize issue formatting to plain-text Line N: entries under **bold** file headers.""" src = body.split('\n') result = [] i = 0 while i < len(src): line = src[i] - # Convert heading format: ### Line N: ... → **Line N:** ... - m = re.match(r'^#{1,6}\s+(Line \d+):(.+)$', line) + # Convert file path heading: ### path/to/file.md → **path/to/file.md** + m = re.match(r'^#{1,6}\s+(\S+\.md)\s*$', line) + if m: + result.append(f'**{m.group(1)}**') + i += 1 + continue + + # Convert line heading: ### Line N: description → Line N: description + m = re.match(r'^#{1,6}\s+(Line \d+):\s*(.*)$', line) if m: - result.append(f'**{m.group(1)}:**{m.group(2)}') + desc = m.group(2).strip() + result.append(f'{m.group(1)}: {desc}' if desc else f'{m.group(1)}:') i += 1 continue - # Convert bold-closed format: **Line N: label.** + continuation → **Line N:** label. continuation. + # Convert bold line ref (colon outside stars): **Line N:** description → Line N: description + m = re.match(r'^\*\*(Line \d+):\*\*\s*(.*)$', line) + if m: + desc = m.group(2).strip() + result.append(f'{m.group(1)}: {desc}' if desc else f'{m.group(1)}:') + i += 1 + continue + + # Convert bold-closed line ref: **Line N: label.** + sub-bullets/continuation → Line N: label. continuation. m = re.match(r'^\*\*(Line \d+):\s*(.*?)\*\*\s*$', line) if m: lineref = m.group(1) @@ -292,7 +313,15 @@ jobs: else: break desc = '. '.join(parts).rstrip('.') - result.append(f'**{lineref}:** {desc}.' if desc else f'**{lineref}:**') + result.append(f'{lineref}: {desc}.' if desc else f'{lineref}:') + continue + + # Convert bullet line ref: - Line N: description → Line N: description + m = re.match(r'^[-*]\s+(Line \d+):\s*(.*)$', line) + if m: + desc = m.group(2).strip() + result.append(f'{m.group(1)}: {desc}' if desc else f'{m.group(1)}:') + i += 1 continue # Collapse numbered list items with sub-bullets (e.g. 1. **Issue title**: desc\n - Current: ...\n - Fix: ...) @@ -309,7 +338,7 @@ jobs: parts.append(sub.strip().rstrip('.')) i += 1 desc_text = '. '.join(parts).rstrip('.') - result.append(f'**{title}.** {desc_text}.' if desc_text else f'**{title}.**') + result.append(f'{title}: {desc_text}.' if desc_text else f'{title}.') continue result.append(line)