Client: Centers for Disease Control and Prevention (CDC)
TSPi
Technology Solutions Provider, Inc.
The Federal Energy Regulatory Commission (FERC) maintains a publicly available eLibrary to provide search capabilities to its users and the ability to request access to documents from numerous different systems for tracking electricity, natural gas, and oil data. FERC utilized IBM’s Image Services software for indexing, scanning, searching, management, and retrieval of these files for over ten years and required an upgrade to the new IBM ECM software, P8 to utilize Elastic Cloud Storage capabilities. After a failed upgrade attempt with a different industry partner, FERC contracted with TSPi to resolve this ongoing ECM challenge and modernize their eLibrary platform.
TSPi developed a Proof of Concept (POC) environment to perform the conversion from IBM FileNet Image Services to IBM FileNet P8 Content Manager. The POC conversion consisted of over 2 million files of content and associated metadata. To address the goals of the POC conversion, TSPi established new development, test, and production IBM FileNet Content Manager Environments.
After a successful POC, TSPi led the complete eLibrary data migration initiative. TSPi developed a “To-Be” Architecture to prepare and migrate the data present in the current FileNet Image Services system into the newly created FileNet P8 environment. We also developed a detailed Migration and Project Plans on the switchover to Production from the old FileNet Image Services to the new P8 Environment. Our team supported FERC with interoperability between FERC applications and P8 during integration testing for continuity during the migration. And, to ensure a smooth transition of responsibilities, TSPi managed decommission and knowledge transfer activities and documentation and provided ongoing routine maintenance and system administration of the new FileNet environment.
TSPi successfully addressed FERC’s technology modernization challenge and completed the upgrade to their public-facing eLibrary platform. Our team ensured continuous availability and all security requirements were addressed for the new platform. Under TSPi’s technology leadership, FERC’s eLibrary is well positioned to serve the public and energy community for years to come.
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;
});
}