A New Subscriber Website (SWS) is one which has not been released to members before or gone through the Software Development Process.
To develop and publish a Subscriber Website (SWS), review the Software Developer Requirements page for applicable DevOps, Usability, Corporate and Security requirements. Follow the process steps below:
Before you start the development of your Subscriber Website (SWS), determine which of the SWS hosting options works best for your deliverable:
- Standard SWS - Follow all steps below.
- Apps (e.g., Python) - Follow all steps below.
- MediaWiki - Follow the Standard SWS process except for the Steps 3, 4, and 7.
- Preproduction submittals are not required for MediaWiki sites; however, is available upon request.
- Prior to development, review the Wiki Development Guide (Internal EPRI URL).
- Preproduction submittals are not required for MediaWiki sites; however, is available upon request.
Microsites – For the Microsite development process, review and complete the Web & Mobile Request Form (Internal EPRI URL) in ServiceNow.
- SQA Intake Meeting (OPTIONAL): If not sure which hosting platform to utilize, the Project Manager starts the SWS process by requesting an SQA Intake Meeting (Jira Portal Ticket #1). The meeting will help determine which hosting platform to choose or if an alternate solution is required. When the SWS hosting platform is determined, continue to the next step.
- Obtain SWS URL and SWS Access ID Approvals: Project Manager must obtain approvals for the URL and SWS Access ID by submitting these forms:
- SWS URL Approval Request (Jira Portal Request #2)
- SWS Access ID Request (Jira Portal Ticket #3)
- SWS URL Approval Request (Jira Portal Request #2)
SWS Kick-off Meeting: Project Manager completes SWS Kick-off Meeting Request (Jira Portal Ticket #4). SQA coordinates the Kickoff Meeting with the appropriate IT personnel, Project Manager, and Software Development team to review the checklist and confirm readiness to proceed with the SWS development process. In some cases, if the checklist responses sufficiently meet the criteria, SQA may approve development without holding the meeting.
Upon a successful kick-off meeting:
- Approval to start development of the SWS will be given
- An On-Prem Azure DevOps (ADO) repository (Jira Portal Ticket #5) will be created by SQA for the project team to:
- Check in source code
- Request pipeline development
- Run the Checkmarx Source Code Security Scanner
- Compile/deploy code to EPRI IT Servers.
- Standard SWS:
- Must be compatible on the following stacks:
- Microsoft Windows Server 2016
- Microsoft Internet Information Server 10
- Microsoft SQL Server 2019
- Supported Programming Languages/Frameworks:
- Server-side languages/frameworks: .NET Core (C#, VB.NET, etc.), Python, and PHP
- Client-side languages: HTML, CSS, JavaScript
- Must be compatible on the following stacks:
- Apps (e.g., Python) SWS:
- Must be compatible with the standard development stack (3.C) with the exception:
- Cannot utilize database, must be self-contained. Utilization of independently published endpoints is allowed (e.g., external API or database that is maintained separately from the application).
- Cannot utilize PHP
- Must be compatible with the standard development stack (3.C) with the exception:
- Customer Experience (CX) Meeting: Project Manager working with the Software Developer submits the SWS Customer Experience (CX) Meeting Request (Jira Portal Ticket #6). The meeting will serve to:
- Align the SWS development with the overarching EPRI branding strategy
- Review the SWS customer/user experience
- Prepare a demo or mockup of the SWS to share via WebEx if possible
- Review development requirements BrandEPRI (Internal EPRI URL), Web & Mobile UX v5.0, and EPRIMobileFrameworkv1.0.pdf
- Determine next steps for the project
- Development: Software Developer codes the SWS (must meet all applicable requirements provided in the Software Developer Requirements page and SQA Testing Checklist). During this process you must upload your source code to the On-Prem ADO repository and request pipeline development.
- To Request Pipeline Development submit the ADO Pipeline Request (Jira Portal Ticket #7) uploading the source code build instructions (example provided) to develop your pipeline. The pipeline configuration is crucial to the SQA standing up of your site in the DEV, TEST, and PROD environments. SQA submittal cannot take place prior to the accessibility of your site in the TEST environment. Once the request is received an estimated completion date will be provided.
- The source-code for your SWS must be regularly checked in to EPRI's On-Prem ADO version control system. On-Prem ADO will serve as an IT managed backup for the code as well as a continuous integration (CI) system that will compile and deploy your code to EPRI IT managed web servers, along with the capability of running a Checkmarx source code scan in the build pipeline. When checking in source code to ADO there a few things to be aware of:
- The source code must be checked into the repository created and managed by SQA - this is the official repository.
- Repositories are for plaintext source code - checking in build artifacts and/or large binary files (e.g. DLL, EXE, etc.) is highly discouraged unless it is absolutely needed.
- If your application requires third-party dependencies those will be restored via your package manager (e.g. Nuget for .NET, NPM for JavaScript frameworks, Pip for Python, etc.).
- Storing large non-plaintext files in these repositories will increase the time it takes to clone and pull from them and is generally bad for version control best practices.
- When it's necessary to store large binary files (anything above 10 MB) Git LFS should be used.
- In Addition:
- If your application requires a database, please contact the DBA team with a backup file of your database so that they can restore it into an IT managed DB.
- You may request preliminary Qualys Web Application security scans in preparation for the next step to get ahead on remediating security vulnerabilities.
- Nuclear Sector SWS must include the Nuclear QMP Database Agreement Splash Screen in the application.
- Security Scans and InfoSec Approval: All SWS at a minimum are scanned by Checkmarx and Qualys. The Software Developer must submit an ADO Repo Request and ADO Pipline Request so that source code will be stored in the repository and Static Application Security Testing (SAST) scans can be automated in the pipeline. SWS that utilize APIs and container images must also be scanned by 42Crunch and AquaSec respectively. Each scanning tool typically generates a report detailing the vulnerabilities found ranging from Level 1 (Low) to Level 5 (High). The Software Developer must remediate any Level 3+ vulnerabilities found during the scan. InfoSec may also require that certain lower-level vulnerabilities be fixed at their discretion.
- Security Scan Tools:
- 42Crunch – Scans APIs
- AquaSec – Scans container images
- Checkmarx – Static Application Security Testing (SAST) analyzes source code
- Qualys – Dynamic Application Security Testing (DAST) simulates external hacking attempts
- 42Crunch – Scans APIs
- SAST Scan process:
- The SAST scan is run automatically when code is checked into the ADO repository, or the developer may run a manual scan of their source code in the Checkmarx platform.
- If new to the scan process, submit the Static Application Security Scan Onboarding Request (Jira Portal Ticket #8) for system access.
- Scan and perform remediation, if required.
- InfoSec's approval on a SAST Scan Approval ticket is a required prerequisite for the SQA testing submittal.
- To address the vulnerabilities:
- Scan, remediate vulnerabilities (if applicable), and rescan. When no vulnerabilities remain, request InfoSec approval via Static Application Security Scan Approval Request (Jira Portal Ticket #9).
- False Positives: Submit evidence in a SAST Scan Approval ticket that the vulnerability is a false positive and InfoSec will review the submission. Evidence can include screenshots or code snippets. InfoSec will review the evidence for each represented vulnerability type in question. Please use the same input values that the scanner used, where applicable.
- If the findings are not false positives and will not be addressed by the developer, send a remediation plan (see Remediation Plan Template) to InfoSec for approval within the SAST Scan Approval ticket. Please note this should only be completed after exhausting steps 1 and 2. The risks identified and plan within the document will need to be approved by project owner (accepting the risk) and IT stakeholders (TBD on case-by-case basis).
- Scan, remediate vulnerabilities (if applicable), and rescan. When no vulnerabilities remain, request InfoSec approval via Static Application Security Scan Approval Request (Jira Portal Ticket #9).
- DAST Scan Process: The Qualys scan is performed by SQA. After obtaining the Checkmarx scan approval, submit the Qualys Scan Request (Jira Portal Ticket #10). SQA will run the scan and provide scanning results. If remediation is required, SQA will re-run the scan and the process repeats until there are no Level 3+ vulnerabilities. False positive evidence or a remediation plan can be submitted to InfoSec within the Qualys Scan Request ticket similar to the SAST approval process.
- API/Container Scan Process: If APIs or containers are indicated in the SAST Onboarding ticket, InfoSec will run scans and work with the developer to remediate any scan results.
- Security Scan Tools:
- Design Approval: Project Manager submits the SWS Design Approval Request (Jira Portal Ticket #11).
- SQA Submittal & Usability Testing: Project Manager submits the SQA Submittal – Software Acceptance Form (SAF) (Jira Portal Ticket #12) to submit the SWS for SQA Pre-Production (Beta) or Production (Final Acceptance) Testing. Prior to submittal, the Project Manager and/or Developer validates the SWS works in the EPRI TEST Environment and meets EPRI requirements (see Software Developer Requirements page). Be sure the submit the SWS Promotion Checklist information. It is required for the Promotion phase.
Distribution: Once the SWS has received all required approvals (e.g., Usability, Security Scans, etc.), the SQA team will schedule a Production promotion date at which time the SWS will be promoted to PROD and made externally available to members and/or the public. The SWS Promotion Checklist received with the testing submittal will determine how SQA promotes the SWS. By default, SQA will promote the code and database from TEST to PROD as is, with the only exception being necessary database connection config changes, unless otherwise specified.
An Existing Subscriber Website (SWS) is one which has been released to members before through the Software Development Process. A code change would be any modification to the software which is structural or functional in nature.
To update an existing Subscriber Website (SWS), review the Software Developer Requirements page for applicable DevOps, Usability, Corporate and Security requirements. Follow the process steps below:
Development: Software Developer updates the SWS (must meet all applicable requirements provided in the Software Developer Requirements page and SQA Testing Checklist).
IF an ADO repository and pipelines were not utilized for the prior version release:
- Submit the ADO Repo Request (Jira Portal Ticket #1). During the development process you must upload your source code to the On-Prem ADO repository.
- Submit the ADO Pipeline Request (Jira Portal Ticket #2) uploading the source code build instructions (example provided) to develop your pipeline. The pipeline configuration is crucial to the SQA standing up of your site in the DEV, TEST, and PROD environments. SQA submittal cannot take place prior to the accessibility of your site in the TEST environment. Once the request is received an estimated completion date will be provided.
- The source-code for your SWS must be regularly checked in to EPRI's On-Prem ADO version control system. On-Prem ADO will serve as an IT managed backup for the code as well as a continuous integration (CI) system that will compile and deploy your code to EPRI IT managed web servers, along with the capability of running a Checkmarx source code scan in the build pipeline. When checking in source code to ADO there a few things to be aware of:
- The source code must be checked into the repository created and managed by SQA - this is the official repository.
- Repositories are for plaintext source code - checking in build artifacts and/or large binary files (e.g. DLL, EXE, etc.) is highly discouraged unless it is absolutely needed.
- If your application requires third-party dependencies those will be restored via your package manager (e.g. Nuget for .NET, NPM for JavaScript frameworks, Pip for Python, etc.).
- Storing large non-plaintext files in these repositories will increase the time it takes to clone and pull from them and is generally bad for version control best practices.
- When it's necessary to store large binary files (anything above 10 MB) Git LFS should be used.
- In Addition:
- If your application requires a database, please contact the DBA team with a backup file of your database so that they can restore it into an IT managed DB.
- You may request preliminary Qualys Web Application security scans in preparation for the next step to get ahead on remediating security vulnerabilities.
- Nuclear Sector SWS must include the Nuclear QMP Database Agreement Splash Screen in the application.
- Security Scans and InfoSec Approval: All SWS at a minimum are scanned by Checkmarx and Qualys. The Software Developer must submit an ADO Repo Request and ADO Pipeline Request so that source code will be stored in the repository and Static Application Security Testing (SAST) scans can be automated in the pipeline. SWS that utilize APIs and container images must also be scanned by 42Crunch and AquaSec respectively. Each scanning tool typically generates a report detailing the vulnerabilities found ranging from Level 1 (Low) to Level 5 (High). The Software Developer must remediate any Level 3+ vulnerabilities found during the scan. InfoSec may also require that certain lower-level vulnerabilities be fixed at their discretion.
- Security Scan Tools:
- 42Crunch – Scans APIs
- AquaSec – Scans container images
- Checkmarx – Static Application Security Testing (SAST) analyzes source code
- Qualys – Dynamic Application Security Testing (DAST) simulates external hacking attempts
- 42Crunch – Scans APIs
- SAST Scan process:
- The SAST scan is run automatically when code is checked into the ADO repository, or the developer may run a manual scan of their source code in the Checkmarx platform.
- If new to the scan process, submit the Static Application Security Scan Onboarding Request (Jira Portal Ticket #4) for system access.
- Scan and perform remediation, if required.
- InfoSec's approval on a SAST Scan Approval ticket is a required prerequisite for the SQA testing submittal.
- To address the vulnerabilities:
- Scan, remediate vulnerabilities (if applicable), and rescan. When no vulnerabilities remain, request InfoSec approval via Static Application Security Scan Approval Request (Jira Portal Ticket #5).
- False Positives: Submit evidence in a SAST Scan Approval ticket that the vulnerability is a false positive and InfoSec will review the submission. Evidence can include screenshots or code snippets. InfoSec will review the evidence for each represented vulnerability type in question. Please use the same input values that the scanner used, where applicable.
- If the findings are not false positives and will not be addressed by the developer, send a remediation plan (see Remediation Plan Template) to InfoSec for approval within the SAST Scan Approval ticket. Please note this should only be completed after exhausting steps 1 and 2. The risks identified and plan within the document will need to be approved by project owner (accepting the risk) and IT stakeholders (TBD on case-by-case basis).
- Scan, remediate vulnerabilities (if applicable), and rescan. When no vulnerabilities remain, request InfoSec approval via Static Application Security Scan Approval Request (Jira Portal Ticket #5).
- DAST Scan Process: The Qualys scan is performed by SQA. After obtaining the Checkmarx scan approval, submit the Qualys Scan Request (Jira Portal Ticket #6). SQA will run the scan and provide scanning results. If remediation is required, SQA will re-run the scan and the process repeats until there are no Level 3+ vulnerabilities. False positive evidence or a remediation plan can be submitted to InfoSec within the Qualys Scan Request ticket similar to the SAST approval process.
- API/Container Scan Process: If APIs or containers are indicated in the SAST Onboarding ticket, InfoSec will run scans and work with the developer to remediate any scan results.
- Security Scan Tools:
- Design Approval: Project Manager submits the SWS Design Approval Request (Jira Portal Ticket #6) to ensure the updated SWS meets current EPRI design and branding requirements.
- SQA Submittal & Usability Testing: Project Manager submits the SQA Submittal – Software Acceptance Form (SAF) (Jira Portal Ticket #7) to submit the SWS for SQA Pre-Production (Beta) or Production (Final Acceptance) Testing. Prior to submittal, the Project Manager and/or Developer validates the SWS works in the EPRI TEST Environment and meets EPRI requirements (see Software Developer Requirements page). Be sure the submit the SWS Promotion Checklist information. It is required for the Promotion phase.
- Distribution: Once the SWS has received all required approvals (e.g., Usability, Security Scans, etc.), the SQA team will schedule a Production promotion date at which time the SWS will be promoted to PROD and made externally available to members and/or the public. The SWS Promotion Checklist received with the testing submittal will determine how SQA promotes the SWS. By default, we will promote the code and database from TEST to PROD as is, with the only exception being necessary database connection config changes, unless otherwise specified.
A Content-Only or Data-Only change is one which is non-structural and non-functional primarily focused around modification of text, values, links, images, etc.
Content-Only Change Requests
You must have already completed a deliverable pertaining to the SWS for the current funding year.
1. Login to On-Prem Azure DevOps (ADO) (Internal EPRI URL).
2. Navigate to your project's repo, if your project has not been migrated from GitLab submit a GitLab Project/Repo Migration Request (Internal EPRI URL).
3. Select Pull requests, if the target branch is DEV or TEST, the request can be accepted by the developer. Otherwise, if the target branch is PROD, only SQA may accept the request.
4. Select New pull request
5. Select the source branch that contains the code to be promoted
6. Select the target branch to determine which environment the code will be promoted to
7. Enter a title describing the promotion (e.g. Promoting code from DEV to TEST)
8. Enter a description of the changes being promoted (optional)
9. Select Work items to link and enter Tags (optional)
10. Click Create
Acceptance: At this point, the merge request must be accepted before the changes get promoted. To proceed, you should submit the ticket for a Content-Only Submittal (Internal EPRI URL).
Data-Only Change Requests
You must have already completed a deliverable pertaining to the SWS for the current funding year.
Data-Only changes (e.g. Restore, Back Up, or Run a Script) should utilize the Data-Only Submittal (Internal EPRI URL) ticket to submit this request.