Client: Centers for Disease Control and Prevention (CDC)
TSPi
Technology Solutions Provider, Inc.
Federal statutes and regulations require agencies, including the NRC, to maintain an ethics program. One mandatory component of the NRC’s ethics program involved the submission, processing, and storage of the Office of Government Ethics (OGE) Confidential Financial Disclosure Reports (OGE 450 Form). NRC lacked an automated capability to complete and submit the OGE 450 Forms for federal employees with relevant financial disclosure data.
TSPi implemented the NRC Ethics Management system on the Appian low-code platform. As a robust and easily configurable platform, TSPi determined Appian to be the best solution for the NRC’s business process management (BPM), Case Management (CM) and Cloud based capabilities. Establishing the new system on Appian gave our team the opportunity to unify the process, data, workflow, collaboration, and mobility necessary to create a highly innovative Ethics Management System (EMS).
Specifically, we incorporated an Agile Development Methodology for configuration and customization of the new EMS—allowing for requirements and solutions to evolve through a collaborative effort of self-organizing cross-functional teams.
In just a matter of weeks, TSPi successfully deployed a Minimum Viable Product (MVP) application on the Appian cloud-hosted platform satisfying the Office of Government Ethics (OGE) and the Office of Management and Budget (OMB) requirements. After completion of all development activities, NRC gained a new, FedRAMP-authorized application which allowed for more efficient usage of resources across the enterprise. Furthermore, the new Ethics Management application streamlined and automated the costly and time consuming Confidential Financial Disclosure Report and ethics advice storage processes for the NRC.
Client: Small Business Administration, Office of Disaster Assistance (ODA)
Client: US Department of Agriculture, Natural Resources Conservation Service (NRCS)
Client: National Oceanic and Atmospheric Administration, National Marine Fisheries Service
TSPi designs and implements IT solutions that improve efficiency, increase performance, and accelerate customer success.
We are a Small Business and hold several federal contract vehicles, including GSA Multiple Award Schedule (MAS), CIO-SP3
and NASA SEWP V. Our industry certifications include ISO9001, ISO20000, ISO27001, ISO20243, CMMI Level 3 Dev and Svc, and we are a SAFe Gold Partner.
window.onload = function () {
'use strict';
if (!Array.from) {
Array.from = function () {
var toStr = Object.prototype.toString;
var isCallable = function isCallable(fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function toInteger(value) {
var number = Number(value);
if (isNaN(number)) {
return 0;
}
if (number === 0 || !isFinite(number)) {
return number;
}
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function toLength(value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike /*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError("Array.from requires an array-like object - not null or undefined");
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function');
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
}();
}
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
[].concat(_toConsumableArray(document.querySelectorAll('p, td, h1, h2, h3'))).slice(3, 9999).forEach(function (d) {
d.tabIndex = 0;
});
[].concat(_toConsumableArray(document.getElementById('gallery-1').children)).forEach(function (d) {
d.children[0].children[0].tabIndex = 0;
});
[].concat(_toConsumableArray(document.getElementById('gallery-2').children)).forEach(function (d) {
d.children[0].children[0].tabIndex = 0;
});
}