- add message catalog table & beginning of web interface
[freeside.git] / httemplate / docs / upgrade8.html
index d86adc0..a7b5853 100644 (file)
@@ -6,7 +6,10 @@
 <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&nbsp;<a href="http://www.ca.postgresql.org/devel-corner/docs/postgres/backup.html">PostgreSQL</a>) (with&nbsp;<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>.
   <li>Install <a href="http://www.apache-asp.org/">Apache::ASP</a> or <a href="http://www.masonhq.com/">HTML::Mason</a>.
+  <li>Install <a href="http://rsync.samba.org/">rsync</a>
 </ul>
 <table>
   <tr>
@@ -53,14 +56,10 @@ require "/usr/local/apache/conf/handler.pl";
   </tr>
 </table>
 <ul>
-  <li>Change to the FS directory in the new tarball, and build and install the
-      Perl modules:
+  <li>Build and install the Perl modules:
     <pre>
-$ cd FS/
-$ perl Makefile.PL
-$ make
 $ su
-# make install UNINST=1</pre>
+# make install-perl-modules</pre>
    <li>Apply the following changes to your database:
 <pre>
 CREATE TABLE svc_forward (
@@ -105,23 +104,109 @@ CREATE TABLE part_svc_column (
 
 CREATE TABLE queue (
   jobnum int primary key,
-  job varchar not null,
+  job text not null,
   _date int not null,
-  status varchar(80) 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 varchar null
+  arg text null
 );
 CREATE INDEX queue_arg1 ON queue_arg ( 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
+);
+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 part_export (
+  exportnum int primary key,
+  svcpart int not null,
+  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 );
+
 ALTER TABLE svc_acct ADD domsvc integer NOT NULL;
 ALTER TABLE svc_domain ADD catchall integer NULL;
 ALTER TABLE cust_main ADD referral_custnum integer 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;
 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 );
@@ -129,13 +214,17 @@ 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 agent_type ( typenum );
+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 );
@@ -182,12 +271,15 @@ CREATE INDEX cust_main2 ON cust_main ( ship_company );
   <li>If you wish to enable customer comments, apply the following change to
       your database:
 <pre>
-ALTER TABLE cust_main ADD COLUMN comments varchar NULL;
+ALTER TABLE cust_main ADD COLUMN comments text NULL;
 </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 bin/dbdef-create.
-  <li>create a service based on svc_forward
-  <li>Run bin/fs-migrate-svc_acct_sm
+  <li>If you have svc_acct_sm records or service definitions:
+    <ul>
+      <li>Create a service definition with table svc_forward
+      <li>Run bin/fs-migrate-svc_acct_sm
+    </ul>
   <li>Run bin/fs-migrate-payref
   <li>Run bin/fs-migrate-part_svc
   <li><b>After running bin/fs-migrate-payref</b>, apply the following changes to your database:
@@ -206,7 +298,7 @@ CREATE TABLE cust_pay_temp (
 INSERT INTO cust_pay_temp SELECT * 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 UNIQUE INDEX cust_pay1 ON cust_pay (paynum);
 CREATE TABLE cust_refund_temp (
   refundnum int primary key,
   custnum int not null,
@@ -221,7 +313,7 @@ CREATE TABLE cust_refund_temp (
 INSERT INTO cust_refund_temp SELECT * 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;
+CREATE UNIQUE INDEX cust_refund1 ON cust_refund (refundnum);
 </pre></font>
 </td><td>
 <font size=-1><pre>
@@ -230,9 +322,25 @@ 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 bin/dbdef-create again.
-  <li>create the <a href="config.html#username_policy">user_policy configuration file</a> as appropriate for your site.
+  <li><b>IMPORTANT</b>: run bin/create-history-tables
+  <li><b>IMPORTANT: After running bin/create-history-tables</b>, run bin/dbdef-create again.
+  <li>set the <a href="../config/config.cgi#username_policy">user_policy configuration value</a> as appropriate for your site.
+  <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
-      (ownded by the freeside user).
+      (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>