diff options
Diffstat (limited to 'httemplate/docs/upgrade8.html')
-rw-r--r-- | httemplate/docs/upgrade8.html | 394 |
1 files changed, 394 insertions, 0 deletions
diff --git a/httemplate/docs/upgrade8.html b/httemplate/docs/upgrade8.html new file mode 100644 index 000000000..9ca7cb7b9 --- /dev/null +++ b/httemplate/docs/upgrade8.html @@ -0,0 +1,394 @@ +<head> + <title>Upgrading to 1.4.0</title> +</head> +<body> +<h1>Upgrading to 1.4.0 from 1.3.1</h1> +<ul> + <li>If migrating from less than 1.3.1, see these <a href="upgrade7.html">instructions</a> first. + <li><font size="+2" color="#ff0000">Backup your database and current Freeside installation.</font> (with <a href="http://www.ca.postgresql.org/devel-corner/docs/postgres/backup.html">PostgreSQL</a>) (with <a href="http://www.mysql.com/documentation/mysql/bychapter/manual_MySQL_Database_Administration.html#Backup">MySQL</a>) + <li><a href="http://perl.apache.org/">mod_perl</a> is now required. + <li>Install <a href="http://search.cpan.org/search?dist=Time-Duration">Time-Duration</a>, <a href="http://search.cpan.org/search?dist=Tie-IxHash">Tie-IxHash</a> and <a href="http://search.cpan.org/search?dist=HTML-Widgets-SelectLayers">HTML-Widgets-SelectLayers</a> (minimum version 0.02). + <li>Install <a href="http://www.apache-asp.org/">Apache::ASP</a> or <a href="http://www.masonhq.com/">HTML::Mason</a> (use version 1.0x - Freeside is not yet compatible with version 1.1x). + <li>Install <a href="http://rsync.samba.org/">rsync</a> +</ul> +<table> + <tr> + <th>Apache::ASP</th><th>Mason</th> + </tr> + <tr> + <td><ul> + <li>Run <tt>make aspdocs</tt> + <li>Copy <tt>aspdocs/</tt> to your web server's document space. + <li>Create a <a href="http://www.apache-asp.org/config.html#Global">Global</a> directory, such as <tt>/usr/local/etc/freeside/asp-global/</tt> + <li>Copy <tt>htetc/global.asa</tt> to the Global directory. + <li>Configure Apache for the Global directory and to execute .cgi files using Apache::ASP. For example: +<font size="-1"><pre> +<Directory /usr/local/apache/htdocs/freeside-asp> +<Files ~ (\.cgi)> +AddHandler perl-script .cgi +PerlHandler Apache::ASP +</Files> +<Perl> +$MLDBM::RemoveTaint = 1; +</Perl> +PerlSetVar Global /usr/local/etc/freeside/asp-global/ +</Directory> +</pre></font> + </ul></td> + <td><ul> + <li>(use version 1.0x - Freeside is not yet compatible with version 1.1x) + <li>Run <tt>make masondocs</tt> + <li>Copy <tt>masondocs/</tt> to your web server's document space. + <li>Copy <tt>htetc/handler.pl</tt> to your web server's configuration directory. + <li>Edit <tt>handler.pl</tt> and set an appropriate <tt>data_dir</tt>, such as <tt>/usr/local/etc/freeside/mason-data</tt> + <li>Configure Apache to use the <tt>handler.pl</tt> file and to execute .cgi files using HTML::Mason. For example: +<font size="-1"><pre> +<Directory /usr/local/apache/htdocs/freeside-mason> +<Files ~ (\.cgi)> +AddHandler perl-script .cgi +PerlHandler HTML::Mason +</Files> +<Perl> +require "/usr/local/apache/conf/handler.pl"; +</Perl> +</Directory> +</pre></font> + </ul></td> + </tr> +</table> +<ul> + <li>Build and install the Perl modules: + <pre> +$ su +# make install-perl-modules</pre> + <li>Apply the following changes to your database: +<pre> +CREATE TABLE svc_forward ( + svcnum int NOT NULL, + srcsvc int NOT NULL, + dstsvc int NOT NULL, + dst varchar(80), + PRIMARY KEY (svcnum) +); +ALTER TABLE part_svc ADD svc_forward__srcsvc varchar(80) NULL; +ALTER TABLE part_svc ADD svc_forward__srcsvc_flag char(1) NULL; +ALTER TABLE part_svc ADD svc_forward__dstsvc varchar(80) NULL; +ALTER TABLE part_svc ADD svc_forward__dstsvc_flag char(1) NULL; +ALTER TABLE part_svc ADD svc_forward__dst varchar(80) NULL; +ALTER TABLE part_svc ADD svc_forward__dst_flag char(1) NULL; + +CREATE TABLE cust_credit_bill ( + creditbillnum int primary key, + crednum int not null, + invnum int not null, + _date int not null, + amount decimal(10,2) not null +); + +CREATE TABLE cust_bill_pay ( + billpaynum int primary key, + invnum int not null, + paynum int not null, + _date int not null, + amount decimal(10,2) not null +); + +CREATE TABLE cust_credit_refund ( + creditrefundnum int primary key, + crednum int not null, + refundnum int not null, + _date int not null, + amount decimal(10,2) not null +); + +CREATE TABLE part_svc_column ( + columnnum int primary key, + svcpart int not null, + columnname varchar(64) not null, + columnvalue varchar(80) null, + columnflag char(1) null +); + +CREATE TABLE queue ( + jobnum int primary key, + job text not null, + _date int not null, + status varchar(80) not null, + statustext text null, + svcnum int null +); +CREATE INDEX queue1 ON queue ( svcnum ); +CREATE INDEX queue2 ON queue ( status ); + +CREATE TABLE queue_arg ( + argnum int primary key, + jobnum int not null, + arg text null +); +CREATE INDEX queue_arg1 ON queue_arg ( jobnum ); + +CREATE TABLE queue_depend ( + dependnum int primary key, + jobnum int not null, + depend_jobnum int not null +); +CREATE INDEX queue_depend1 ON queue_depend ( jobnum ); +CREATE INDEX queue_depend2 ON queue_depend ( depend_jobnum ); + +CREATE TABLE part_pop_local ( + localnum int primary key, + popnum int not null, + city varchar(80) null, + state char(2) null, + npa char(3) not null, + nxx char(3) not null +); +CREATE UNIQUE INDEX part_pop_local1 ON part_pop_local ( npa, nxx ); + +CREATE TABLE cust_bill_event ( + eventnum int primary key, + invnum int not null, + eventpart int not null, + _date int not null, + status varchar(80) not null, + statustext text +); +CREATE UNIQUE INDEX cust_bill_event1 ON cust_bill_event ( eventpart, invnum ); +CREATE INDEX cust_bill_event2 ON cust_bill_event ( invnum ); + +CREATE TABLE part_bill_event ( + eventpart int primary key, + payby char(4) not null, + event varchar(80) not null, + eventcode text null, + seconds int null, + weight int not null, + plan varchar(80) null, + plandata text null, + disabled char(1) null +); +CREATE INDEX part_bill_event1 ON part_bill_event ( payby ); + +CREATE TABLE export_svc ( + exportsvcnum int primary key, + exportnum int not null, + svcpart int not null +); +CREATE UNIQUE INDEX export_svc1 ON export_svc ( exportnum, svcpart ); +CREATE INDEX export_svc2 ON export_svc ( exportnum ); +CREATE INDEX export_svc3 ON export_svc ( svcpart ); + +CREATE TABLE part_export ( + exportnum int primary key, + machine varchar(80) not null, + exporttype varchar(80) not null, + nodomain char(1) NULL +); +CREATE INDEX part_export1 ON part_export ( machine ); +CREATE INDEX part_export2 ON part_export ( exporttype ); + +CREATE TABLE part_export_option ( + optionnum int primary key, + exportnum int not null, + optionname varchar(80) not null, + optionvalue text NULL +); +CREATE INDEX part_export_option1 ON part_export_option ( exportnum ); +CREATE INDEX part_export_option2 ON part_export_option ( optionname ); + +CREATE TABLE radius_usergroup ( + usergroupnum int primary key, + svcnum int not null, + groupname varchar(80) not null +); +CREATE INDEX radius_usergroup1 ON radius_usergroup ( svcnum ); +CREATE INDEX radius_usergroup2 ON radius_usergroup ( groupname ); + +CREATE TABLE msgcat ( + msgnum int primary key, + msgcode varchar(80) not null, + locale varchar(16) not null, + msg text not null +); +CREATE INDEX msgcat1 ON msgcat ( msgcode, locale ); + +CREATE TABLE cust_tax_exempt ( + exemptnum int primary key, + custnum int not null, + taxnum int not null, + year int not null, + month int not null, + amount decimal(10,2) +); +CREATE UNIQUE INDEX cust_tax_exempt1 ON cust_tax_exempt ( taxnum, year, month ); + +ALTER TABLE svc_acct ADD domsvc integer NULL; +ALTER TABLE part_svc ADD svc_acct__domsvc varchar(80) NULL; +ALTER TABLE part_svc ADD svc_acct__domsvc_flag char(1) NULL; +ALTER TABLE svc_domain ADD catchall integer NULL; +ALTER TABLE cust_main ADD referral_custnum integer NULL; +ALTER TABLE cust_main ADD comments text NULL; +ALTER TABLE cust_pay ADD custnum integer; +ALTER TABLE cust_pay_batch ADD paybatchnum integer; +ALTER TABLE cust_refund ADD custnum integer; +ALTER TABLE cust_pkg ADD manual_flag char(1) NULL; +ALTER TABLE part_pkg ADD plan varchar(80) NULL; +ALTER TABLE part_pkg ADD plandata text NULL; +ALTER TABLE part_pkg ADD setuptax char(1) NULL; +ALTER TABLE part_pkg ADD recurtax char(1) NULL; +ALTER TABLE part_pkg ADD disabled char(1) NULL; +ALTER TABLE part_svc ADD disabled char(1) NULL; +ALTER TABLE cust_bill ADD closed char(1) NULL; +ALTER TABLE cust_pay ADD closed char(1) NULL; +ALTER TABLE cust_credit ADD closed char(1) NULL; +ALTER TABLE cust_refund ADD closed char(1) NULL; +ALTER TABLE cust_bill_event ADD status varchar(80); +ALTER TABLE cust_bill_event ADD statustext text NULL; +ALTER TABLE svc_acct ADD sec_phrase varchar(80) NULL; +ALTER TABLE part_svc ADD svc_acct__sec_phrase varchar(80) NULL; +ALTER TABLE part_svc ADD svc_acct__sec_phrase_flag char(1) NULL; +ALTER TABLE part_pkg ADD taxclass varchar(80) NULL; +ALTER TABLE cust_main_county ADD taxclass varchar(80) NULL; +ALTER TABLE cust_main_county ADD exempt_amount decimal(10,2); +CREATE INDEX cust_main3 ON cust_main ( referral_custnum ); +CREATE INDEX cust_credit_bill1 ON cust_credit_bill ( crednum ); +CREATE INDEX cust_credit_bill2 ON cust_credit_bill ( invnum ); +CREATE INDEX cust_bill_pay1 ON cust_bill_pay ( invnum ); +CREATE INDEX cust_bill_pay2 ON cust_bill_pay ( paynum ); +CREATE INDEX cust_credit_refund1 ON cust_credit_refund ( crednum ); +CREATE INDEX cust_credit_refund2 ON cust_credit_refund ( refundnum ); +CREATE UNIQUE INDEX cust_pay_batch_pkey ON cust_pay_batch ( paybatchnum ); +CREATE UNIQUE INDEX part_svc_column1 ON part_svc_column ( svcpart, columnname ); +CREATE INDEX cust_pay2 ON cust_pay ( paynum ); +CREATE INDEX cust_pay3 ON cust_pay ( custnum ); +CREATE INDEX cust_pay4 ON cust_pay ( paybatch ); +</pre> + + <li>If you are using PostgreSQL, apply the following changes to your database: +<pre> +CREATE UNIQUE INDEX agent_pkey ON agent ( agentnum ); +CREATE UNIQUE INDEX agent_type_pkey ON agent_type ( typenum ); +CREATE UNIQUE INDEX cust_bill_pkey ON cust_bill ( invnum ); +CREATE UNIQUE INDEX cust_credit_pkey ON cust_credit ( crednum ); +CREATE UNIQUE INDEX cust_main_pkey ON cust_main ( custnum ); +CREATE UNIQUE INDEX cust_main_county_pkey ON cust_main_county ( taxnum ); +CREATE UNIQUE INDEX cust_main_invoice_pkey ON cust_main_invoice ( destnum ); +CREATE UNIQUE INDEX cust_pay_pkey ON cust_pay ( paynum ); +CREATE UNIQUE INDEX cust_pkg_pkey ON cust_pkg ( pkgnum ); +CREATE UNIQUE INDEX cust_refund_pkey ON cust_refund ( refundnum ); +CREATE UNIQUE INDEX cust_svc_pkey ON cust_svc ( svcnum ); +CREATE UNIQUE INDEX domain_record_pkey ON domain_record ( recnum ); +CREATE UNIQUE INDEX nas_pkey ON nas ( nasnum ); +CREATE UNIQUE INDEX part_pkg_pkey ON part_pkg ( pkgpart ); +CREATE UNIQUE INDEX part_referral_pkey ON part_referral ( refnum ); +CREATE UNIQUE INDEX part_svc_pkey ON part_svc ( svcpart ); +CREATE UNIQUE INDEX port_pkey ON port ( portnum ); +CREATE UNIQUE INDEX prepay_credit_pkey ON prepay_credit ( prepaynum ); +CREATE UNIQUE INDEX session_pkey ON session ( sessionnum ); +CREATE UNIQUE INDEX svc_acct_pkey ON svc_acct ( svcnum ); +CREATE UNIQUE INDEX svc_acct_pop_pkey ON svc_acct_pop ( popnum ); +CREATE UNIQUE INDEX svc_acct_sm_pkey ON svc_acct_sm ( svcnum ); +CREATE UNIQUE INDEX svc_domain_pkey ON svc_domain ( svcnum ); +CREATE UNIQUE INDEX svc_www_pkey ON svc_www ( svcnum ); +</pre> + <li>If you wish to enable service/shipping addresses, apply the following + changes to your database: +<pre> +ALTER TABLE cust_main ADD COLUMN ship_last varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_first varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_company varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_address1 varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_address2 varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_city varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_county varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_state varchar(80) NULL; +ALTER TABLE cust_main ADD COLUMN ship_zip varchar(10) NULL; +ALTER TABLE cust_main ADD COLUMN ship_country char(2) NULL; +ALTER TABLE cust_main ADD COLUMN ship_daytime varchar(20) NULL; +ALTER TABLE cust_main ADD COLUMN ship_night varchar(20) NULL; +ALTER TABLE cust_main ADD COLUMN ship_fax varchar(12) NULL; +CREATE INDEX cust_main4 ON cust_main ( ship_last ); +CREATE INDEX cust_main5 ON cust_main ( ship_company ); +</pre> + <li>If you are using the signup server, reinstall it according to the <a href="signup.html">instructions</a>. The 1.3.x signup server is not compatible with 1.4.x. + <li>Run <tt>bin/dbdef-create <i>username</i></tt> + <li>If you have svc_acct_sm records or service definitions: + <ul> + <li>Create a service definition with table svc_forward + <li>Run <tt>bin/fs-migrate-svc_acct_sm <i>username</i></tt> + </ul> + <li>Or if you just have svc_acct records: + <ul> + <li>Order and provision a package for your default domain and note down the <b>Service #</b> or <i>svcnum</i>. + <li><tt>UPDATE svc_acct SET domsvc = </tt><i>svcnum</i> + <li>Update your service definitions to have default (or fixed) <b>domsvc</b>. + </ul> + <li>Run <tt>bin/fs-migrate-payref<i>username</i></tt> + <li>Run <tt>bin/fs-migrate-part_svc<i>username</i></tt> + <li><b>After running bin/fs-migrate-payref</b>, apply the following changes to your database: + <table border><tr><th>PostgreSQL</th><th>MySQL, others</th></tr> +<tr><td> +<font size=-1><pre> +CREATE TABLE cust_pay_temp ( + paynum int primary key, + custnum int not null, + paid decimal(10,2) not null, + _date int null, + payby char(4) not null, + payinfo varchar(16) null, + paybatch varchar(80) null, + closed char(1) null +); +INSERT INTO cust_pay_temp SELECT paynum, custnum, paid, _date, payby, payinfo, paybatch, closed FROM cust_pay; +DROP TABLE cust_pay; +ALTER TABLE cust_pay_temp RENAME TO cust_pay; +CREATE UNIQUE INDEX cust_pay1 ON cust_pay (paynum); +CREATE TABLE cust_refund_temp ( + refundnum int primary key, + custnum int not null, + _date int null, + refund decimal(10,2) not null, + otaker varchar(8) not null, + reason varchar(80) not null, + payby char(4) not null, + payinfo varchar(16) null, + paybatch varchar(80) null, + closed char(1) null +); +INSERT INTO cust_refund_temp SELECT refundnum, custnum, _date, refund, otaker, reason, payby, payinfo, '', closed from cust_refund; +DROP TABLE cust_refund; +ALTER TABLE cust_refund_temp RENAME TO cust_refund; +CREATE UNIQUE INDEX cust_refund1 ON cust_refund (refundnum); +</pre></font> +</td><td> +<font size=-1><pre> +ALTER TABLE cust_pay DROP COLUMN invnum; +ALTER TABLE cust_refund DROP COLUMN crednum; +</pre></font> +</td></tr></table> + <li><b>IMPORTANT: After applying the second set of database changes</b>, run <tt>bin/dbdef-create <i>username</i></tt> again. + <li><b>IMPORTANT</b>: run <tt>bin/create-history-tables <i>username</i></tt> + <li><b>IMPORTANT: After running bin/create-history-tables</b>, run <tt>bin/dbdef-create <i>username</i></tt> again. + <li>As the freeside UNIX user, run <tt>bin/populate-msgcat <i>username</i></tt +> to populate the message catalog +<!-- <li>set the <a href="../config/config.cgi#username_policy">user_policy configuration value</a> as appropriate for your site. --> + <li>set the <a href="../config/config.cgi#locale">locale configuration value</a> to en_US. + <li>the mxmachines, nsmachines, arecords and cnamerecords configuration values have been deprecated. Set the <a href="../config/config.cgi#defaultrecords">defaultrecords configuration value</a> instead. + <li>Create the `/usr/local/etc/freeside/cache.<i>datasrc</i>' directory + (owned by the freeside user). + <li>freeside-queued was installed with the Perl modules. Start it now and ensure that is run upon system startup. + <li>Set appropriate <a href="../browse/part_bill_event.cgi">invoice events</a> for your site. At the very least, you'll want to set some invoice events "<i>After 0 days</i>": a <i>BILL</i> invoice event to print invoices, a <i>CARD</i> invoice event to batch or run cards real-time, and a <i>COMP</i> invoice event to "pay" complimentary customers. If you were using the <i>-i</i> option to <a href="man/bin/freeside-bill.html">freeside-bill</a> it should be removed. + <li>Use <a href="man/bin/freeside-daily.html">freeside-daily</a> instead of <a href="man/bin/freeside-bill.html">freeside-bill</a>. + <li>If you would like Freeside to notify your customers when their credit + cards and other billing arrangements are about to expire, arrange for + <b>freeside-expiration-alerter</b> to be run daily by cron or similar + facility. The message it sends can be configured from the + <u>Configuration</u> choice of the main menu as <u>alerter_template</u>. + <li>Export has been rewritten. If you were using the icradiusmachines, + icradius_mysqldest, icradius_mysqlsource, or icradius_secrets files, add + an appropriate "sqlradius" export to all relevant Service Definitions + instead. Use <a href="http://www.mysql.com/documentation/mysql/bychapter/manual_MySQL_Database_Administration.html#Replication">MySQL replication</a> or + point the "sqlradius" export directly at your external ICRADIUS or FreeRADIUS + database (or through an SSL-necrypting proxy...) +</ul> +</body> |