Skip to main content

Overview

This guide provides solutions to common issues encountered in SMAF, including login failures, database connection errors, file upload problems, XML validation errors, session timeouts, permission errors, and payment processing issues.

Login and Authentication Issues

Failed Login - User Not Found

Symptom: User receives error message: “No se encuentra el usuario, validar datos”Common Causes:
  • Username does not exist in database
  • User account is inactive (ESTATUS = ‘0’)
  • User not assigned to current fiscal year (PERIODO mismatch)
  • Username entered incorrectly
Solution Steps:
1

Verify user exists

SELECT USSER, NOMBRE, APELLIDO_PAT, ESTATUS, PERIODO
FROM crip_usuarios
WHERE USSER = 'username';
2

Check user status

-- User must have ESTATUS = '1' and correct PERIODO
SELECT * FROM vw_usuarios
WHERE USSER = 'username'
  AND ESTATUS = '1'
  AND PERIODO = YEAR(CURDATE());
3

Activate user if needed

UPDATE crip_usuarios
SET ESTATUS = '1',
    PERIODO = YEAR(CURDATE())
WHERE USSER = 'username';

Failed Login - Incorrect Password

Symptom: User receives error: “La contraseña es incorrecta”Common Causes:
  • Password entered incorrectly
  • Password stored incorrectly in database
  • Encryption/decryption mismatch
Solution Steps:
-- Check password hash
SELECT USSER, PASSWORD
FROM vw_usuarios
WHERE USSER = 'username';

-- Reset password using encryption utility
-- Access: /Utilerias/Encriptador.aspx
Password Reset Procedure:
1

Access password encryptor

Navigate to: https://your-server/Utilerias/Encriptador.aspx
2

Generate encrypted password

Enter new password and copy encrypted value
3

Update database

UPDATE crip_job
SET PASSWORD = 'encrypted_password_here'
WHERE USUARIO = 'username';

Failed Login - Administrative Unit Mismatch

Symptom: Error: “El usuario Ingresado no pertenece a la unidad administrativa especificada o se encuentra dado de baja”Common Causes:
  • User not assigned to the selected administrative unit (DEPENDENCIA)
  • User has wrong CLV_DEP value
  • Missing entry in crip_job table
Solution:
-- Verify user's administrative unit assignment
SELECT 
    u.USSER,
    j.CLV_DEP,
    d.DESCRIPCION as unidad_administrativa
FROM crip_usuarios u
INNER JOIN crip_job j ON u.USSER = j.USUARIO
INNER JOIN crip_dependencia d ON j.CLV_DEP = d.CLV_DEP
WHERE u.USSER = 'username';

-- Assign user to correct unit
UPDATE crip_job
SET CLV_DEP = 'correct_clv_dep'
WHERE USUARIO = 'username';

Session Timeout Issues

Symptom: Users are logged out after brief periods of inactivitySession Configuration:
// Default session timeout: 20 minutes
Session.Timeout = 20;
Solutions:
<system.web>
  <sessionState timeout="30" mode="InProc" />
</system.web>
Check session state:
if (Session["Version"] != null)
{
    // User is logged in
}
else
{
    // Session expired - redirect to login
    Response.Redirect("../index.aspx");
}

Database Connection Errors

Connection String Decryption Failure

Symptom: Application fails to connect to database with decryption errorsLocation: MngConexion.cs - getConexionMysql() method
string CadenaConexionEncriptada = ConfigurationManager.AppSettings["localhost"];
string CadenaConexion = MngEncriptacion.decripString(CadenaConexionEncriptada);
Common Causes:
  • Corrupted encryption key
  • Wrong appSettings key name
  • Modified connection string in web.config
Solution:
1

Verify connection string key

<!-- Check web.config for correct key -->
<appSettings>
  <add key="localhost" value="tGf1BXWYdXKSsk+PoraCYtfZx2CaCz+YSH7fEzln+tPCCIPyhXka5KxFVkYaJDYXUGY8BwEgL2KIww23CpBtBw==" />
</appSettings>
2

Re-encrypt connection string

Use /Utilerias/Encriptador.aspx to generate new encrypted connection string:
Original: Server=localhost;Database=inapesca_cripsc;Uid=root;Pwd=password;
Encrypted: [use encryptor to generate]
3

Update web.config

Replace encrypted value in web.config and restart IIS

MySQL Connection Pool Exhaustion

Symptom: Error: “Too many connections” or “Connection pool exhausted”Diagnosis:
-- Check current connections
SHOW PROCESSLIST;

-- Check max connections setting
SHOW VARIABLES LIKE 'max_connections';

-- Count connections by user
SELECT user, COUNT(*) as connection_count
FROM information_schema.processlist
GROUP BY user;
Solutions:
1

Increase max_connections

SET GLOBAL max_connections = 500;
Make permanent in /etc/mysql/my.cnf:
[mysqld]
max_connections = 500
2

Check for connection leaks

Verify all connections are properly disposed:
// Ensure disposeConexion is called
MngConexion.disposeConexionSMAF(ConexionMysql);
3

Kill idle connections

-- Find idle connections
SELECT id, user, host, db, time
FROM information_schema.processlist
WHERE command = 'Sleep'
  AND time > 300;

-- Kill specific connection
KILL [connection_id];

Database Connection Refused

Symptom: “Can’t connect to MySQL server on ‘localhost’”Quick Checks:
# Check if MySQL is running
systemctl status mysql

# Start MySQL if stopped
systemctl start mysql

# Check MySQL is listening
netstat -tlnp | grep 3306

# Test connection
mysql -u root -p -e "SELECT 1"
Check MySQL error log:
tail -f /var/log/mysql/error.log

File Upload Problems

XML File Upload Failures

Symptom: XML files fail to upload or validate properlyCommon Causes:
  • File size exceeds maxRequestLength (50MB)
  • Invalid XML structure
  • Missing UUID or RFC fields
  • Unsupported CFDI version
Validation Requirements:SMAF supports CFDI versions:
  • Version 3.3 (cfdv33.cs, cfdiv33.cs)
  • Version 4.0 (cfdv4.cs, cfdiv4.cs)
Solution Steps:
1

Verify file size

<!-- Check web.config maxRequestLength (in KB) -->
<httpRuntime maxRequestLength="50000" />

<!-- Increase if needed -->
<httpRuntime maxRequestLength="102400" /> <!-- 100MB -->
2

Validate XML structure

Check XML contains required fields:
  • UUID (Timbre Fiscal)
  • RFC (Proveedor)
  • Fecha (Timbrado)
  • Total, Subtotal
  • Conceptos
3

Check XML storage

# Verify XML directory permissions
ls -la /var/www/InapescaWeb/XML/

# Create year/user directory if missing
mkdir -p /var/www/InapescaWeb/XML/2026/username
chown IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/XML/2026/username
chmod 755 /var/www/InapescaWeb/XML/2026/username
4

Verify database insertion

-- Check if XML was recorded
SELECT * FROM crip_xml_detalle
WHERE USUARIO = 'username'
  AND DOCUMENTO = 'commission_number'
ORDER BY FECH_EFF DESC;
XML Validation Error Messages:
Common errors:
- "UUID duplicado" - UUID already exists
- "RFC inválido" - Invalid tax ID format
- "Versión CFDI no soportada" - Unsupported CFDI version
- "Error al procesar conceptos" - Error processing line items

PDF Document Upload Issues

Symptom: PDF uploads fail or uploaded PDFs cannot be accessedFile Storage Structure:
/var/www/InapescaWeb/PDF/{Year}/{Center}/COMISIONES/{OficioNumber}/
Troubleshooting:
1

Check directory permissions

# Verify PDF directory exists and is writable
ls -la /var/www/InapescaWeb/PDF/2026/

# Fix permissions if needed
chown -R IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/PDF
chmod -R 755 /var/www/InapescaWeb/PDF
2

Verify file was uploaded

# Find recently uploaded PDFs
find /var/www/InapescaWeb/PDF -name "*.pdf" -mtime -1 -ls

# Check specific file
ls -lh /var/www/InapescaWeb/PDF/2026/CRIP-SC/COMISIONES/RJL-*.pdf
3

Check for file size issues

# Find large PDFs that may cause issues
find /var/www/InapescaWeb/PDF -name "*.pdf" -size +50M -ls
4

Verify PDF generation code

Check clsPdf.cs for PDF generation errors:
// PDF files are named: {Archivo}.pdf
// Example: RJL-INAPESCA-CRIP-SC-001-2026.pdf
string archivo = poComision.Archivo.Replace(".pdf", "");

File Upload Exceeds Size Limit

Symptom: “Maximum request length exceeded” errorCurrent Limit:
<httpRuntime maxRequestLength="50000" /> <!-- 50MB in KB -->
Solution:
1

Increase IIS request size

<!-- In web.config -->
<system.web>
  <httpRuntime maxRequestLength="102400" executionTimeout="3600" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="104857600" /> <!-- 100MB in bytes -->
    </requestFiltering>
  </security>
</system.webServer>
2

Restart IIS

iisreset

Payment Processing Errors

Payment Reference Generation Failure

Symptom: Payment reference (referencia bancaria) fails to generateCommon Causes:
  • Missing bank account information
  • Incorrect partida presupuestal
  • Database insertion error
  • Missing required fields
Solution:
1

Verify bank account configuration

-- Check user's bank account
SELECT 
    j.USUARIO,
    j.CUENTA_CONTABLE,
    cb.BANCO,
    cb.CUENTA
FROM crip_job j
LEFT JOIN crip_cuentas_bancarias cb ON j.CUENTA_CONTABLE = cb.CODIGO
WHERE j.USUARIO = 'username';

-- Add bank account if missing
UPDATE crip_job
SET CUENTA_CONTABLE = 'account_code'
WHERE USUARIO = 'username';
2

Check payment reference table

-- Verify reference was created
SELECT * FROM crip_referencia
WHERE COMISIONADO = 'username'
ORDER BY FECHA_GENERA DESC
LIMIT 5;

-- Check for errors in reference details
SELECT * FROM crip_referenciaDetalles
WHERE REF_BANCARIA = 'reference_number';
3

Validate required fields

Ensure commission has all required data:
SELECT 
    ARCHIVO,
    COMISIONADO,
    TOTAL_VIATICOS,
    COMBUSTIBLE_EFECTIVO,
    PASAJE,
    PEAJE,
    ESTATUS
FROM crip_comision
WHERE ARCHIVO = 'commission_file.pdf';

Payment Status Update Errors

Symptom: Payment status fails to update from pending to paidDatabase Tables Involved:
  • crip_referencia - Payment references
  • crip_comision_detalle - Commission payment details
Solution:
-- Check current payment status
SELECT 
    REF_BANCARIA,
    ESTATUS,
    IMPORTE,
    IMPORTE_PAGADO,
    FECHA_PAGO
FROM crip_referencia
WHERE REF_BANCARIA = 'reference_number';

-- Update payment status manually
UPDATE crip_referencia
SET ESTATUS = '2',
    IMPORTE_PAGADO = importe_value,
    FECHA_PAGO = 'YYYY-MM-DD'
WHERE REF_BANCARIA = 'reference_number';

-- Update commission detail status
UPDATE crip_comision_detalle
SET ESTATUS = '2'
WHERE ARCHIVO = 'commission_file.pdf'
  AND COMISIONADO = 'username';

Commission Processing Issues

Commission Approval Workflow Stuck

Symptom: Commission not advancing through approval workflowApproval Statuses:
  • 0 - Inactive/Cancelled
  • 1 - Active/Pending
  • 2 - Approved
  • 3 - Completed
Solution:
1

Check commission status

SELECT 
    ARCHIVO,
    USSER as solicitante,
    ESTATUS,
    FECHA_SOL,
    FECHA_RESP,
    FECHA_AUTORIZA,
    LUGAR,
    FECHA_I,
    FECHA_F
FROM crip_comision
WHERE ARCHIVO = 'RJL-INAPESCA-XXX-###-2026.pdf';
2

Check authorization dates

-- Set authorization date if missing
UPDATE crip_comision
SET FECHA_AUTORIZA = CURDATE(),
    ESTATUS = '2'
WHERE ARCHIVO = 'commission_file.pdf'
  AND ESTATUS = '1';
3

Verify user permissions

-- Check if user has authorization permissions
SELECT 
    u.USSER,
    u.ROL,
    p.NIVEL_AUTORIZACION,
    p.PUEDE_AUTORIZAR
FROM crip_usuarios u
INNER JOIN crip_permisos p ON u.ROL = p.ROL
WHERE u.USSER = 'authorizer_username';

Expense Verification (Comprobación) Errors

Symptom: Expense verification process fails or shows errorsCommon Issues:
  • Expense total exceeds advance amount
  • Missing required XML invoices
  • Reintegro (reimbursement) calculation incorrect
  • Status not updating
Solution:
1

Calculate reintegro amount

-- Total advanced vs. expenses
SELECT 
    c.ARCHIVO,
    (c.TOTAL_VIATICOS + c.COMBUSTIBLE_EFECTIVO + c.PEAJE + c.PASAJE) as total_avance,
    COALESCE(SUM(x.TOTAL), 0) as total_comprobado,
    (c.TOTAL_VIATICOS + c.COMBUSTIBLE_EFECTIVO + c.PEAJE + c.PASAJE) - COALESCE(SUM(x.TOTAL), 0) as reintegro
FROM crip_comision c
LEFT JOIN crip_xml_detalle x ON c.ARCHIVO = x.DOCUMENTO
WHERE c.ARCHIVO = 'commission_file.pdf'
GROUP BY c.ARCHIVO;
2

Check verification status

-- Verify comprobacion record exists
SELECT * FROM crip_comision_comprobacion
WHERE ARCHIVO = 'commission_file.pdf'
  AND COMISIONADO = 'username';

-- Create if missing
INSERT INTO crip_comision_comprobacion
(ARCHIVO, COMISIONADO, FECHA_COMPROBACION, ESTATUS)
VALUES ('commission_file.pdf', 'username', CURDATE(), '1');
3

Verify XML uploads

-- Check all XML for commission
SELECT 
    UUID,
    RFC,
    CONCEPTO,
    TOTAL,
    PARTIDA,
    ESTATUS
FROM crip_xml_detalle
WHERE DOCUMENTO = 'commission_file.pdf'
ORDER BY FECH_EFF DESC;

Permission and Access Errors

User Cannot Access Module

Symptom: User cannot access specific modules or featuresRole-Based Access Control:SMAF uses role-based permissions stored in Session:
Session["Crip_Rol"]  // User role
Session["Crip_Nivel"]  // User level
Session["Crip_Ubicacion"]  // Administrative unit
Solution:
1

Check user role

SELECT 
    USSER,
    NOMBRE,
    ROL,
    NIVEL,
    DEPENDENCIA as ubicacion
FROM vw_usuarios
WHERE USSER = 'username';
2

Verify role permissions

-- Check permissions for role
SELECT * FROM crip_permisos
WHERE ROL = 'user_role';

-- Add permissions if needed
INSERT INTO crip_permisos
(ROL, MODULO, PUEDE_VER, PUEDE_CREAR, PUEDE_EDITAR, PUEDE_ELIMINAR)
VALUES ('role_code', 'module_name', 1, 1, 0, 0);
3

Update user role

-- Assign different role
UPDATE crip_job
SET ROL = 'new_role_code'
WHERE USUARIO = 'username';
Common Roles:
  • ADMINISTRADOR - Full system access
  • DIRECTOR_ADMINISTRACION - Administrative director
  • JEFE_CENTRO - Center chief
  • DIRECTOR_ADJUNTO - Deputy director
  • SUBDIRECTOR_ADJUNTO - Assistant director
  • INVESTIGADOR - Researcher
  • JEFE_DEPARTAMENTO - Department head

File Permission Errors

Symptom: Errors writing files to PDF or XML directoriesSolution:
# Fix directory ownership
chown -R IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/PDF
chown -R IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/XML
chown -R IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/Images
chown -R IIS_IUSRS:IIS_IUSRS /var/www/InapescaWeb/Excel

# Set correct permissions
chmod -R 755 /var/www/InapescaWeb/PDF
chmod -R 755 /var/www/InapescaWeb/XML
chmod -R 755 /var/www/InapescaWeb/Images
chmod -R 755 /var/www/InapescaWeb/Excel

# Verify permissions
ls -la /var/www/InapescaWeb/

Performance Issues

Slow Query Performance

Symptom: Pages load slowly or timeoutDiagnosis:
-- Enable slow query log
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;

-- Check running queries
SHOW PROCESSLIST;
Common Slow Queries:
1

Identify slow queries

mysqldumpslow -s t -t 10 /var/log/mysql/slow-query.log
2

Add missing indexes

-- Common indexes to add
CREATE INDEX idx_comision_fecha ON crip_comision(FECHA_SOL);
CREATE INDEX idx_comision_usuario ON crip_comision(USSER);
CREATE INDEX idx_xml_documento ON crip_xml_detalle(DOCUMENTO);
CREATE INDEX idx_xml_fecha ON crip_xml_detalle(FECH_EFF);
CREATE INDEX idx_referencia_fecha ON crip_referencia(FECHA_GENERA);
3

Optimize tables

OPTIMIZE TABLE crip_comision;
OPTIMIZE TABLE crip_xml_detalle;
OPTIMIZE TABLE crip_referencia;
ANALYZE TABLE crip_comision;

High Memory Usage

Symptom: Server running out of memory, IIS application pool recycling frequentlySolution:
1

Check IIS application pool settings

# View current memory limits
appcmd list apppool "SMAFAppPool" /text:recycling.periodicRestart.memory

# Increase memory limit if needed
appcmd set apppool "SMAFAppPool" /recycling.periodicRestart.memory:2097152
2

Monitor MySQL memory

SHOW VARIABLES LIKE '%buffer%';
SHOW STATUS LIKE '%mem%';
3

Check for memory leaks

  • Review code for undisposed database connections
  • Check Session data size
  • Monitor large file uploads
  • Review caching strategy

Emergency Procedures

System Unresponsive

1

Check service status

# Check MySQL
systemctl status mysql

# Check IIS
appcmd list apppool
2

Restart services

# Restart MySQL
systemctl restart mysql

# Restart IIS application pool
appcmd stop apppool /apppool.name:"SMAFAppPool"
appcmd start apppool /apppool.name:"SMAFAppPool"

# Or restart IIS completely
iisreset
3

Check logs

# MySQL error log
tail -100 /var/log/mysql/error.log

# IIS logs
tail -100 C:\inetpub\logs\LogFiles\W3SVC1\*.log

# Application logs
tail -100 /var/log/smaf/error.log
4

Notify stakeholders

If system cannot be recovered quickly, notify users and escalate to senior administrators

Getting Additional Help

Diagnostic Information to Collect

When reporting issues, collect:
# System info
uname -a
cat /etc/os-release

# MySQL version
mysql --version

# IIS version
appcmd list apppool

# Disk space
df -h

# Memory usage
free -h

# Recent errors
tail -100 /var/log/mysql/error.log
tail -100 /var/log/smaf/error.log

Support Contacts

Technical Support

For technical issues:INAPESCA IT Department[email protected]

Database Issues

For database problems:Database Administrator[email protected]

System Monitoring

Proactive monitoring to prevent issues

Backup and Restore

Recover from data loss or corruption

Build docs developers (and LLMs) love