Download presentation
Presentation is loading. Please wait.
Published byEthan Cuthbert Townsend Modified over 6 years ago
1
Project Management Systems - Document Control
LIFE TIME OF SERVICE Document Control at E.S. Fox Ltd. Just new with Docushare CPX – if you were expecting the experts at this presentation, you may need to check out the other presentation. Pictured here is the “Comfort Maple” a tree which represents the life time of service that E.S. Fox Ltd. Has undertaken. This project represents a addition to the many excellent project management tools that we have for undertaking large and small projects. SINCE 1934
2
Jacob Westerhof Corporate Business Systems Manager E.S. Fox Ltd.
My name is Jacob Westerhof IT Manager 16 years with E.S. Fox Ltd. Have a programming background PMP certification for 5 years Our IT department has 10 people and besides supporting the end-user computer needs, we have developed our own accounting, project management and cost control and scheduling systems. Most of our development is utilzing Oracle Database and Oracle Forms and Reports
3
E.S. FOX LTD-CONSTRUCTORS
Company founded in as Residential/Commercial Plumbing & Heating Company (74 years service) Privately owned (3rd-generation) Canadian Corporation Revenues past 4 Years Approximately $150 Million on Average Exceeded $200 Million in one Year Salaried Employees Field Employees Peak (1900)
10
Specific Challenges Multi-sites (branches and offices)
Job sites (trailer, dial-up connection) Mobile Users Technology challenged users Large amount of correspondence via Legal requirements Drawing Control Head Office and Branch offices keeping duplicates of documentation – each department at Head Office is run as own kingdom Mobile users using various types of connection – dial-up, high speed and wireless Several older project managers with many years of experience in the field Huge amounts of correspondence Legal and customer requriements for document retention (projects sometimes ended with leins and pending court cases) “For Bid”, “For Construction” “As Built” and many versions of drawings (many of which are in electronic format)
11
E.S. Fox FireKings Hockey team
Jim Venibles 52 years of service Many older trades people – computer are not a priority in their lives Pipe Fitters, Welders Wipe grease off finger before typing.
12
Document Control/Management Project - Timeline
2006 Reviewed requirements for Project Management and Document creation/retention Decision to undertake a pilot project of this product Pilot Success and decision to proceed with implementation E.S. Fox wanted a solution for document control and management Project Oriented – needed solution that fits with company and industry Most of our immediate problems with (drawings, correspondence) Did need to implement and archiving tools ( Xtender)
13
Document Control/Management Project - Timeline
2007 Implemented with Docushare CPX 6 Licenses 110 Docushare CPX 200 Docushare 100 Read Only Oracle Database 10G Decided that user interface was more important than industry specific tools and practices
14
Document Control/Management Project - Timeline
2008 Training Template Automation Clients (Explorer and Outlook) Additional Job Cost/Scheduling Report Integration Oracle Reports Departmental Usage Decided that user interface was more important than industry specific tools and practices
15
Document Control/Management Project - Timeline
2009 Template Automation (more) Training Videos Docushare 6.5.2 ScanFlowStore Live Date for all new jobs (Dec 1/09) Decided that user interface was more important than industry specific tools and practices
16
Hardware/Software Structure
Utilizing two HP Blades Runing VMWare Two Logical Windows 2003 Servers Current Database is 8 Gig Current Document Drive has 125 Gig used Decided that user interface was more important than industry specific tools and practices
17
Hardware/Software Structure
Decided that user interface was more important than industry specific tools and practices
20
Document Control/Management Training
Methods Used Decided that user interface was more important than industry specific tools and practices
21
Document Control/Management Training
In Class PowerPoint, Exercises and take-away document Custom Training Tutorials Created using Camtasia URL links from Docushare Run on Windows Media Server Decided that user interface was more important than industry specific tools and practices
22
Document Control/Management Training
Decided that user interface was more important than industry specific tools and practices
23
Document Review
24
Template Security
25
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
26
Template Job Setup Uses only DSExport and DSImport
Changes the XML as needed Creates Project Specific Groups Creates Collection Structure We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
27
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
28
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
29
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
30
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
31
Template Job Setup Runs every 30 minutes
Scans the Custom Oracle Accounting system for new jobs Creates collections and groups and group membership We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
32
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
33
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
34
Template Job Setup We hope to have a template area that will provide a consistent setup for all projects using Docushare. Will give Management an easier way of finding information across projects Will promote a “best of practices” approach for less
35
Scan to Xerox Phaser 6180MFP
36
Scan to
37
Scan to
38
Scan to
39
Scan to
40
FAX to Docushare
41
Windows Client
42
Outlook Client Outlook Web Access Outlook 2003
43
Job Cost/Scheduling Reports
44
Job Cost/Scheduling Reports
45
Legacy Reports
46
Legacy Reports
47
Oracle Reports Need to have additional report capabilities
Utilize existing Oracle programming staff and skills Types of Reports Requested Security Report (done) Directory Structure Report (done) Drawing Control Report
48
Docushare – Hierarchy Report
select handle_id from &cp_where_clause order by object_title select * from ( select unique d.handle_id, sys_connect_by_path(d.object_title, '[->]') as path, level, lpad(' ', (level - 1) * 2) || D.object_title as padded_name, 'Collection - ' || d.handle_index object_type from v, d where d.handle_id = v.source_id and d.handle_class=1 start with source_id=:handle_id connect by nocycle prior destination_id=source_id and linktype in (1,2,8,10,11,13,14,16,18) and source_id <> destination_id) order by path select d.handle_id, d.handle_class, lpad(' ', (:cp_level) * 2) || d.object_title as padded_name, substr(trim(c.class_name),1,15) || ' - ' || d.handle_index as class_name from d, l, c where d.handle_id=l.destination_id and l.source_id = :handle_id2 and d.handle_class in (2,8,10,11,13,14,16,18) and d.handle_class=c.class_id and :cp_include_documents = 'Y'
49
Docushare – Security Changes
select * from ( SELECT unique v.source_id as template_handle, d.object_title, 'Collection-' || to_char (d.handle_index) as handle_index, level, lpad(' ', (level - 1) * 2) || D.object_title as padded_name, sys_connect_by_path(d.object_title, '|') as path from v, d where d.handle_id = v.source_id and d.handle_class=1 START WITH source_id = :cp_template_collection CONNECT BY PRIOR destination_id = source_id and linktype in (1,2,8,10,11,13,14,16,18) and source_id <> destination_id) order by path SELECT unique v.source_id as project_handle, level, sys_connect_by_path(d.object_title, '|') as path, 'Collection-' || to_char (d.handle_index) as project_handle_index START WITH source_id = :cp_project_collection CONNECT BY PRIOR destination_id = source_id and linktype in (1,2,8,10,11,13,14,16,18) where replace(:path, :cp_template_title) = replace(path, :cp_project_title) select d.object_title, a.SEARCHER,a.READER,a.WRITER,a.MANAGER, d.handle_class, a.user_group_class, a.user_group_index,a.handle_id, decode (a.user_group_class, 4, 'Group', 'User') || '-'|| d.object_title as user_group from a, d where a.handle_id = :template_handle and d.handle_index = a.user_group_index and d.handle_class = a.user_group_class and (not exists ( select 1 from a1, d1 where a1.user_group_class = a.user_group_class and a1.handle_id = :project_handle and d1.handle_class = a1.user_group_class and d1.handle_index = a1.user_group_index and a1.reader >= a.reader and a1.writer >= a.writer and a1.manager >= a.manager and a1.searcher >= a.searcher and (trim (replace (d.object_title, :cp_template_job)) = trim (replace (d1.object_title, :cp_project_job)) OR d.object_title = d1.object_title) ) OR :cp_differences_only <> 'Y') order by d.object_title select d.object_title, a.SEARCHER,a.READER,a.WRITER,a.MANAGER, d.handle_class, a.user_group_class, a.user_group_index,a.handle_id, decode (a.user_group_class, 4, 'Group', 'User') || '-'|| d.object_title as user_group1 where a.handle_id = :project_handle and a1.handle_id = :template_handle and (trim (replace (d.object_title, :cp_project_job)) = trim (replace (d1.object_title, :cp_template_job))
50
Docushare – Security Added
select * from ( where d.handle_id = v.source_id from v, d SELECT unique v.source_id handle_id, d.object_title, level, lpad(' ', (level - 1) * 2) || D.object_title || ' - ' || 'Collection-' || to_char (d.handle_index) as padded_name, d.handle_class, sys_connect_by_path(d.object_title, '|') as path and d.handle_class=1 and linktype in (1,2,8,10,11,13,14,16,18) CONNECT BY PRIOR destination_id = source_id START WITH source_id = :cp_project_collection and source_id <> destination_id) order by path SELECT unique v.source_id template_id, level as lev, sys_connect_by_path(d.object_title, '|') as path START WITH source_id = :cp_template_collection ) order by lev desc and source_id <> destination_id where lev <= :cp_level substr (replace(:path, :cp_project_title), 1, instr (replace(:path, :cp_project_title), '|', 1, lev + 1) - 1)) or replace (path, :cp_template_title) = and (replace(:path, :cp_project_title) = replace(path, :cp_template_title) and rownum=1 from a, d select d.object_title, a.SEARCHER,a.READER,a.WRITER,a.MANAGER, d.handle_class, a.user_group_class, a.user_group_index,a.handle_id, decode (a.user_group_class, 4, 'Group', 'User') || '-'|| d.object_title as user_group1 where a.handle_id = :handle_id1 and (not exists ( and d.handle_class = a.user_group_class and d.handle_index = a.user_group_index select 1 and a1.handle_id = :template_id where a1.user_group_class = a.user_group_class from a1, d1 and a1.reader >= a.reader and d1.handle_index = a1.user_group_index and d1.handle_class = a1.user_group_class and a1.writer >= a.writer and (trim (replace (d.object_title, :cp_project_job)) = trim (replace (d1.object_title, :cp_template_job)) and a1.searcher >= a.searcher and a1.manager >= a.manager OR d.object_title = d1.object_title) and not exists ( -- checks to make sure that this permission doesnt belong to the owner of the document OR :cp_differences_only <> 'Y') from l and l.destination_class = a.user_group_class and l.linktype = 11 where l.source_id = :handle_id1 and l.destination_index = a.user_group_index order by d.object_title select l.destination_id, d.handle_index, d.handle_class, lpad(' ', (:cp_level) * 2) || c.class_name || '-' || d.handle_index || ' - ' || trim(D.object_title) as document_disp from l, d, c and d.handle_class = c.class_id and d.handle_id = l.destination_id where source_id = :handle_id1 order by object_title and d.handle_class in (2,8,10,11,13,14,16,18) where a.handle_id = :destination_id1 -- checks permissions against that of the template permissions. the wont be included if the template has the same or more permissions than this document where l.source_id = :destination_id1 and l.destination_class = a.user_group_class
51
Docushare – Active/Archived Jobs
select unique job_number from ( select decode(length(job_gl_number), 5, 0) || substr (job_gl_number, 0, decode(length(job_gl_number), 5, 1, 6, 2)) || '-' || substr (job_gl_number, decode(length(job_gl_number), 5, 2, 6, 3)) as job_number from v_all_jobs where company_code='FX' and docushare_flag='Y' union all select d.object_title from v, d where d.handle_id = v.destination_id and d.handle_class=1 and v.source_id in ( ,330001) ) order by 1 sub-query 1 (selects details on docushare jobs) SELECT unique d.object_title, 'Active' as Source, d.object_summary, 'Collection-' || d.handle_index as handle_index and v.source_id = and trim (d.object_title) = :job_number union SELECT unique d.object_title, 'Archive' as Source, d.object_summary, 'Collection-' || d.handle_index and v.source_id = sub query 2 (selects details on p2000 jobs) select decode(length(j.job_gl_number), 5, 0) || substr (j.job_gl_number, 0, decode(length(j.job_gl_number), 5, 1, 6, 2)) || '-' || substr (j.job_gl_number, decode(length(j.job_gl_number), 5, 2, 6, 3)) as job_gl_number, 'Current', customer_name ||' - ' || description_line_1 as customer_name from jobs j where job_gl_number = replace (:job_number, '-', '') and company_code = 'FX' select decode(length(h.job_gl_number), 5, 0) || substr (h.job_gl_number, 0, decode(length(h.job_gl_number), 5, 1, 6, 2)) || '-' || substr (h.job_gl_number, decode(length(h.job_gl_number), 5, 2, 6, 3)), 'History', customer_name || ' - ' || description_line_1 from job_history h function CF_2FORMULA0013 return Number is they will be marked with the differences flag in the report (history/ current table in p2000, archive/active projects in docushare). if they are found in different locations (history/current) the cursors looks for a job number in docushare / p2000. They are marked as current / history depending on where they are found /* cursor c_ds is */ and d.handle_class=1 and v.source_id in (320001,330001) where d.handle_id = v.destination_id select decode (v.source_id, , 'Current', 'History') from v, d and trim (d.object_title) = :job_number; -- the next line decodes the formatted job number back to its non formatted form in the jobs tables in p2000 where j.job_gl_number = decode(substr(:job_number,0,1), '0', replace(substr(:job_number, 2),'-',''), replace (:job_number, '-','')) from jobs j select 'Current' cursor c_p2000 is and j.docushare_flag = 'Y' and j.company_code= 'FX' where h.job_gl_number = decode(substr(:job_number,0,1), '0', replace(substr(:job_number, 2),'-',''), replace (:job_number, '-','')) and h.company_code= 'FX' from job_history h select 'History' union and h.docushare_flag = 'Y'; begin l_temp varchar2 (10); l_ds varchar2 (10) := ''; l_p2000 varchar2 (10) := ''; This program is used to filter out the jobs and display apropriate messages based off of the parameter. /* :cp_differences := ''; :cp_display_job := 'N'; :cp_display_p2000_msg := 'N'; -- report is set to show jobs in both docushare and p2000 if :cp_match_indicator = 'B' THEN :cp_display_ds_msg := 'N'; open c_p2000; fetch c_p2000 into l_p2000; if c_ds%found then open c_ds; fetch c_ds into l_ds; if c_p2000%found then end if; end if; :cp_differences := 'X'; if l_ds <> l_p2000 THEN :cp_display_job := 'Y'; end if; close c_p2000; elsif :cp_match_indicator = 'P' THEN -- report is set to show jobs in p2000 but not docushare close c_ds; :cp_display_ds_msg := 'Y'; if c_p2000%found then open c_ds; fetch c_p2000 into l_temp; open c_p2000; :cp_differences := 'X'; if c_ds%notfound then fetch c_ds into l_temp; -- report is set to show jobs in docushare but not p2000 close c_p2000; close c_ds; elsif :cp_match_indicator = 'D' THEN :cp_differences := 'X'; :cp_display_ds_msg := 'Y'; fetch c_ds into l_temp; if c_p2000%notfound then fetch c_p2000 into l_temp; elsif :cp_match_indicator = 'N' THEN -- Report is set to show jobs in docushare or p2000 but not both :cp_display_ds_msg := 'N'; :cp_display_p2000_msg := 'Y'; else :cp_display_ds_msg := 'Y'; close c_p2000; else -- Report is set to show all jobs in both systems open c_p2000; fetch c_p2000 into l_p2000; :cp_display_p2000_msg := 'N'; :cp_display_ds_msg := 'N'; :cp_display_job := 'Y'; :cp_differences := 'X'; if c_p2000%notfound then :cp_display_P2000_msg := 'Y'; :cp_display_ds_msg := 'Y'; if c_ds%notfound then end if; end if; :cp_differences := 'X'; if l_ds <> l_p2000 THEN end; return 0;
52
Departmental Usage Training Started at Head Office
Departments within Head Office saw uses for Docushare immediately Encouraged
53
Departmental Usage
54
Integration Not going to train users to use the subject/first line TAGS We needed a easier way to provide for integration Discussed with Ann Bernath of NASA, JPL Electronic Library Serice Implemented alternate integrations as follows:
55
E-mail Integration Created group in Docushare
Linked Group to Collection Provided alias on Group User now sends to and this is put into the collection linked to the docushare group
56
Integration Needed an OpenBSD Linux server running SENDMAIL with a virtusertable (could not use EXCHANGE) @ds.esfox.com Turned on integration in Docushare **created these groups (10) on our template and modified template copy to also copy these groups
57
Challenges Ahead
58
Challenges Ahead More Oracle reports More Template Automation
Direct URL links between Accounting and Docushare Document and Utilization Review Multi-company installation
59
Questions? Questions? Thank you. “Share Template Automation VB Code”
“Share Report SQL Code” “Share Integration Installation and Configuration Instructions”
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.