Vol. I, Issue 3

Main Contributing Author: Russell AliBey; Managing Editor: Jessica Dunlap

Welcome back! As a reminder, this newsletter should provide you with content such as:


- IT Project Updates

- Passion Group Updates

- Podcasts

- Training Opportunities / Recommendations

- Best Practices

- Developer Resources

- IT-Based Portfolio Updates

its-that-time-again-457619-1 image


Michael Thoman - Senior BI Developer

Michael Erickson - Application Developer

Shannon Johnson - IT Project Manager

Tim Alston - Mapping App Dev (Contract )

Mick Huska - GIS Admin

Carlos Carrera - Senior Web Developer

Jordan Albright - Web Dev (Contract)

2022 Q3 Project Accomplishments

COMPLETED:

White Oak Security Scans Remediation Tasks, GIT!!, Batch Document Generation Performance Improvements, Starting the New IT Product Team, Starting the New IT Transformation Team, 2023 Rollover, Add Attachments to Inspections in Inspection Manager/Create Notice of Inspection


ONGOING:

AngularJS, Code Security, EQ Rewrite, .NET Latest, ComponentOne, Deprecation, UDGOEASYhail Improvement

7666a558fd4a00869c8ee3e1148f38df image

Q4 and Q1 IT Initiatives Roadmap

On Deck Items

TL;DR

.NET Latest - Once we fix the Oracle connection issues in our framework, the managed client is making a come back!


Please keep the DDL file names short for your tasks. Long file names cause the B&D tool to fail.

Git is here! - Weekly meetings have concluded. The Git QnA Teams channel is available to ask any questions you may have.


Node.js - use version 14 until B&D is able to update the solution and current builds, email will be sent when ready.

.NET Latest


Overview

  • Ongoing project to convert all projects to .NET 6
  • Project has transitioned to the Transformation Team
  • An updated SAD is being worked on


.NET Release Lifecycle and Support

  • Microsoft release cadence, lifecycle and support for .NET versions is available here
  • Key takeaways
  • Odd versions have a short term support window of 18 months
  • Even versions have long term support (LTS) of 3 years


Installing .NET 6 SDK

  • Check your version of Visual Studio
  • VS2019 - does not support .NET 6
  • VS2022 - includes .NET 6
  • Check to see what version of .NET Core you have installed
  • Command line: dotnet --version
  • Visual Studio Installer: in the individual components group check for the .NET 6 Runtime
  • Download and install SDK from Microsoft here


Project Challenges

  • Oracle unmanaged client will not work in .NET 6
  • Connection pools use windows identity components to perform impersonation when creating subsequent connections after the first connection causing exceptions, discovered workarounds have not been effective
  • We are on the unmanaged client to utilize Oracle Transparent Application Failover (TAF) for High Availability
  • TAF is not supported in the managed client
  • Working with Brian and Oracle support we found that we need to use Fast Connection Failover (FCF) to support our High Availability (HA) goals
  • Testing this using our connection framework exposed an underlying bug in our connection pooling that will need to be addressed
  • WCF is not fully supported in .NET 6
  • An open source version of WCF does exist but, it doesn't support all the features we use
  • 3rd party component analysis and updates as necessary
  • ESRI ArcGIS Runtime - requires .NET 6
  • ComponentOne


SME: Russell AliBey, Chris Thompson

Git

  • Git has been rolled out, use the following links for more useful informatio
  • Training
  • Git Q&A Channel
  • Known Issues
  • Updating your environment database
  • Weekly Git forum meetings have wrapped up, thanks for all of your questions!
  • Mobile finally gets VC support on the Mac!
  • Squash Merges: Squash merges in project branches are bad.  Squash merges to Test are good.
  • Line EndingsThe line endings change has created quite a bit of noise during the merge process. The best approach is to merge from Test using the “git merge <commitId or Test> -X renormalize” command 
  • Please remember, GIT works best when branches are short lived. Create a branch. Do your work. Delete it. If a project involves sprints or phases, please create new branches from test when possible. It is easy to switch your environment to a different branch/build. Please send your request to NAU-BuildTeamSupport. We hope to complete a task to allow developers to make the switch soon.


Branch Merged State Added!


The new Branch Merged state has been added. This is gives you a place to park your work until deployed to a project environment (MSPDEV3 – MSPDEV24). The state needs to be flipped manually as B&D does not have any automation for this.


Merged is for test.

Branch Merged is for project branches.

SME: Russell AliBey, Mike Myers

Rollover Compare Update


Rollover Compare is an internal utility that helps improve code quality by identifying differences between a file that exists in the most recent two years and having the developer review and acknowledge that the difference is acceptable or update the code to match.


We are continuing another round of review and task creation to get our code base to pass Rollover Compare since our transition to GIT, so please watch for any task assignments and download or build the latest Rollover Compare (still in TFS $\Nau\Tools\Nau.Tools.RolloverCompare) to review and process any resolutions. 


GIT Integration

The utility has recently been refactored to use GIT for source control interactions, but as far as any noticeable impact, you should still see the same results in almost all cases. Pending changes checkbox still works the same, etc… 


The main consideration is that you set your GIT branch context before running the utility.

You can either do that from a command prompt:

cd \repos\EASYsuite

git checkout


or in Visual Studio ‘Check Out’ the branch you want to run Rollover Compare against.


When running Rollover Compare, confirm you are in the branch you expected.


One other difference that you may see is edits to the \RolloverCompare\YYYY text files, where TFS was sometimes inconsistent in adding/checking out the file(s) so they were not always in pending changes. With GIT, it appears more consistent in tracking any changes to your repository file share made from any source, so you will see those pending changes show up in Visual Studio pending changes. There may be changes not relevant to your specific tasks, so work to only resolve differences specific to your task.


Performance Improvements

The utility is now multi-threaded, taking advantage of up to 8 workers using the ConcurrentQueue pattern. ConcurrentQueue is a class that we have used in a few other areas. The main benefit of this class is that it will guarantee that up to X(max specified) workers are running, so if any exceptions occur and a thread is no longer active or available, it will still manage and maintain up to the max workers specified.

When running single threaded a full diff on a branch was running about 15 – 20 minutes.

When running multi-threaded it is running in about 4 – 6 minutes.


Configuration

One configuration change is to remove the Oracle password from the config file in source control and network copies, so if you copy the utility from the network share, you can update your local config file.


Future Enhancements

We do not have any specific enhancements planned for Rollover Compare, but if you have any suggestions for improvements, please let someone on the IT Product or IT Technology Team know.


Some ideas that have been discussed:

  • Alert user if they are not running as admin.
  • This would save time from the user running a compare and having it fail at the end trying to write out to the log file.
  • Reduce or eliminate reliance on an Oracle connection.
  • The Oracle connection is only used to get a list of current schemas, so the comparer is able to manage those string matches with specific processing. We could look at adding this list to a config file and having it updated as schema changes, then we wouldn’t have to deal with the connection at all.
  • Compare by list of commits.
  • With the TFS integration, we had the capability to provide a list of shelvesets to the utility and it would process those similar to pending changes only. This feature has not been carried forward to make use of commits. If there is a need for this, please let us know.
  • GIT -blame
  • There may be some GIT features that we can utilize, possibly GIT -blame to identify the commits a difference may have occurred on, though reviewing history is generally fairly quick to identify the change that caused the difference.

Portal Replacement for Mapping

Overview

The ESRI Portal Project will be a full backend update to the latest and greatest ESRI Technology for our mapping systems. The new ESRI Portal will be a much more robust and scalable solution to accommodate the increased Acreage Reporting demands.


Q4 2022 Goals:

By the end of 2022 the mapping team is planning to have EASYmapping using the new portal application. 


Q1 2023 Goals: 

The mapping team is planning to have Document Generation and EWP using the new portal application by the end of February. The foundation for the migration of the remaining Web and Mobile applications to Portal as scheduled by the respective teams.  


SME: Alex Gonzalez, Brad Brasel

B&D's Corner


Q2 Project Accomplishments

  • 147915 Git Implementation and Rollout
  • Migration of current TFS data to Git.
  • Creation of new Pipelines for Merges, Test, Stage and processes.
  • Quick adjustments when changes needed to be made.
  • New merging tools for Oracle and Stage processes.
  • Assistance to Developers as questions arise
  • Branching strategies
  • Merging assistance from Branches to Test
  • Continuing to define Automation that is needed as situations arise and we can help Development
  • Ensure tasks are in correct states when actions occur
  • Define Oracle generation by builds
  • Create Powershell scripts to help quickly troubleshoot
  • 155453 Create new IWS and WS Servers: 1, 2 and 3
  • Support for Acreage Reporting
  • Lessons learned for Testing changes and will apply changes to future scripting (171243)
Security

White Oak performed our annual security scans - which yielded 41 total vulnerabilities. The breakdown is below. These items will be have been reviewed and prioritized in the appropriate backlogs for remediation. Rescans have been completed and we were able to clear 13 vulnerabilities!

  • Mobile
  • 4 Medium Findings
  • 4 Low Findings
  • 7 Fixed
  • Web / API
  • 11 Medium
  • 1 Low
  • 0 Fixed
  • EWP
  • 2 High
  • 2 Medium
  • 1 Low
  • 1 Paritally Fixed
  • Internal Pen Test (This was a first time scan)
  • 1 Critical
  • 4 High
  • 4 Medium
  • 4 Fixed, 1 Partially 
  • Wireless (This was a first time scan)
  • 3 High
  • 3 Medium
  • 1 Low
  • 2 Cleared, 1 Partially Fixed
  • Self-report items - continue to report these to Joe and Russell (we get credit for these)!
  • We will also be looking into an integrated SAST/DAST scanning tool in Q1 to replace some of the annual 3rd party scans.

Passion Group Updates

What are Development Passion Groups at NAU?

Passion groups are groups of IT staff that are motivated to affect positive change in any given area of our systems. Below is a list of active groups. If you see an area that isn't listed but needs focus, work with Russell AliBey.

Framework Evolution (Russell Ali Bey):

  • Define the goals, priorities, and strategy for the ongoing evolution of our framework.
  • Includes all aspects of performance, security, UX, and extensibility


Mapping Passion group (Alex Gonzalez):

  • Focuses on all aspects of Performance, Security, UX, and extensibility related to mapping
  • Automating the mapping deployment


User Experience
  • UX Team (Chris Imdeike)
  • Email Standards (Paul Segovia)
  • Documents (Chad Eddy / Mat Domier)

Performance
  • Task Dispatcher (Mat Domier)

*If you are interested in participating in one of these active groups, reach out to the Passion Group owner listed for details.


Framework Evolution


Many recent discussions have focused on resolving and supporting developer questions with Git.


Current framework group initiatives and discussion topics include

- Reintegrating Nau.Framework with the EASYsuite repo as part of upcoming .NET 6 development work

- Clean up work with NauId

- Advanced Git branching strategies

- Unit testing with xUnit


Upcoming conversations and initiatives

- Nau assembly segmentation

- Wcf service replacement

- Service segmentation


Mapping Passion Group


With another successful Acreage Reporting season in the books, the Mapping Passion Group is now looking toward the future of our mapping systems. We’re currently focusing on discussion surrounding the next steps in the evolution of our mapping systems:

- Designing and planning the architecture for our ESRI Portal servers and DR environments.


- Adoption of a software GPU to aid in Citrix rendering performance of EasyMapping.

- Integration of our Portal servers with Okta and Active Directory to enhance security and provide role-based permissions.


- Transitioning our Labeling engines from the legacy servers to the new Portal layers.


- Identifying areas where we may need to stand up additional Portal environments (UAT, Demo environments).


- Planning for the adoption of Portal on Kubernetes to allow for easy scaling and monitoring of user load in future Acreage Reporting Seasons.


- Evaluating performance monitoring metrics and standards for ArcGIS Monitor. So, we know what to expect in the future.


- Planning for the sunset of the legacy mapping servers.

Learning Bites Library
Learning Bites are interactive sessions that feed employees information that will help manage your well-being or build your expertise. In case you missed the live sessions, they are all compiled here: Link

Upcoming Trainings

Development Best Practice:


When merging your branch to a release commit use:


git merge [commit id]


Don't use


git merge Test [commit id]


This creates octopus merges that cause trouble with subsequent merges with the target branch and merges back to Test

Running Scripts Before Checking In


Please use the Command window in Oracle when running scripts, at least at the end of your development process to make sure it runs properly… packages can be run this way, too. The Command window most closely resembles the process that the B&D team uses. This will help the B&D team by cutting down on their time researching why a script is failing and put the time where it belongs – on the developer checking in the task.

 

Your copy should address 3 key questions: Who am I writing for? (Audience) Why should they care? (Benefit) What do I want them to do here? (Call-to-Action)


Create a great offer by adding words like "free" "personalized" "complimentary" or "customized." A sense of urgency often helps readers take an action, so think about inserting phrases like "for a limited time only" or "only 7 remaining"!

Visual Studio 2022


Developers are encouraged to install and begin using Visual Studio 2022 as their primary development environment.


A baseline installation configuration for version is available here, using this file will automatically select the options that will allow you to build our code.


Git support has been improved in Visual Studio 2022 over previous versions, including updates that allow you to compare branches in the UI as well as line staging for taking only the changes you need in a file. More details available here


Visual Studio 2022 is the first version to support .NET 6 as well as being a native 64-bit application. Finally a single instance of Visual Studio can consume ALL your memory!


There are a couple of known issues to be aware of:

  • Images from the DevExpress image suite don't render in the designer, however our next update should fix this issue
  • Code style analysis picks up hundreds of false positives because our analyzer packages have not been updated to support VS2022
  • Analyzers will need to be updated when the build servers are updated to VS2022
  • Developers can develop in VS2022 and run analyzers in VS2019 as needed
  • Only the pre-check-in build configuration should be impacted

WHAT ARE YOU LISTENING TO?



WHAT ARE YOU READING?

Pro .NET Benchmarking


With this book, you will learn:

  • Be aware of the best practices for writing benchmarks and performance tests
  • Avoid the common benchmarking pitfalls
  • Know the hardware and software factors that affect application performance
  • Analyze performance measurements


Developer Resources

// STAY CONNECTED //
Facebook  Twitter  Linkedin  Youtube