{"id":892,"date":"2014-09-29T20:31:49","date_gmt":"2014-09-30T01:31:49","guid":{"rendered":"https:\/\/danvanfleet.com\/?p=892"},"modified":"2014-09-30T22:03:36","modified_gmt":"2014-10-01T03:03:36","slug":"proform-emergency-system-when-now-what-how","status":"publish","type":"post","link":"https:\/\/danvanfleet.com\/index.php\/proform-emergency-system-when-now-what-how\/","title":{"rendered":"ProForm Emergency System, when, now, what, how&hellip;"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image.png\"><img data-recalc-dims=\"1\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image_thumb.png?resize=216%2C179\" width=\"216\" align=\"left\" height=\"179\"><\/a>This past weekend was an interesting one. Not only was it my birthday, we had an Enterprise 6.3 client&#8217;s SBS 2008 R2 server have 3 of 6 drives in a RAID 5 array in a pending error status. There was serious talk of a punctured array.&nbsp; It&#8217;s a small business so it not only was it the sole active directory provider, it also managed DNS, DHCP, and SQL servers not to forget File and Print service. The IT staff was busy rebuilding arrays, drives, and restoring backups, time estimates for data transfers were given in half days. About a day and a half and this job should be complete. Then it failed, another day long attempt and failure had the calls out to put Option &#8220;D&#8221; in place.<\/p>\n<p><!--more--><\/p>\n<p>Option &#8220;D&#8221; was a hastily thrown together thought experiment, one of those if all else fails, this might keep us going solution. It was to provide a temporary ProForm environment complete with lookup tables and templates, along with this years data files and this years soft file folders. Since it was a Plan 4, no budget was allocated for trial or testing. The direction was you&#8217;re smart, copy what you think you&#8217;ll need. And by the way gather quickly, the server is going to be rebooted in a little over an hour. It helped that we knew the network well.<\/p>\n<p>The preparation process was pretty simple, grab the shared SoftPro folder, SQL data and file data, then copy it somewhere else. The first interesting thing was, the SoftPro folder has grown over time with various folder being used as temporary folders. With the time constraint in place, we didn&#8217;t want to copy all that data. We didn\u2019t need reports just the critical folders, <strong>Data<\/strong>, <strong>Merge<\/strong>, <strong>RdyDocs<\/strong>, <strong>Templates, Tools<\/strong> and the contents of the root of the SoftPro shared folder. (A note on those folders, even though it&#8217;s big, grab <strong>Setup<\/strong>, it comes in handy, we also had another unique folder <strong>Overlays<\/strong> that we copied.)<\/p>\n<p>There are things to consider when attempting a maneuver such as this, we invested mere minutes into those considerations. Here we take a look at some of the things that come up when slapping a temporary ProForm solution in place. Somewhat in the order in which we saw them.<\/p>\n<h1>Versioning<\/h1>\n<p>ProForm validates the correct version between the client and server based on 2 files, the first lives in the <strong>%WinDir%<\/strong>, usually <strong>C:\\Windows<\/strong> and is called <strong>SoftPro.ini<\/strong>. It looks like this<\/p>\n<pre class=\"csharpcode\">[Setup]\nServerDestDir=\\\\Granite\\SoftPro\\\nServerInstallerType=Wix\nVersion=6.3.61120.0\nSrcDir=\\\\Granite\\SoftPro\\Setup\\1\nClientDestDir=C:\\Program Files (x86)\\SoftPro\\Enterprise\\Client\\\nClientInstallerType=Wix<\/pre>\n<p>&nbsp;<\/p>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>The Version in the SrcDir= Folder needs to match the executing ProForm Version, the number after Version= in the SoftPro.ini file is for technician reference, the app as of 6.3.6 doesn&#8217;t require it. Which brings us to our second file, <strong>version.ini<\/strong> which typically lives in the <strong>SoftPro Shared Folder\\Setup\\1<\/strong> folder. It looks like this:<\/p>\n<pre class=\"csharpcode\">[Version]\nCurrentVersion=6.3.61120.0\n<\/pre>\n<p>&nbsp;<\/p>\n<p>That is the number that must match the running version of ProForm. If the <strong>SrcDir<\/strong> in <strong><a href=\"http:\/\/SoftProCorp.com\" target=\"_blank\">SoftPro<\/a>.ini<\/strong> is incorrect or the <strong>CurrentVersion<\/strong> in <strong>version.ini<\/strong> is incorrect the system will throw a <a href=\"https:\/\/danvanfleet.com\/index.php\/after-proform-server-move-error-spfuncs-350\/\" target=\"_blank\">SPFUNCS-350<\/a> Error.&nbsp; The link has a bit more info on this error.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image1.png\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image_thumb1.png?resize=345%2C161\" width=\"345\" height=\"161\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>I should mention to edit files in the Windows Folder you must change the security to allow Users to Modify files. Do that on SoftPro.ini, FormSet.ini and you might as well do pfwin.ini to get your recently used files list back.<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image2.png\"><img data-recalc-dims=\"1\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image_thumb2.png?resize=562%2C364\" width=\"562\" height=\"364\"><\/a><\/p>\n<h1>ProForm SQL<\/h1>\n<p>A bit of preparation work is necessary if you hope to run on more than one machine. SQL server needs security granted to access the information. Once the domain is down, that security can&#8217;t be added. So a user needs created that mirrors a user on the production server. The group <strong>Domain\\Domain Users<\/strong> works if it&#8217;s there. The restoration of the SQL tables was easy if a bit click happy. The SQL tables that are needed to run ProForm are <strong>ProForm<\/strong>, <strong>ProFormLookups<\/strong>, <strong>ProTrust<\/strong> and <strong>SoftPro<\/strong>. Restore the others at your pleasure or need. (See <a href=\"https:\/\/danvanfleet.com\/index.php\/automated-softpro-sql-database-backup\/\">https:\/\/danvanfleet.com\/index.php\/automated-softpro-sql-database-backup\/<\/a> for a method to backup the SQL database)<\/p>\n<h1>ProForm Database Links<\/h1>\n<p>If started, ProForm will now complain it can&#8217;t find it&#8217;s databases. SoftPro has a great configuration utility, <strong>SpSqlReg.exe<\/strong> which typically is installed into the SoftPro Shared Folder. (<a href=\"file:\/\/\/\\\\Server\\SoftPro\">\\\\Server\\SoftPro<\/a>) It has a configuration file, <strong>SpSqlReg.ini<\/strong> which were going to edit. (no need to mess with security on this one) Open it up in your favorite text editor,<\/p>\n<pre class=\"csharpcode\">Profile = Default\nDSN Type = System\nSQL Server Name = DeadServer\\softpro\nPfPx Database = ProForm\nPTWin Database = ProTrust\nP1Win Database = Pro1099\nPiWin Database = ProIndx\nSoftPro Database = SoftPro\nPSWin Database = ProScheduler\nWAN Lookups = ProFormLookups\nPath to LAN Lookups = \\\\DeadServer\\softpro<\/pre>\n<p>&nbsp;<\/p>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>Copy including the Profile line, to either the next Profile line or the end of the file. Paste that to a new section of the file, Edit the Profile name and Server Names to make something like this.<\/p>\n<pre class=\"csharpcode\">Profile = Backup\nDSN Type = System\nSQL Server Name = TempServer\\softpro\nPfPx Database = ProForm\nPTWin Database = ProTrust\nP1Win Database = Pro1099\nPiWin Database = ProIndx\nSoftPro Database = SoftPro\nPSWin Database = ProScheduler\nWAN Lookups = ProFormLookups\nPath to LAN Lookups = \\\\TempServer\\softpro\nProfile = Default\nDSN Type = System\nSQL Server Name = DeadServer\\softpro\nPfPx Database = ProForm\nPTWin Database = ProTrust\nP1Win Database = Pro1099\nPiWin Database = ProIndx\nSoftPro Database = SoftPro\nPSWin Database = ProScheduler\nWAN Lookups = ProFormLookups\nPath to LAN Lookups = \\\\DeadServer\\softpro<\/pre>\n<p>&nbsp;<\/p>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>Save that.<\/p>\n<p>Run <strong>SpSqlReg.exe<\/strong> <strong>as<\/strong> <strong>Administrator<\/strong>, select the newly named template, Press <strong>Go<\/strong>, the program will note that it updated the ODBC connections for the machine. <\/p>\n<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image3.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/image_thumb3.png?resize=352%2C420\" width=\"352\" height=\"420\"><\/a><\/p>\n<p>Standard SQL users might have to run it as both Administrator and user. MDB or Access users very few concerns, put the file somewhere, point to those files with <strong>%WinDir%\\SysWow64\\OdbcAd32.exe<\/strong><\/p>\n<h1>SpAdmin<\/h1>\n<p>SpAdmin will need run at some point, it gets a little goofy and locked up a few times.&nbsp; If that happens, kill the task with Windows TaskManager.&nbsp; SpAdmin.exe lives in the <strong>SoftPro\\Tools\\SpAdmin <\/strong>Folder.&nbsp; Click the <strong>Edit Shared Directory<\/strong> and enter the new temporary path.&nbsp; Exit and restart <strong>SpAdmin<\/strong>. Next change the <strong>User Preferences<\/strong> for the <strong>&lt;default&gt;<\/strong> user.&nbsp; If you use File Numbering Manager\u2019s unique directory option Edit the <strong>Save Directory for Data Files<\/strong> for each File Numbering Code.<\/p>\n<h1>Licensing<\/h1>\n<p>The next stopping point will be licensing, at this point ProForm had no clue where to find the license files. Standard and Enterprise handle licensing differently, Standard should license correctly after editing the registry entries, we will have to wait and see what ProForm 14 does to these thoughts. At one time, still with Standard, the HKCU\\Software\\SoftPro\\PFPXWin folder holds keys that point to the various configuration items, like Files Folder, Licensing folder, or the other paths to configuration files.&nbsp; With ProForm Standard, edit those paths and skip the rest, don\u2019t mess up the trailing backslash if it\u2019s there. That all changed with Enterprise a couple versions ago, which now populates the Registry on program launch from a couple SQL tables. In the ProForm Database the Preferences Table is used to handle most of the folders, but not Licensing. That is in the <strong>SoftPro Database<\/strong> in the <strong>PreferencesByUser<\/strong> table.<\/p>\n<p>Both tables are similar in nature with a <strong>default<\/strong> entry as the first entry of the table and user names under that. If you\u2019re creating new users, simply change the <strong>default<\/strong> entry\u2019s paths to point to the temporary location. This information is read in an interesting way, since it\u2019s related to licensing I won\u2019t delve into how it all works.&nbsp; If your temporary user\u2019s name is in the database, I recommend either deleting that entry or changing the username on it so it doesn\u2019t match the temporary user name.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/clip_image003.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"clip_image003\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"clip_image003\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/clip_image003_thumb.png?resize=244%2C161\" width=\"244\" align=\"left\" height=\"161\"><\/a>This screen means something is bad in <strong>PreferencesByUser<\/strong>, specifically the <strong>LicensingDir<\/strong> Column for the current user is either not correct or there are no license files in the folder. (*.spl)<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/clip_image004.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" title=\"clip_image004\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"clip_image004\" src=\"https:\/\/i0.wp.com\/danvanfleet.com\/wp-content\/uploads\/2014\/09\/clip_image004_thumb.png?resize=244%2C124\" width=\"244\" align=\"left\" height=\"124\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>An SPFUNCS-134 can mean there is a problem in the <strong>Preferences<\/strong> table for the user or default entry.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>From a technician point of view the flow of this configuration information is confusing. The Registry isn&#8217;t the boss, it exists for compatibility purposes with the new database driven preferences. We&#8217;ll probably see more of this with ProForm 14.<\/p>\n<p>There are a few things that can get in the way when moving SoftPro ProForm from production to emergency use when little planning occurs. This story turned out with fairly good news, 40% of the staff could access ProForm not real long into the first day. The second day the server was back and working superbly. Merge the changed ProForm files back into the production system and close the next loan was the day. Since we&#8217;ve gone this far with this effort I think it&#8217;s time to do that preparatory work. The question at hand is how few resources can be used to setup a backup system for SoftPro ProForm which can be brought on-line in about a half hour. I&#8217;ll let you know how it comes out.<\/p>\n<p>&nbsp;<\/p>\n<p>Thanks for stopping by.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This past weekend was an interesting one. Not only was it my birthday, we had an Enterprise 6.3 client&#8217;s SBS 2008 R2 server have 3 of 6 drives in a RAID 5 array in a pending error status. There was serious talk of a punctured array.&nbsp; It&#8217;s a small business so it not only was [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3],"tags":[],"class_list":["post-892","post","type-post","status-publish","format-standard","hentry","category-general","entry"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4wyVb-eo","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/posts\/892","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/comments?post=892"}],"version-history":[{"count":4,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/posts\/892\/revisions"}],"predecessor-version":[{"id":906,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/posts\/892\/revisions\/906"}],"wp:attachment":[{"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/media?parent=892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/categories?post=892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/danvanfleet.com\/index.php\/wp-json\/wp\/v2\/tags?post=892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}