PMIS documentation

Reports

Reports are filled from your own Word or Excel templates, using data entered once on the project, the team's profiles and the project's findings.

Preparing a template

  1. Start from your organisation's report in Word (.docx), or in Excel (.xlsx) for Network projects. The Report Template/ folder in the source has eight sample Word templates for PCI and VAPT (Web, API, Mobile, Thick Client).
  2. Write each value PMIS should fill in as a placeholder in braces, for example {Client Name}. Word templates are scanned for the literal {…} text, so no highlighting is needed. The one exception is the Tester, Team Lead and Manager contact table, where PMIS writes into the highlighted run of each cell: keep the highlight your template already has there.
  3. Keep each placeholder's text together. Don't rename the placeholders in the findings tables. Keep table header rows intact.
UploadWord or Excel Mapplaceholders ActivateAdmin Generateon the project Downloadlink lasts 1 hour
The report flow. Admins do the first three steps once per template; testers repeat the last two for each project.

How placeholder names are matched

Names recognised without mapping

Click a placeholder to copy it. Where several names are listed, any one of them works.

PlaceholderValueSource
{Start Date} {End Date}Project start and end dates. each date placeholder has its own format under Settings > Formatting > Additional date placeholder formats. Defaults: {Start Date} October 05, 2026 and {End Date} DD-MM-YYYY. Both in one text run give “Start Date …, to End Date …”.Project form
{QA Reviewer Name}QA reviewer. Prints N/A when empty.Project form
{Tester Name} {Team Lead Name}Assigned tester and Team Lead. Empty if unassigned.Project
{Manager}The Team Lead’s manager. Prints N/A when empty.User management
{Manager Designation} {Manager Phone} {Manager Email}Manager contact details. N/A when empty.Profile
{Team Lead Designation} {Team Lead Phone} {Team Lead Email}Team Lead contact details. N/A when empty.Profile
{Tester Designation} {Tester Phone} {Tester Email}Tester contact details. N/A when empty.Profile
{Application Name}Project name. Falls back to the text “Application Name” (“API Name” for API projects) when empty.Project form
{App Version}Application version.Project form
{Document Version} {Version Ex}The report’s own version: 1.0, 1.1, 1.2 and so on, rising with each generation.Automatic
{Client SPOC Name} {Client SPOC Designation} {Client SPOC Email}Client contact. N/A when empty.Project form
{Client Name}Client organisation.Project form
{Client Name & Location}Client name and location, joined with a comma.Project form
{Location}Client location.Project form
{Month DD, YYYY}Date the report was generated.Automatic
{Report Date}Generation date in the format set in Settings.Automatic
{Tools Used} {Tools Name}Tools Used text.Project form
{Details & Scope}Build details and scope together, one per line.Project form
{Scope}Scope text.Project form
{Total Scope Count}Number of network scope entries.Project form (Network)
{Testing Environment} {Staging/UAT}Testing Environment.Project form
{Testing Approach} {Black Box} {Grey Box}Black box or grey box approach.Project form
{Login Role Types}Types of Login System.Project form
{Nature or Purpose}Nature / Purpose of the Application.Project form
{Testing Limitation}Testing Limitation. N/A when empty.Project form
{Build Details}Application / Build Details.Project form
{Android/iOS}Mobile platform.Project form
{SHA-1} {SHA1}SHA-1 hash of the tested build.Project form
{External/Internal}Scope Exposure.Project form (Network)
{VAPT}Network Activity Type (VA, PT or VAPT). Any name containing “VAPT” matches.Project form (Network)
{Quarter}Quarter/Frequency.Project form (Network)
{Number of Days}Repeats once per audit phase, in document order: Planning, Information Gathering, Scanning & Exploitation, Reporting. The project’s days are split 1 : 2 : 4 in half-day steps and Reporting is always 1 day. Empty if the dates are missing.Calculated from the dates
{Testing Type} {Platform Type}The platform: Web Application, API, Mobile Application, Thick Client, Network or Application.Project form
{Testing Type} alone prints the platform (Web Application, API, …). Use {Testing Approach} for Black or Grey Box, or name the placeholder with “Black Box”/“Grey Box” in it. Values in a project’s custom fields are matched by the field’s key, after the rules above.

Parameters you can map (Admin)

After upload, an Admin can map each detected placeholder to one of these parameters. A mapping wins over the built-in names. If the mapped parameter has no value for a project, the mapping is skipped and the built-in names are tried; if none match, the placeholder stays as literal text.

GroupParameterUsed forEntered in
ProjectApplication NameThe project name: the app, API or product under test.Project form: Application Name
ProjectApp VersionVersion of the application being tested.Project form: App Version
ProjectApplication Name & Version (combined)Name and version on one line, for cover page titles.Project form: Application Name, App Version
ProjectDocument VersionReport version. Rises with each generation (1.0, 1.1, 1.2).Automatic
ProjectClient NameOrganisation that ordered the test.Project form: Client Name
ProjectClient Name & Location (combined)Client name and site, joined with a comma.Project form: Client Name, Location
ProjectProject Start DateFirst day of the testing window, in the date format set in Settings.Project form: Start Date
ProjectProject End DateLast day of the testing window.Project form: End Date
ProjectStart & End Date (combined)Both dates in one sentence: Start Date …, to End Date ….Project form: Start Date, End Date
ProjectScopeURLs, hosts or modules in scope.Project form: Scope
ProjectApplication Details & Scope (combined)Build details and scope together, one per line.Project form: Build Details, Scope
ProjectBuild DetailsBuild, release or environment description.Project form: Build Details
ProjectTools UsedTools used during testing.Project form: Tools Used
ProjectTesting EnvironmentWhere testing ran, such as UAT, staging or production.Project form: Testing Environment
ProjectTesting Type (Black/Grey Box)Black box or grey box approach.Project form: Approach
ProjectTesting Type (Platform)Web Application, API, Mobile Application, Thick Client, Network or Application.Project form: Testing Type (Platform)
ProjectLogin/Role TypesUser roles or logins used during testing.Project form: Login/System Types
ProjectNature/Purpose of ApplicationWhat the application does for the client.Project form: Application nature
ProjectTesting LimitationConstraints that limited testing. Prints N/A when empty.Project form: Testing Limitation
ProjectQA Reviewer NamePerson who reviewed the report. Prints N/A when empty.Project form: QA Name
ProjectMobile Platform (Android/iOS)Android or iOS, for mobile projects.Project form: Android/iOS
ProjectSHA-1 HashHash of the tested build.Project form: SHA-1
SCRCode Location (SCR)Where the source code is. Placeholder {Code Location}. Blank when empty.Project form: Code Location (SCR only)
SCRScanning System Username (SCR)User logged in on the system used for the scan. Placeholder {system username}. Blank when empty.Project form: Scanning System Username (SCR only)
SCRScanning System Hostname (SCR)Hostname of the system where the scan ran. Placeholder {system hostname}. Blank when empty.Project form: Scanning System Hostname (SCR only)
NetworkScope Exposure (External/Internal)Whether the scope is external or internal.Project form: Exposure
NetworkNetwork Activity Type (VA/PT/VAPT)Which activities the engagement covers.Project form: Activity Type
NetworkTotal Scope CountNumber of IPs or hosts in scope.Project form: Scope Count
NetworkQuarterReporting quarter, for recurring network assessments.Project form: Quarter/Frequency
Client contactClient SPOC NameClient point of contact (CERT-In projects). Prints N/A when empty.Project form: Client SPOC Name
Client contactClient SPOC DesignationThe contact's job title. Prints N/A when empty.Project form: Client SPOC Designation
Client contactClient SPOC Email IDThe contact's email. Prints N/A when empty.Project form: Client SPOC Email ID
PeopleTester NameName of the assigned tester.Project assignment and Profile
PeopleTeam Lead NameName of the assigned Team Lead.Project assignment and Profile
PeopleManager NameThe Team Lead's manager (AVP). Prints N/A when empty.User management
PeopleManager DesignationManager's job title.Profile
PeopleManager PhoneManager's phone number.Profile
PeopleManager EmailManager's email.Profile
PeopleTeam Lead DesignationTeam Lead's job title.Profile
PeopleTeam Lead PhoneTeam Lead's phone number.Profile
PeopleTeam Lead EmailTeam Lead's email.Profile
PeopleTester DesignationTester's job title.Profile
PeopleTester PhoneTester's phone number.Profile
PeopleTester EmailTester's email.Profile
ReportReport Generation DateDate the report was generated.Automatic
ReportReport Date (format set in Settings)Generation date in the format an Admin sets in Settings.Automatic
ReportReport Name (Generated Filename)The generated file name. Empty while the file name itself is being built.Automatic

Finding placeholders

Used inside the findings tables of a Word template and the finding rows of an Excel template. Each takes its value from the finding and its library entry.

PlaceholderValueWhen empty
{S No} {Finding No} {SNo}Finding number, such as “1.”Always set
{Finding Title} {Vulnerability Name}Vulnerability name.Always set
{Severity}Severity, from the CVSS override if one is set.Always set
{CVSS Score} {Score Value}CVSS score.N/A
{CVSS Vector}CVSS vector.N/A
{CVSS}Score and vector together, “score | vector”.N/A
{CVE/CWE}CVE and CWE IDs joined with “ / ”.N/A
{CVE ID} {CVE}CVE ID.N/A
{CWE ID} {CWE}CWE ID.N/A
{Description} {Vulnerability Description}Description.N/A
{Impact} {Vulnerability Impact}Impact text. For a Fortify finding in an SCR project, {Impact} is instead the matrix Impact level (Low, Medium or High); {Vulnerability Impact} always stays the text.N/A
{Likelihood}Fortify findings in SCR projects only: Likelihood level (Low, Medium or High) from the Overall Risk Severity matrix, derived from the finding's severity (Critical: High/High, High: Medium/High, Medium: Medium/Medium, Low: Low/Medium, Info: Low/Low as Likelihood/Impact). Blank when the severity is not supported.Left as is
{Remediation} {Vulnerability Remediation}Remediation.N/A
{Reference} {References} {Reference Link} {Vulnerability References}References.N/A
{Affected} {Affected URL} {Affected Instances}Affected URLs or hosts, one per line.N/A
{Authentication} {Authentication Type}Authentication type.N/A
{Vulnerability Dependency}Vulnerability dependency note.N/A
{Status} {Report Status}Report status of the finding.Open
{VA Vulnerability Name} {VA Severity} …A VA prefix on any name above gives the same value, but only for scan-imported (VA) findings.Left empty for non-VA findings
{VA Output}The finding’s Nessus plugin output, per host and port, from a .nessus file or from the Plugin Output column of a Nessus .csv.Empty

Tables and rows that repeat

PMIS finds these by their content, not by position, and does nothing if the template has no such table.

FormatTable or row setHow it is foundWhat is filled
WordNetwork scope tableA table whose text contains {IP} and {Purpose} (and {Domain&Hostname}).One row per scope entry.
Word, ExcelSite Map table (SCR)A table whose text contains {Directory Name} and {File Name}.One row per uploaded file. With no Site Map the row stays once, empty.
WordTools used tableA table containing {Tool Name} and {Tool Version}.One row per tool in the project’s tools table.
WordNmap port tableA table whose text contains “nmap” and {Port}, plus {Protocol}, {Service}, {Status}.One row per imported Nmap record.
WordFindings tablesSummary table ({Vulnerability Name} or {Finding Title} with CVE/CWE or score) and detailed table (the same plus description or remediation).One row or block per finding; PoC steps and screenshots go in the detailed table’s PoC row. A step with several screenshots prints all of them, in the order set on the finding, each with a thin black border.
WordContact tableRows named Tester, Team Lead and Manager.Written into the highlighted run of each cell.
ExcelScope rowsA row containing placeholders named IP and Purpose (and optionally Domain).Row repeats per scope entry; empty values print NA.
ExcelPort scan rowsA row with a Port placeholder and one whose name contains “nmap”, plus Protocol, Service, Status.Row repeats per Nmap record; empty values print NA.
ExcelVA rowsA row containing any placeholder that starts with VA .Row repeats per VA finding.
ExcelFinding rowsA row containing {Vulnerability Name}.Row repeats per finding. In Network projects it takes PT findings only, because VA findings use the VA rows.

Compliance status

{Compliance Status} or {Project Status} (any spacing or underscore form) prints Compliant or Non-Compliant in both Word and Excel, from the project’s saved status. A project that is still In Progress prints as Non-Compliant, exactly like one saved as Non-Compliant. When it is alone in its cell or paragraph, the background is green (#92D050) for Compliant and red (#FF0000) for Non-Compliant and In Progress. With no status saved it stays empty and the template background is left as it is. Generating a report never changes the saved status. In Word it also works in headers, footers and the file name.

VA and PT sections (Word, Network)

Wrap content that applies only to vulnerability assessment or only to penetration testing in marker paragraphs. These are control markers, not parameters: they are never listed as fields. Each marker must be the only text in its paragraph, in any letter case:

{#VA}
 ... VA-only paragraphs and tables ...
{/VA}

{#PT}
 ... PT-only paragraphs and tables ...
{/PT}

A VA project keeps the VA blocks, a PT project keeps the PT blocks, and VAPT keeps both. If the activity type is not set, both are kept. Page and section breaks on marker lines are preserved. Excel templates do not use markers: their rows repeat as described above. In Word Network reports, the Scope and Detail Findings headings start on a new page.

Two more optional block pairs work the same way: {#network}...{/network} is kept only for a Cert-In Network project, and {#SCR}...{/SCR} only for an SCR project (Cert-In, PCI or VAPT); each is removed for every other project. A template does not need to contain them, and a block whose closing marker is missing is left as it is, without an error.

Not supported

Uploading and activating (Admin)

  1. Open Reports (in the menu for Admins; an Admin can switch it on for other roles in Settings > RBAC, Open the Reports page) and upload the template. Choose a name, the category (VAPT, PCI, CERT-In, ASV), the format (Word or Excel), the activity type from the drop-down, and the effective-from date.
  2. PCI and VAPT templates cover Web, API, Mobile, Thick Client and Network. CERT-In offers Network, SCR and Application; Application is one template that serves every project except Network and SCR, which each need their own CERT-In template.
  3. Review the detected fields. Add any the detector missed, and map fields to values if the names differ.
  4. Activate the template. Projects of the matching category and activity type then use it.
Activating replaces the previous template. When you activate a template, any active template with the same category and format that covers the same activity types is replaced. Projects that used the old template move to the new one. If the old template covered only those activity types, it is made inactive when generated reports still point at it, and deleted (file and field mappings included) when nothing does. If it also covered other activity types, it keeps those. Reports already generated are not affected. Keep your own copy of every template file.

Inactive templates can be deleted from the same page.

Generating a report

  1. On the project page, choose Generate report and pick Word, or Excel for Network projects. Generation runs in the background, and the page updates when it finishes.
  2. The template is never picked by hand. A project uses the active Word template for its category and Testing Type (newest effective date wins), and is re-pointed automatically if that template is replaced. If none matches, generation names the missing template.
  3. Download the file. Download links expire after one hour. Reopening the report history gives fresh links.

Generation is blocked until both of these conditions hold:

Each completed generation gets the next version number, 1.1, 1.2 and so on. Failed attempts don't use a number. The file is named after the template's file name pattern, with project values filled in. The project status becomes Completed, and its retention countdown starts.

Issue Log

From the project, export the Issue Log as CSV: one row per finding. An Admin sets which columns appear, and in what order, under Settings. The header row is plain text (no surrounding quotation marks); data cells are quoted, and any cell that starts with =, +, - or @ is prefixed so spreadsheets do not run it as a formula. Findings added manually or imported from a file are included like any other finding of the project.

History and deletion

Every generation is listed in the project's report history with who generated it and when. Admins, and testers on their own projects, can delete a generated report.