Skip to main content
Member
Sep 22, 2026 12:52 AM UTC
Solved

Fixed File Integration

Hi OneStream Community,

I’m relatively new to fixed-width data sources and have a couple of questions.

The client has three fixed-width files that will be used as Transaction Matching data sources. 

  1. Is there a way to bypass all headers, footers, blank rows, and other non-transaction rows using a single bypass rule or expression, instead of creating multiple individual bypass rules?
  2. What is the recommended way to import credit amounts as negative values? This is a one-sided match. The Amount field is displaying correctly as an absolute value of either the debit or credit amount, and the Debit field is also displaying correctly. However, the Credit field in the data set is always showing 0.

Any guidance on the fixed-width field configuration or where the credit sign logic should be applied would be greatly appreciated.

Thank you!

RobbSalzmann
Employee - Advisor
Oct 9, 2026 9:54 PM UTC

Some ideas for this:
 

The built-in Bypass dimension takes one value per entry (Contains at Position or Contains Within Line), so headers, footers and blanks would each need their own.

Use a Complex Expression. args.Line returns the whole record, so the expression can work on the whole record at once. The test that catches every non-transaction row at once is “does the amount position hold a number”:

Dim amt As String = Mid(args.Line, 45, 15).Trim()   ' Start position and length of the Amount field
Dim d As Decimal
If Decimal.TryParse(amt, d) Then
Return "KEEP"
Else
Return "SKIP"
End If

Put that on the Bypass dimension and set its Bypass Value to SKIP with Contains at Position. Headers, footers, blank rows and totals lines all fail the numeric test and drop. 

Credit issue:

The sign logic belongs on the Amount dimension, again use a Complex Expression like this to read the credit amount from args.Line:

Dim debit As String = Mid(args.Line, 45, 15).Trim()
Dim credit As String = Mid(args.Line, 60, 15).Trim()
Dim d As Decimal
If Decimal.TryParse(credit, d) AndAlso d <> 0 Then
Return (-d).ToString()
End If
Return debit

If the file uses a CR indicator instead of a separate column, test that position rather than the credit column.

2 replies

OneStream Employee
Oct 9, 2026 8:00 PM UTC

Can you include a sample of your source file format to show how the amount is being written in the file.

RobbSalzmann
Employee - Advisor
Employee - Advisor
Oct 9, 2026 9:54 PM UTC

Some ideas for this:
 

The built-in Bypass dimension takes one value per entry (Contains at Position or Contains Within Line), so headers, footers and blanks would each need their own.

Use a Complex Expression. args.Line returns the whole record, so the expression can work on the whole record at once. The test that catches every non-transaction row at once is “does the amount position hold a number”:

Dim amt As String = Mid(args.Line, 45, 15).Trim()   ' Start position and length of the Amount field
Dim d As Decimal
If Decimal.TryParse(amt, d) Then
Return "KEEP"
Else
Return "SKIP"
End If

Put that on the Bypass dimension and set its Bypass Value to SKIP with Contains at Position. Headers, footers, blank rows and totals lines all fail the numeric test and drop. 

Credit issue:

The sign logic belongs on the Amount dimension, again use a Complex Expression like this to read the credit amount from args.Line:

Dim debit As String = Mid(args.Line, 45, 15).Trim()
Dim credit As String = Mid(args.Line, 60, 15).Trim()
Dim d As Decimal
If Decimal.TryParse(credit, d) AndAlso d <> 0 Then
Return (-d).ToString()
End If
Return debit

If the file uses a CR indicator instead of a separate column, test that position rather than the credit column.