Fishbowl Integration Analysis

Complete analysis of Fishbowl database usage in the Greyne Middleware system

Executive Summary

Key Finding

Fishbowl database is NOT used in the current live order processing system. The integration exists only in legacy v1 code and the database connection file (_con.php) is orphaned.

Live System

CSV-based order processing
No Fishbowl integration

Legacy v1

Heavy Fishbowl integration
Warehouse operations

Future Ready

Secure connection class created
Environment-based config

Investigation Process

Initial Discovery

During security audit, found hardcoded database credentials in _con.php:

$host = '198.99.157.64';     // External server IP
$port = '3870';              // Non-standard MySQL port
$username = 'gone';          // Hardcoded username
$password = 'fishing';       // Hardcoded password  
$database = 'greynedata';    // Database name

Initial Speculation

  • External database connection (not local 127.0.0.1)
  • Non-standard port 3870 suggested specialized system
  • Database name 'greynedata' implied business data
  • Hypothesis: Could be Fishbowl Inventory system (confirmed later)

Confirmation Process

  1. User confirmed: "this is the fishbowl connection"
  2. Searched codebase for current usage patterns
  3. Analyzed v1 vs current implementation differences
  4. Verified live system workflow (CSV-only processing)

Current System (Live)

Order Processing Workflow
  • Input: CSV files from retailers (Home Depot, Lowe's)
  • Processing: CakePHP application with local MySQL database
  • Database: greynedev_officeautomation (127.0.0.1:3306)
  • Output: Processed orders, SFTP exports
Fishbowl References Found
pendingfishbowl fieldMath calculation only, no DB query
fishbowlapicall() methodAPI call, not database connection
Status: No active Fishbowl database integration in live system

Legacy v1 System

Heavy Fishbowl Integration

Found extensive Fishbowl database usage in v1 CrsController:

Database Tables Used
  • so - Sales Orders
  • pick - Pick Lists
  • pickitem - Pick Items
  • part - Product Data
  • product - Product Catalog
  • locationgroup - Locations
  • carrier - Shipping
  • stateconst - States
  • pickstatus - Status
  • uom - Units of Measure
Connection Pattern
$connection = ConnectionManager::get('fishbowl');
Status: Legacy system only - not used in current production

Technical Analysis

Database Configuration

Host:198.99.157.64
Port:3870
Database:greynedata
Purpose:Fishbowl Inventory System

File Status

_con.php:Orphaned
Current Usage:None
Security Risk:Exposed credentials
Recommendation:Archive or delete

System Architecture

  • Current: Standalone CSV processor
  • Legacy: Fishbowl-integrated warehouse system
  • Future: Environment-based secure connection available

Security Improvements Made

Created Secure Infrastructure

  • FishbowlDatabase Class: src/Connection/FishbowlDatabase.php
  • Environment Variables: FISHBOWL_DB_* configuration
  • Configuration: Added to app_local.php
  • Test Framework: Connection testing methods

Usage Example

use App\Connection\FishbowlDatabase;

// Test connection
$result = FishbowlDatabase::testConnection();

// Query data
$parts = FishbowlDatabase::query("SELECT * FROM part LIMIT 10");

// Get connection
$conn = FishbowlDatabase::getConnection();

Environment Configuration

# .env file
FISHBOWL_DB_HOST=198.99.157.64
FISHBOWL_DB_PORT=3870
FISHBOWL_DB_USER=gone
FISHBOWL_DB_PASS=fishing
FISHBOWL_DB_NAME=greynedata

Features

  • Connection pooling
  • Error handling and logging
  • Environment-based configuration
  • Backward compatibility
  • Test methods included

Recommendations

Immediate Actions

  • Archive or delete _con.php file
  • Document current CSV-only workflow
  • Keep secure FishbowlDatabase class for future use
  • Update system documentation

Future Considerations

  • Evaluate need for Fishbowl integration
  • Consider real-time inventory sync
  • Assess warehouse operation requirements
  • Plan migration strategy if needed

Monitoring

  • Monitor CSV processing performance
  • Track order fulfillment accuracy
  • Assess integration pain points
  • Document any Fishbowl requests

Test Connection (Future Use)

If Fishbowl integration is needed in the future, use the secure connection test:

Note: Connection tests will fail unless Fishbowl server is accessible and credentials are valid. The secure infrastructure is ready for use when needed.