The Difference Between Assignment of Receivables & Factoring of Receivables

  • Small Business
  • Money & Debt
  • Business Bank Accounts
  • ')" data-event="social share" data-info="Pinterest" aria-label="Share on Pinterest">
  • ')" data-event="social share" data-info="Reddit" aria-label="Share on Reddit">
  • ')" data-event="social share" data-info="Flipboard" aria-label="Share on Flipboard">

How to Decrease Bad Debt Expenses to Increase Income

What does "paid on account" in accounting mean, what is a financing receivable.

  • What Do Liquidity Ratios Measure?
  • What Are Some Examples of Installment & Revolving Accounts?

You can raise cash fast by assigning your business accounts receivables or factoring your receivables. Assigning and factoring accounts receivables are popular because they provide off-balance sheet financing. The transaction normally does not appear in your financial statements and your customers may never know their accounts were assigned or factored. However, the differences between assigning and factoring receivables can impact your future cash flows and profits.

How Receivables Assignment Works

Assigning your accounts receivables means that you use them as collateral for a secured loan. The financial institution, such as a bank or loan company, analyzes the accounts receivable aging report. For each invoice that qualifies, you will likely receive 70 to 90 percent of the outstanding balance in cash, according to All Business . Depending on the lender, you may have to assign all your receivables or specific receivables to secure the loan. Once you have repaid the loan, you can use the accounts as collateral for a new loan.

Assignment Strengths and Weaknesses

Using your receivables as collateral lets you retain ownership of the accounts as long as you make your payments on time, says Accounting Coach. Since the lender deals directly with you, your customers never know that you have borrowed against their outstanding accounts. However, lenders charge high fees and interest on an assignment of accounts receivable loan. A loan made with recourse means that you still are responsible for repaying the loan if your customer defaults on their payments. You will lose ownership of your accounts if you do not repay the loan per the agreement terms.

How Factoring Receivables Works

When you factor your accounts receivable, you sell them to a financial institution or a company that specializes in purchasing accounts receivables. The factor analyzes your accounts receivable aging report to see which accounts meet their purchase criteria. Some factors will not purchase receivables that are delinquent 45 days or longer. Factors pay anywhere from 65 percent to 90 percent of an invoice’s value. Once you factor an account, the factor takes ownership of the invoices.

Factoring Strengths and Weaknesses

Factoring your accounts receivables gives you instant cash and puts the burden of collecting payment from slow or non-paying customers on the factor. If you sell the accounts without recourse, the factor cannot look to you for payment should your former customers default on the payments. On the other hand, factoring your receivables could result in your losing customers if they assume you sold their accounts because of financial problems. In addition, factoring receivables is expensive. Factors charge high fees and may retain recourse rights while paying you a fraction of your receivables' full value.

  • All Business: The Difference Between Factoring and Accounts Receivable Financing

Related Articles

The advantages of selling accounts receivable, buying accounts receivable, difference between payables and receivables in accounting, the role of factoring in modern business finance, the prevention of dilution of ownership, how to remove an empty mailbox in outlook, the importance of factoring in business, how to factor inventory, setting up webmail on mail for the imac, most popular.

  • 1 The Advantages of Selling Accounts Receivable
  • 2 Buying Accounts Receivable
  • 3 Difference Between Payables and Receivables in Accounting
  • 4 The Role of Factoring in Modern Business Finance

Double Entry Bookkeeping

learn bookkeeping online for free

Home > Accounts Receivable > Assignment of Accounts Receivable Journal Entries

assignment of accounts receivable journal entries

Assignment of Accounts Receivable Journal Entries

The assignment of accounts receivable journal entries below act as a quick reference, and set out the most commonly encountered situations when dealing with the double entry posting of accounts receivable assignment.

The assignment of accounts receivable journal entries are based on the following information:

  • Accounts receivable 50,000 on 45 days terms
  • Assignment fee of 1% (500)
  • Initial advance of 80% (40,000)
  • Cash received from customers 6,000
  • Interest on advances at 9%, outstanding on average for 40 days (40,000 x 9% x 40 / 365 = 395)

About the Author

Chartered accountant Michael Brown is the founder and CEO of Double Entry Bookkeeping. He has worked as an accountant and consultant for more than 25 years and has built financial models for all types of industries. He has been the CFO or controller of both small and medium sized companies and has run small businesses of his own. He has been a manager and an auditor with Deloitte, a big 4 accountancy firm, and holds a degree from Loughborough University.

You May Also Like

what is an assignment account

What is the Assignment of Accounts Receivable?

Assignment of Accounts Receivable

Share This...

Assignment of accounts receivable.

Assignment of accounts receivable is a financing arrangement in which a company uses its accounts receivable as collateral to obtain a loan or financing from a financial institution or a lender. In this arrangement, the company “assigns” or transfers the rights to collect payments from the outstanding accounts receivable to the lender.

The lender then provides the company with a percentage of the assigned accounts receivable value as a loan, while retaining a portion as collateral or to cover potential defaults. The company is still responsible for collecting payments from its customers. When the customers make payments, the company forwards the collected amount to the lender, who applies the payment to the outstanding loan balance.

The assignment of accounts receivable is a common financing option for businesses with cash flow constraints or those that need immediate funding for working capital requirements or other short-term financial needs.

Example of the Assignment of Accounts Receivable

Let’s consider a fictional company, ABC Corp., that manufactures and sells electronics. ABC Corp. has $200,000 worth of outstanding accounts receivable, but it needs immediate cash to purchase raw materials and pay its employees.

ABC Corp. approaches XYZ Bank to obtain financing using its accounts receivable as collateral. XYZ Bank agrees to provide a loan of 85% of the total accounts receivable value, which amounts to $170,000 (85% of $200,000).

In this arrangement, ABC Corp. assigns the accounts receivable to XYZ Bank, and XYZ Bank provides the company with $170,000 in financing. ABC Corp. remains responsible for collecting payments from its customers.

As customers of ABC Corp. pay their invoices, the company forwards the collected payments to XYZ Bank. XYZ Bank then applies these payments to reduce the outstanding loan balance. Once all the outstanding invoices are collected and the loan balance is paid off, the assignment of accounts receivable is considered complete.

This arrangement allows ABC Corp. to obtain the immediate cash it needs to continue its business operations, while XYZ Bank takes on the risk associated with the accounts receivable collection process.

Other Posts You'll Like...

Tax Savings Using FSAs and HSAs

TCP CPA Practice Questions Explained: Tax Savings Using FSAs and HSAs

The Timing of Income and Expenses for Tax Planning

TCP CPA Practice Questions Explained: The Timing of Income and Expenses for Tax Planning

How Thomas Passed His CPA Exams Using SuperfastCPA

When More Study Time Isn’t the Answer: How Thomas Passed His CPA Exams

Calculating The Kiddie Tax

TCP CPA Practice Questions Explained: Calculating The Kiddie Tax

Calculating The Foreign-Earned Income Exclusion

TCP CPA Practice Questions Explained: Calculating The Foreign-Earned Income Exclusion

Calculating Imputed Interest

TCP CPA Practice Questions Explained: Calculating Imputed Interest

Helpful links.

  • Learn to Study "Strategically"
  • How to Pass a Failed CPA Exam
  • Samples of SFCPA Study Tools
  • SuperfastCPA Podcast

How Ekta Passed Her CPA 6 Months Faster Than She Planned

How Ekta Passed Her CPA 6 Months Faster Than She Planned

2024 CPA Exams F.A.Q.s Answered

2024 CPA Exams F.A.Q.s Answered

how Jackie passed her cpa exams using superfastcpa

How Jackie Got Re-Motivated by Simplifying Her CPA Study

how kevin passed his cpa exams using superfastcpa

The Study Tweaks That Turned Kevin’s CPA Journey Around

Helicopter Pilot to CPA: How Chase Passed His CPA Exams

Helicopter Pilot to CPA: How Chase Passed His CPA Exams

Want to pass as fast as possible, ( and avoid failing sections ), watch one of our free "study hacks" trainings for a free walkthrough of the superfastcpa study methods that have helped so many candidates pass their sections faster and avoid failing scores....

what is an assignment account

Make Your Study Process Easier and more effective with SuperfastCPA

Take Your CPA Exams with Confidence

  • Free "Study Hacks" Training
  • SuperfastCPA PRO Course
  • SuperfastCPA Review Notes
  • SuperfastCPA Audio Notes
  • SuperfastCPA Quizzes

Get Started

  • Free "Study Hacks Training"
  • Read Reviews of SuperfastCPA
  • Busy Candidate's Guide to Passing
  • Subscribe to the Podcast
  • Purchase Now
  • Nate's Story
  • Interviews with SFCPA Customers
  • Our Study Methods
  • SuperfastCPA Reviews
  • CPA Score Release Dates
  • The "Best" CPA Review Course
  • Do You Really Need the CPA License?
  • 7 Habits of Successful Candidates
  • "Deep Work" & CPA Study

Understanding an assignment and assumption agreement

Need to assign your rights and duties under a contract? Learn more about the basics of an assignment and assumption agreement.

Get your assignment of agreement

what is an assignment account

by   Belle Wong, J.D.

Belle Wong, is a freelance writer specializing in small business, personal finance, banking, and tech/SAAS. She ...

Read more...

Updated on: November 24, 2023 · 3 min read

The assignment and assumption agreement

The basics of assignment and assumption, filling in the assignment and assumption agreement.

While every business should try its best to meet its contractual obligations, changes in circumstance can happen that could necessitate transferring your rights and duties under a contract to another party who would be better able to meet those obligations.

Person presenting documents to another person who is signing them

If you find yourself in such a situation, and your contract provides for the possibility of assignment, an assignment and assumption agreement can be a good option for preserving your relationship with the party you initially contracted with, while at the same time enabling you to pass on your contractual rights and duties to a third party.

An assignment and assumption agreement is used after a contract is signed, in order to transfer one of the contracting party's rights and obligations to a third party who was not originally a party to the contract. The party making the assignment is called the assignor, while the third party accepting the assignment is known as the assignee.

In order for an assignment and assumption agreement to be valid, the following criteria need to be met:

  • The initial contract must provide for the possibility of assignment by one of the initial contracting parties.
  • The assignor must agree to assign their rights and duties under the contract to the assignee.
  • The assignee must agree to accept, or "assume," those contractual rights and duties.
  • The other party to the initial contract must consent to the transfer of rights and obligations to the assignee.

A standard assignment and assumption contract is often a good starting point if you need to enter into an assignment and assumption agreement. However, for more complex situations, such as an assignment and amendment agreement in which several of the initial contract terms will be modified, or where only some, but not all, rights and duties will be assigned, it's a good idea to retain the services of an attorney who can help you draft an agreement that will meet all your needs.

When you're ready to enter into an assignment and assumption agreement, it's a good idea to have a firm grasp of the basics of assignment:

  • First, carefully read and understand the assignment and assumption provision in the initial contract. Contracts vary widely in their language on this topic, and each contract will have specific criteria that must be met in order for a valid assignment of rights to take place.
  • All parties to the agreement should carefully review the document to make sure they each know what they're agreeing to, and to help ensure that all important terms and conditions have been addressed in the agreement.
  • Until the agreement is signed by all the parties involved, the assignor will still be obligated for all responsibilities stated in the initial contract. If you are the assignor, you need to ensure that you continue with business as usual until the assignment and assumption agreement has been properly executed.

Unless you're dealing with a complex assignment situation, working with a template often is a good way to begin drafting an assignment and assumption agreement that will meet your needs. Generally speaking, your agreement should include the following information:

  • Identification of the existing agreement, including details such as the date it was signed and the parties involved, and the parties' rights to assign under this initial agreement
  • The effective date of the assignment and assumption agreement
  • Identification of the party making the assignment (the assignor), and a statement of their desire to assign their rights under the initial contract
  • Identification of the third party accepting the assignment (the assignee), and a statement of their acceptance of the assignment
  • Identification of the other initial party to the contract, and a statement of their consent to the assignment and assumption agreement
  • A section stating that the initial contract is continued; meaning, that, other than the change to the parties involved, all terms and conditions in the original contract stay the same

In addition to these sections that are specific to an assignment and assumption agreement, your contract should also include standard contract language, such as clauses about indemnification, future amendments, and governing law.

Sometimes circumstances change, and as a business owner you may find yourself needing to assign your rights and duties under a contract to another party. A properly drafted assignment and assumption agreement can help you make the transfer smoothly while, at the same time, preserving the cordiality of your initial business relationship under the original contract.

You may also like

what is an assignment account

What does 'inc.' mean in a company name?

'Inc.' in a company name means the business is incorporated, but what does that entail, exactly? Here's everything you need to know about incorporating your business.

October 9, 2023 · 10min read

what is an assignment account

How to write a will: A comprehensive guide to will writing

Writing a will is one of the most important things you can do for yourself and for your loved ones, and it can be done in just minutes. Are you ready to get started?

May 17, 2024 · 11min read

what is an assignment account

How to Start an LLC in 7 Easy Steps (2024 Guide)

2024 is one of the best years ever to start an LLC, and you can create yours in only a few steps.

May 16, 2024 · 22min read

  • Search Search Please fill out this field.
  • Corporate Finance
  • Corporate Debt

Debt Assignment: How They Work, Considerations and Benefits

Daniel Liberto is a journalist with over 10 years of experience working with publications such as the Financial Times, The Independent, and Investors Chronicle.

what is an assignment account

Charlene Rhinehart is a CPA , CFE, chair of an Illinois CPA Society committee, and has a degree in accounting and finance from DePaul University.

what is an assignment account

Katrina Ávila Munichiello is an experienced editor, writer, fact-checker, and proofreader with more than fourteen years of experience working with print and online publications.

what is an assignment account

Investopedia / Ryan Oakley

What Is Debt Assignment?

The term debt assignment refers to a transfer of debt , and all the associated rights and obligations, from a creditor to a third party. The assignment is a legal transfer to the other party, who then becomes the owner of the debt. In most cases, a debt assignment is issued to a debt collector who then assumes responsibility to collect the debt.

Key Takeaways

  • Debt assignment is a transfer of debt, and all the associated rights and obligations, from a creditor to a third party (often a debt collector).
  • The company assigning the debt may do so to improve its liquidity and/or to reduce its risk exposure.
  • The debtor must be notified when a debt is assigned so they know who to make payments to and where to send them.
  • Third-party debt collectors are subject to the Fair Debt Collection Practices Act (FDCPA), a federal law overseen by the Federal Trade Commission (FTC).

How Debt Assignments Work

When a creditor lends an individual or business money, it does so with the confidence that the capital it lends out—as well as the interest payments charged for the privilege—is repaid in a timely fashion. The lender , or the extender of credit , will wait to recoup all the money owed according to the conditions and timeframe laid out in the contract.

In certain circumstances, the lender may decide it no longer wants to be responsible for servicing the loan and opt to sell the debt to a third party instead. Should that happen, a Notice of Assignment (NOA) is sent out to the debtor , the recipient of the loan, informing them that somebody else is now responsible for collecting any outstanding amount. This is referred to as a debt assignment.

The debtor must be notified when a debt is assigned to a third party so that they know who to make payments to and where to send them. If the debtor sends payments to the old creditor after the debt has been assigned, it is likely that the payments will not be accepted. This could cause the debtor to unintentionally default.

When a debtor receives such a notice, it's also generally a good idea for them to verify that the new creditor has recorded the correct total balance and monthly payment for the debt owed. In some cases, the new owner of the debt might even want to propose changes to the original terms of the loan. Should this path be pursued, the creditor is obligated to immediately notify the debtor and give them adequate time to respond.

The debtor still maintains the same legal rights and protections held with the original creditor after a debt assignment.

Special Considerations

Third-party debt collectors are subject to the Fair Debt Collection Practices Act (FDCPA). The FDCPA, a federal law overseen by the Federal Trade Commission (FTC), restricts the means and methods by which third-party debt collectors can contact debtors, the time of day they can make contact, and the number of times they are allowed to call debtors.

If the FDCPA is violated, a debtor may be able to file suit against the debt collection company and the individual debt collector for damages and attorney fees within one year. The terms of the FDCPA are available for review on the FTC's website .

Benefits of Debt Assignment

There are several reasons why a creditor may decide to assign its debt to someone else. This option is often exercised to improve liquidity  and/or to reduce risk exposure. A lender may be urgently in need of a quick injection of capital. Alternatively, it might have accumulated lots of high-risk loans and be wary that many of them could default . In cases like these, creditors may be willing to get rid of them swiftly for pennies on the dollar if it means improving their financial outlook and appeasing worried investors. At other times, the creditor may decide the debt is too old to waste its resources on collections, or selling or assigning it to a third party to pick up the collection activity. In these instances, a company would not assign their debt to a third party.

Criticism of Debt Assignment

The process of assigning debt has drawn a fair bit of criticism, especially over the past few decades. Debt buyers have been accused of engaging in all kinds of unethical practices to get paid, including issuing threats and regularly harassing debtors. In some cases, they have also been charged with chasing up debts that have already been settled.

Federal Trade Commission. " Fair Debt Collection Practices Act ." Accessed June 29, 2021.

Federal Trade Commission. " Debt Collection FAQs ." Accessed June 29, 2021.

what is an assignment account

  • Terms of Service
  • Editorial Policy
  • Privacy Policy
  • Your Privacy Choices

ERProof - Blog about All Things SAP

Blog about all things SAP

ERProof » SAP CO » SAP CO Training » SAP CO Account Assignment

SAP CO Account Assignment

SAP CO Account Assignment

Normally, when a financial document is entered in SAP FI module , user has the option of entering the cost center in the financial document. However, when documents are entered from different modules or a cross-module financial transaction occurs, such as from MM or SD , there is no option of entering the cost center in the document. In this situation, the SAP system will derive the cost center through automatic SAP CO account assignment, substitutions, or through default settings made in the primary cost element.

Automatic SAP CO Account Assignment

The automatic account assignment has to be configured in the transaction code OKB9 . For posting made in external accounting, such as for price differences, exchange rate differences, etc., the SAP system automatically checks entries in the OKB9 settings and derives the cost center.

If you do not enter a CO object (order, cost center, or project) in external accounting postings made in FI, MM or SD modules and the posting is cost relevant, then the automatic account assignment checks the relevant cost center and makes the posting.

Here are examples of automatic account assignments:

  • Banking fees, exchange rate differences and discounts in FI
  • Minor differences and price differences in MM

The account assignment objects that can be maintained in the transaction OKB9 are:

  • Cost center
  • Profit center (profitability segment)

Normally, the automatic account assignment runs on the company code level along with the CO object. However, if the user wants to make the posting on the business area level, valuation area level or profit center level, it is also available in OKB9 settings. So basically it includes the following levels:

  • Company code level
  • Business area level
  • Valuation area level
  • Profit center level

The above 3 excluding the company code level are used in cases when the account assignment is needed below the company code level.

Prerequisites

Here are the prerequisites of activating automatic SAP CO account assignment:

  • Activation of the cost center accounting
  • Creation of cost centers
  • Maintenance of cost elements

Additionally, you can also create orders and profit centers as per the business requirements.

Settings in Transaction OKB9

Let’s discuss settings that are possible for automatic SAP CO account assignment in OKB9 transaction.

Start SPRO transaction and navigate to the following path:

Controlling – Cost Center Accounting – Actual Postings – Manual Actual Postings – Edit Automatic Account Assignment (OKB9)

Alternatively, you can start OKB9 transaction directly from the command bar.

Transaction OKB9 – SAP CO Account Assignment

  • If you want to have the setting on the company code level only, then enter the company code and the cost element along with the corresponding CO object, i.e. a cost center, an order or a profit center.
  • If you want to have the settings on the valuation area level, then enter the company code and the cost element and chose the ‘valuation area’ option in the account assignment detail as ‘1’.
  • Similarly, if you want to have the settings on the business area or profit center level, then choose the option ‘2’ or ‘3’ respectively.

If you have chosen account assignment detail ‘1’ or ‘2’, then click on ‘Detail per business area/valuation area’ on the left sidebar.

Transaction OKB9 – Details per Business Area / Valuation Area

Default SAP CO Account Assignment

In order to determine the correct CO account assignment, the SAP system performs several checks in the following sequence. First it checks the document which a user is posting. If the cost center is empty in the document, then the system checks if any substitutions are maintained for the particular G/L account . Next, if the substitution is also missing, then the system moves on to the OKB9 settings for automatic SAP CO account assignments. Finally, if these settings are also missing, the SAP system checks master data of the primary cost element (G/L Account) under the tab of Default Account Assignment . You can display this master data using the transaction KA03 .

You can maintain the cost center and the order in the master data of the primary cost element.

SAP Cost Element Master Data

So, basically the order of checks the system makes is:

  • Financial document – Cost center
  • Substitutions – transaction OKC9
  • Automatic account assignments – transaction OKB9
  • Default account assignments – transaction KA03 / KA02

Lastly, if any of the above is not maintained, then the SAP system throws an error ‘Account X requires an assignment to a CO Object’ and doesn’t allow posting of a document.

SAP CO Account Assignment using Substitution

In cases where you don’t need OKB9 or default account assignment, the user can go for user exits where a specific G/L account is mentioned under the company and the value in the cost center is substituted by the cost center given in the substitution.

The transaction for maintaining the substitution is GGB1 .

SAP Create Substitution Transaction

Usage of substitutions for SAP CO account assignment is justified by the business requirement and usually SAP CO account assignment requirements are fulfilled by OKB9 or default account assignments.

Did you like this tutorial? Have any questions or comments? We would love to hear your feedback in the comments section below. It’d be a big help for us, and hopefully it’s something we can address for you in improvement of our free SAP CO tutorials.

Navigation Links

Go to next lesson:  SAP Adjustment Postings

Go to previous lesson:  SAP Profit Center

Go to overview of the course: Free SAP CO Training

4 thoughts on “SAP CO Account Assignment”

it is helpful material i ask for more clear details for using substitution method for Account Assignment. thanks in advance

Sir, I am not receiving the training mails from yesterday 7/1/2019. I have completed my training till here(SAP CO Account Assignment) please do send the rest of the training emails for SAP CO. Hope you will do the needful.

I am getting the same error “Account 500911 requires an assignment to a CO object”. In OKB9, we have given company code, Cost element and ticked the check box ‘Indicator: Find profitability segment using substitution’ (V_TKA3A-BSSUBST) and not filled anything like cost center, order and profit center. in OKC9 we have created substitution. All the process happening through Idoc Message Type SINGLESETTRQS_CREATE and inside BAPI BAPI_SINGLESETTREQS_CREATEMULT triggering and raising this error. Cost center is not maintained in 1. Financial document – Cost center 2. Automatic account assignments – transaction OKB9 and 3. Default account assignments – transaction KA03/KA02 But we have substitution in transaction OKC9 to determine cost centre.

Where woulbe be the issue?

good explanation

Leave a Reply Cancel reply

Do you have a question and want it to be answered ASAP? Post it on our FORUM here --> SAP FORUM !

Your email address will not be published. Required fields are marked *

Save my name, email, and website in this browser for the next time I comment.

Online Tutorials & Training Materials | STechies.com

  • What is SAP FICO?
  • SAP FICO Training Tutorials for Beginners
  • SAP FICO Define Account Group
  • SAP FICO Reverse Clearing Document
  • Foreign Currency Valuation Configuration
  • SAP FICO User Exit for Vendor Master
  • FICO Vendor Account Group Table
  • SAP FICO Withholding Tax
  • SAP FICO Dunning Area
  • SAP FICO Cash Management Group
  • Assessment Cycle vs Profit Center
  • SAP FICO Asset Accounting
  • SAP FICO Posting Key for Bank
  • SAP FICO Document Type
  • SAP FICO Document Number Ranges
  • SAP FICO Parked Workflow Configuration
  • SAP FICO Classic GL vs New GL
  • SAP FICO GL Account for Cash Journal
  • SAP FICO Accounts Receivable Process Cycle
  • SAP FICO Accounts Receivable Configuration
  • GR/IR Accounting Entries and Journal Entries
  • SAP FICO Chart of Accounts
  • SAP FICO Transaction Codes
  • SAP AS11 Create Asset Sub-Number
  • SAP Business Area and Profit Center
  • SAP Inconsistent Withholding Tax Info
  • SAP Active vs Passive Document Splitting
  • Reverse MIRO Document in SAP
  • SAP FICO Scope and Opportunity
  • FICO Certification Cost in India
  • SAP FICO Interview Questions
  • SAP FICO Tree Menu

What is Account assignment in SAP FICO ?

Updated Apr 01, 2023

Account assignment is a critical aspect of financial accounting and management in any organization. It refers to the process of allocating financial transactions to specific cost or profit centers, projects, or business processes. By properly assigning financial transactions to the appropriate account, organizations can accurately track their expenses, revenues, and profitability. This information can then be used to make informed decisions about resource allocation, cost control, and overall financial management. 

In SAP FICO, account assignment is a core module that offers various types of account assignment options, including cost center accounting, profit-center accounting, internal order accounting, and WBS element accounting. These options provide organizations with greater visibility into their financial performance, enabling them to optimize their operations and drive greater value for their stakeholders.

Types of  Account Assignment 

There are several types of account assignments in SAP FICO, including:

  • Cost center accounting 
  • Profit center accounting
  • Internal order accounting
  • WBS element accounting

i) Cost center accounting 

Cost center accounting is the process of tracking and analyzing costs associated with each department, function, or unit of an organization. SAP FICO provides a module that allows organizations to create and manage cost centers, allocate expenses, and generate reports to track performance.

By tracking expenses at a granular level, organizations can make informed decisions about resource allocation, identify areas of inefficiency, and make changes to improve overall performance, reducing costs and increasing efficiency.

ii) Profit center accounting

Profit center accounting is a process that allows organizations to track revenues and expenses at a granular level, providing insights into the profitability of individual business units, product lines, or geographic regions. By allocating revenues and expenses to specific profit centers, organizations can generate reports that help identify areas of high profitability or inefficiency.

SAP FICO provides a comprehensive profit center accounting module that enables organizations to create and manage profit centers, allocate revenues and expenses, and generate reports to analyze profitability. This information can be used to make informed decisions about product lines, investments, and resource allocation, enabling organizations to optimize their profitability and drive growth.

iii) Internal order accounting 

Internal order accounting is a process that allows organizations to track and control expenses associated with a specific project, event, or business process. By assigning costs to a specific internal order, organizations can monitor actual expenses versus budgeted expenses, and ensure that resources are allocated efficiently.

iv) WBS element accounting

WBS (Work Breakdown Structure) element accounting is a process that allows organizations to track and control expenses associated with a specific project or work breakdown structure. It involves breaking down large projects into smaller, manageable tasks or work packages, each of which is assigned a WBS element.

Expenses are then allocated to each WBS element to track actual versus planned expenses and ensure that resources are allocated efficiently.

Advantages of  Account Assignment 

The advantages of account assignment in SAP FICO include:

Better visibility: Account assignment allows organizations to track expenses and revenues at a granular level, providing better visibility into financial performance.

Resource allocation: By tracking expenses and revenues, organizations can make informed decisions about resource allocation, ensuring that resources are allocated efficiently.

Cost control: By identifying areas of inefficiency or waste, organizations can make changes to control costs and improve profitability.

Accurate reporting: Account assignment provides accurate reporting and analytics, enabling organizations to make informed decisions about their financial performance.

Compliance: Account assignment helps organizations comply with regulatory requirements and accounting standards.

How to Define Account Assignment?

Please follow the steps below to define the account assignment:

Execute t-code OKB9 in the SAP command field as shown in the image below.

OKb9

On Change View "Default account assignment": Overview you will see the list of default account assignments.

List

Next, click the  New Entries button to create a new account assignment.

New Enteries

In the next window, enter the following fields:

  • Cost Ctr 

Details

Now click on the Save button to save the new account assignment.

save

Now in order to post a test document to check that the account assignment works, execute t-code FB50 in the SAP command field.

Test

On the next popup enter Company Code as shown below.

Ccode

Now on the next window, click Tree On button.

Test

Next, select the Screen Variant in the next window and click Tree Off button.

Tree off

In the next window, enter the following fields according to your requirements:

Details

To make the document assignment, click the Post button.

Post

The account assignment is now defined and can be used for tracking expenses and revenues at a granular level in SAP FICO.

  • 04 Dec 2013 7:51 am rekha Account assignment is used in Sap Fico if you frequently use the same broad account assignments, such as a distribution of amounts to several company codes, accounts, or cost centers, you can use the account assignment model method to save input time and avoid input errors. The use of account assignment models is limited to G/L account items. T-code OK17 is used in the account assignment. If you have CO-FI real-time integration active you need this account assignment.

Due: Sat May 25 11:59 pm Late submissions accepted until Sun May 26 11:59 pm

Assignment by Michael Chang & Julie Zelenski idea originated by Randal Bryant & David O'Hallaron (CMU). Modifications by Nick Troccoli, Brynne Hurst, Kathleen Creel and Jonathan Kula.

Learning Goals

This assignment focuses on understanding assembly code representations of programs. You will be building your skills with:

  • reading and tracing assembly code
  • understanding how data access, control structures, and function calls translate between C and assembly
  • reverse-engineering
  • understanding the challenges of writing secure and robust systems
  • understanding privacy, trust, and the role of the ethical penetration tester
  • mastering the gdb debugger!

You have been hired as a security expert for Stanford Bank (a fictional on-campus bank). They need you to investigate reports of infiltration and security issues and replicate the issues so that they can fix them.

There are three parts to this assignment, each of which can be completed independently:

  • an ATM withdrawal program containing some vulnerabilities - you'll need to use your C and assembly skills to find and demonstrate how to exploit these vulnerabilities.
  • A dataset that you will use to deanonymize bank users.
  • The SecureVault program, a new product designed by the bank to provide increased security to the master vault. You'll be given an executable of the SecureVault program (no C code provided!) to show that it is possible to reverse engineer this program and break into the master vault without being told the passwords.

These problems are like C/assembly "puzzles" to solve, and we hope you enjoy solving them and exploring this material as much as we enjoyed creating them!

Note: check out our assignment overview video on Canvas ; it goes over the different parts of the assignment, what to expect, and tips and tricks! Note the overview video is from this quarter last year, but the assignment is the same (save for the fact that questions 2 and 3 are exchanged).

Spring 2024: Lecture 21 (Fri 5/17) is necessary to work on questions 3 and 4 in part 2 of this assignment.

A few reminders:

  • The working on assignments page contains info about the assignment process.
  • The collaboration policy page outlines permitted assignment collaboration, emphasizing that you are to do your own independent thinking, design, writing, and debugging. Even without any code being submitted, you should not be doing any joint debugging/development, sharing or copying written answers, sharing specific details about SecureVault behavior, etc. If you are having trouble completing the assignment on your own, please reach out to the course staff; we are here to help!

To get started on this assignment, clone the starter project using the command

View Full Starter File List

  • vault : Your SecureVault executable program, custom-generated for each student.
  • custom_tests : The file where you will add custom tests to reproduce vulnerabilities in the provided ATM withdrawal program.
  • input.txt : A blank text file where you should add the passwords for each SecureVault level, one per line. See the section on SecureVault for more information.
  • readme.txt : A file where you should add answers to short written questions for all three parts of the assignment.
  • .gdbinit : A gdb configuration file you can optionally use to run certain gdb commands each time gdb launches. See the section on using GDB in SecureVault for more information.
  • samples : A symbolic link to the shared directory for this assignment. It contains:
  • atm : The executable ATM program, which you will explore for vulnerabilities.
  • atm.c : The C source code for the ATM program, which you will explore for vulnerabilities. Note that you're not able to edit or recompile this code/executable.
  • checkins.csv : A file containing public social media location check-in data for various locations on Stanford campus over the past three months.
  • search_checkins : An executable program to search the check-in data.
  • bank : a folder containing the following:
  • customers.db : A file with the list of all users and balances for the ATM program.
  • transactions.csv : A file with ATM transaction information from the past three months at the Stanford campus ATM.
  • SANITY.INI and sanity.py : Files to configure and run sanity check. You can ignore these files.
  • wordlist : A list of dictionary words used for SecureVault.
  • tools : Contains symbolic links to the sanitycheck and submit programs for testing and submitting your work. ( codecheck is not needed on this assignment)

You will be using gdb frequently on this assignment. Here are essential resources as you work - note that you should make sure you have downloaded the CS107 GDB configuration file mentioned in the Getting Started Guide if you didn't previously do so.

Open Getting Started Guide Open GDB Guide Open Lab5 GDB Tips Open Lab6 GDB Tips

1. ATM Security

Stanford Bank recently updated the ATM software to a version with some additional features. The IT team reviewed the new code and thought it all looked good, but having now installed it in production, they are observing some suspicious activity. The bank has called you because your superior C and assembly skills are just what's needed to investigate and resolve these problems!

In the samples folder, they have provided you the code ( atm.c ) and compiled executable ( atm ), which you can examine/run but cannot recompile or edit (since they want to ensure you work with the same executable installed on the ATMs themselves). The ATM program is invoked with an amount and the credentials for a particular account. If the credential is authorized and the account has sufficient funds, the amount is withdrawn and dispersed in cash. Accounts must maintain a minimum balance of $50, and the ATM is supposed to maintain bank security by rejecting unauthorized access. Every time you run the program, it will print out information to the terminal about the transaction that took place, or the error that occurred, if any. For example, if you ask to withdraw $100 from your account balance of $107, it should be denied with an error message because that would bring your current $107 balance below the required minimum of $50. If you try to sneak cash from another account or use a fake name, your credential should get rejected as unauthorized.

Here are a few examples - try it out yourself! Note that $USER automatically acts as your SUNET ID, and every account balance is set to be $107. Also, each time you run the program anew, all balances return to their original starting levels. No money actually changes hands in this ATM, which is a blessing given its security flaws.

Expand ATM Sample Runs

The bank has identified three anomalies in the ATM program behavior that they need your help investigating. For each of the anomalies (a), (b), and (c) below, you will need to do the following:

  • include a test case in your custom_tests file to showcase how to reproduce the vulnerability. Note that there may be more than one way to trigger a vulnerability.
  • A concise description of the underlying defect in the code.
  • An explanation of exactly how you constructed your test case to exploit it.
  • Your recommendation for fixing it. The bank is not looking for a major rewrite/redesign, so in your proposed changes you should directly address the vulnerability with minimal other disruption. Note that there may be more than one possible remedy for fixing each issue. Also make sure you do not remove intended functionality of the bank program, and account for any potential additional security issues introduced by your proposed fix .

NOTE: when running your own custom tests, make sure to inspect the output to ensure your tests are causing the behavior you expect! The sanitycheck tool itself does not verify that the tests cause the specified exploits.

As you work through your investigation, you will need to review the source code for the atm program. The program is roughly 175 lines of C code of similar complexity to what you have been writing this quarter, and is decomposed and fairly readable, though sorely lacking in comments. You should find that the program's approach seems reasonable and the code is sincere in its attempt to operate correctly. As you're reading, take a minute to reflect on how far your awesome C skills have come to let you read through this provided program!

NOTE: when running the ATM program under GDB, make sure you are in the samples folder first before running gdb atm .

a) Negative Balances

A prior version of the ATM program restricted a withdrawal to be at most the full account balance, allowing the customer to drain their account to $0, but no further. The current version has changed the withdraw function to require a non-zero minimum balance. The expected behavior should be that all account balances stay above this minimum. However, the bank saw an (otherwise ordinary) withdrawal transaction that not only caused an account to go below the minimum, but also overdrew so far as to end up with a negative balance. Oops, that's definitely not supposed to happen! Review the C code for the withdraw function, specifically the changes from the old version. It seems to work in many cases, but apparently not all. Read carefully through this function to try and discover the flaw - your understanding of signed and unsigned integers will be useful here! Once you have found the vulnerability, determine a command to make a withdrawal as yourself that withdraws more money than is present in your account . Put this command in custom_tests , and answer the specified readme questions.

b) Unauthorized Account Access

The bank has also received a customer complaint about an unauthorized withdrawal from their account. It seems that another user with different credentials was able to successfully withdraw money from the aggrieved customer's account. Moreover, the credential used appears to be entirely fake - no such user exists in the database! A user should not be able to access a different customer's account and especially not by supplying a bogus credential! Review the C code for the find_account function that is responsible for matching the provided username to their account number. It seems to work properly when the username matches an existing account, but not when the username doesn't match an existing account. Trace through line by line how the function executes when called with an invalid username that is not in the database. What lines are executed? Once you do this, you'll find that the function appears to behave unpredictably. Your next task is to examine the generated assembly to determine precisely how the function will behave - your understanding of the %rax / %eax register will be useful here! Once you have found the vulnerability, determine a command with a designed bogus name credential to withdraw $40 from one of the CS107 staff member's accounts. Put this command in custom_tests , and answer the specified readme questions. (The samples/bank/customers.db file contains information about all valid users and their balances, and the first 15 users in the database are staff accounts.)

c) Accessing The Master Vault

The most worrisome issue is repeated illicit withdrawals from the master vault account, account number 0. The name on the master account is not an actual user, so this account cannot be accessed using the simple username-based credential. Instead, the user must specify two account arguments, the account's number and its secret passcode, as a form of heightened security, like this:

At first the bank thought the vault passcode had been leaked, but changing the passcode did nothing to thwart the attack. In a fit of desperation, the bank removed the vault passcode file altogether, figuring this would disable all access to the vault, yet the rogue user continues to make withdrawals from it! It seems that the high-security passcode authentication may have its own security flaw! The code that handles this authentication is in the lookup_by_number and read_secret_passcode functions. These functions work correctly in many situations, but fail in certain edge cases. Remember that it seems that in certain cases supplied credentials are accepted despite the lack of a saved passcode file . The vulnerability is subtle in the C code, so you should also use GDB to examine the code at the assembly level and diagram out the memory on the stack for these functions . This problem is similar to the stack diagramming/exploit problem from lab6 - revisit that problem if you need a refresher! Your exploit should not involve reading from any file. Once you have found the vulnerability, determine a command to withdraw $300 from the bank vault despite its disabled passcode . Put this command in custom_tests , and answer the specified readme questions.

2. Dataset Aggregation

Separate from the faulty ATM software, Stanford Bank believes that someone was able to gain access to their account logs and get a list of ATM transaction information for their Stanford campus ATM. The company believes that this poses little threat because the transaction logs have limited recorded data. However, you are concerned that this data can be combined with other available data in dangerous ways, such as to learn private information. For instance, knowing someone's history of large (or small) transactions might tell you about their financial situation; knowing memberships in clubs or organizations might tell you about social relationships and webs of networks. Your task is to combine this data with another dataset you have found of public location check-ins to show the harms of a potential data breach. To aid in investigating your concerns, the bank has made the ATM transaction data available to you in the samples/bank/transactions.csv file. This file has one account transaction per line, and each transaction occurred at the Stanford campus ATM. Each line has the following format:

For example, here is one line from the file that represents a withdrawal of $15 on 2/15/21 at 4:54PM:

Transactions with the same account identifier are guaranteed to be for the same bank account, but the identifier doesn't give any information about whose account it is (intentionally done by the bank to obfuscate the data).

You have already downloaded a publicly-available location checkins dataset from an online social network, in the file samples/checkins.csv . It is too large to read through manually, so you also already created a program search_checkins that displays that checkin data and lets you search through it more easily. Run the program ( samples/search_checkins ) for instructions on how to use it.

Show the risks of dataset aggregation and express your concerns to the bank managers by answering the following questions in your readme.txt . Note that you are not expected to create any additional programs to parse or otherwise process these datasets with code - the intent is for you to skim the transactions.csv file by hand and use it along with the search_checkins program to answer the following questions.

  • a) The likely user who made multiple large transactions?
  • b) Two (there may be more, but you must identify only two) likely members of the Stanford SecurityStars Club, which has a club meeting on the 15th of each month where people must bring $15 to pay their membership dues? (Assume they are procrastinators in withdrawing the money)
  • How were you able to de-anonymize the transactions data?
  • Beyond encrypting the data, what recommendations would you give to Stanford Bank to further anonymize or obfuscate the account data in the case of accidental data breaches?
  • Use one or more of the four models of privacy discussed in lecture to explain why disclosure of the information that can be aggregated here is (or is not) a violation of privacy.

3. SecureVault

Stanford Bank is rolling out a new tool, SecureVault, to provide increased security at the master vault at each of their branches. Employees must enter four secret passwords into this program to gain access to the master vault. For extra security, the bank creates a different SecureVault program for each branch with different expected passwords; the bank headquarters does not give the source code to any of the branches; and the program triggers an alarm that notifies the central system each time an incorrect password is entered. They are confident that this means only someone who is told the password can get access, and any potential intruders will be detected by the alarm system. They have hired you to test this. Your task is to show that you can reverse engineer the program to gain access to the bank vault without being told the password, and without alerting central security.

Do not start by running SecureVault and entering passwords to "see what will happen" . You will quickly learn that what happens is the alarm goes off and it deducts points :-) When started, SecureVault waits for input and when you enter the wrong password, it will raise the alarm and notify the central system, deducting points. Thoroughly read the SecureVault information below before attempting to enter any passwords! There is a lot of information below, but it is included to help provide useful tips for you to work through this part of the assignment.

Without the original source code, all you know is that SecureVault has four "levels" of security, each with a different password. If the user enters the correct password, it deactivates the level and the program proceeds on. But given the wrong input, SecureVault raises an alarm by printing a message, alerting central security and terminating. To reach the master vault, one needs to successfully disarm each of its levels.

This is where the bank needs your help. Each of you is assigned a different generated SecureVault executable unique to you, generated just as they would be for each bank branch. Your mission is to apply your best assembly detective skills to reverse engineer the SecureVault executable to work out the input required to pass each level and reach the master vault, thus proving the insecurity of the bank's approach.

Specifically, you must fill in your input.txt file with the passwords to defuse each level in order, 1 per line, for each level you have solved. You must also answer the following questions in your readme.txt file. Make sure to verify your input.txt file (with appropriate protections!) to ensure proper formatting and that all lines are entered correctly before submitting! We will test by running ./vault input.txt on your submission, using the original SecureVault program generated for you. Here are the readme questions to work through as you go:

  • What tactics did you use to suppress/avoid/disable alarms?
  • level_1 contains an instruction near the start of the form mov $<multi-digit-hex-value>,%edi . Explain how this instruction fits into the operation of level_1 . What is this hex value and for what purpose is it being moved? Why can this instruction reference %edi instead of the full %rdi register?
  • level_2 contains a jg that is not immediately preceded by a cmp or test instruction. Explain how a branch instruction operates when not immediately preceded by a cmp or test . Under what conditions is this particular jg branch taken?
  • Explain how the loop in the winky function of level_3 is exited.
  • Explain how the mycmp function is used in level_4 . What type of data is being compared and what ordering does it apply?
  • How would you describe Stanford Bank’s trust model? (In other words: who among the bank headquarters, the bank branches, and you was trusted?) Justify your answer.

SecureVault Information

From the SecureVault assembly, you will work backwards to construct a picture of the original C source in a process known as reverse-engineering . Note that you don't necessarily need to recreate the entire C source; your goal is to work out a correct input to pass the level. This requires a fairly complete exploration of the code path you follow to deactivate the level, but any code outside that path can be investigated on a need-to-know basis. Once you understand what makes your SecureVault program "tick", you can supply each level with the password it requires to disarm it. The levels get progressively more complex, but the expertise you gain as you move up from each level increases as well. One confounding factor is that SecureVault raises an alarm whenever it is given invalid input. Each time the alarm goes off (except for a free pass the first time), it notifies central security (the CS107 staff) and points are deducted from your score. Thus, there are consequences to setting off the alarm -- you must be careful!

The bank has confirmed to you a few things about how the SecureVault programs operate:

  • If you start SecureVault with no command-line argument, it reads input typed at the console.

If you give an argument to SecureVault, such as input.txt :

SecureVault will read all lines from that file and then switch over to reading from the console. This feature allows you to store inputs for solved levels in input.txt and avoid retyping them each time.

Alarms can be triggered when executing at the shell or within gdb. However, gdb offers you tools you can use to intercept the alarms, so your safest choice is to work under gdb and employ preventive measures.

  • It is not possible to know for sure whether the central system (course staff) is notified about an alarm. You must use your investigative skills and best defensive measures!
  • The central system will give you a free pass (no point deduction) the first time they are notified about an alarm.
  • The SecureVault program in your repository was lovingly created just for you and is unique to your id. It is said that it can detect if an impostor attempts to run it and won't play along.
  • The SecureVault program is designed for the myth computers (running on the console or logged in remotely). There is a rumor that it will refuse to run anywhere else.
  • It seems as though the function names were left visible in the object code, with no effort to disguise them. Thus, a function name of initialize_vault or read_five_numbers can be a clue. Similarly, it seems to use the standard C library functions, so if you encounter a call to qsort or sscanf , it is the real deal.
  • There is one important restriction: Do not use brute force!   You could write a program to try every possible input to find a solution. But this is trouble because a) you lose points on each incorrect guess which raises an alarm, b) trying all possible inputs will take an eternity and risk saturating the network, and c) part of your submission requires answering questions that show you understanding of the assembly code, which guessing will not provide :)

Using tools such as gdb , objdump and new tools nm and strings is critical to effectively investigating and disarming each level. Once you are familiar with the tools at your disposal, first work to reliably prevent alarms from triggering , then proceed with disarming each of the levels .

Step 1: Familiarity with Tools

Here are some helpful tools to gather general information:

  • nm : use the nm utility ( nm vault ) to print what's called the "symbol table" of the executable, which contains the names of functions and global variables and their addresses. The names may give you a sense of the structure of the SecureVault program.
  • strings : use the strings utility ( strings vault ) to print all the printable strings contained in the executable, including string constants. See if any of these strings seem relevant in determining the passwords.
  • gdb lets you single-step by assembly instruction, examine (and change!) memory and registers, view the runtime stack, disassemble the object code, set breakpoints, and more. Live experimentation on the executing SecureVault program is the most direct way to become familiar in what's happening at the assembly level.
  • Compiler Explorer : pull up tools like the Compiler Explorer interactive website from lab, or gcc on myth , to compile and explore the assembly translation of any code you'd like. For example, if you're unsure how to a particular C construct translates to assembly, how to access a certain kind of data, how break works in assembly, or how a function pointer is invoked by qsort , write a C program with the code in question and trace through its disassembly. Since you yourself wrote the test program, you also don't have to fear it setting off any alarms :-) You can compile directly on myth using a copy of a Makefile from any CS107 assignment/lab as a starting point, and then use gdb or objdump to poke around.

GDB Suggestions

GDB is absolutely invaluable on this assignment. Here are some suggestions on how to maximize your use of gdb in addition to the tips in lab5 and lab6 :

  • Expand your gdb repertoire. The labs have introduced you to handy commands such as break , x , print , info , disassemble , display , watch , and stepi/nexti . Here are some additional commands that you might find similarly useful: jump , kill , and return . Within gdb, you can use help name-of-command to get more details about any gdb command. See the quick gdb reference card for a summary of many other neat gdb features.

Get fancy with your breakpoints. You can breakpoints by function name, source line, or address of a specific instruction. Use commands to specify a list of commands to be automatically executed whenever a given breakpoint is hit. These commands might print a variable, dump the stack, jump to a different instruction, change values in memory, return early from a function, and so on. Breakpoint commands are particularly useful for installing actions you intend to be automatically and infallibly completed when arriving at a certain place in the code. (hint!)

gdb kill workaround : gdb 9.2 (current version on myth as of 04/2021) has a bug when attempting to use kill in the commands sequence for a breakpoint that creates a cascade of problems --can cause gdb itself to crash or hang. The gdb command signal SIGKILL can be used as an alternate means to kill a program from a commands sequence that doesn't trip this bug.

Use a .gdbinit file . The provided file named .gdbinit in the assignment folder can be used to set a startup sequence for gdb. In this text file, you enter a sequence of commands exactly as you would type them to the gdb command prompt. Upon starting, gdb will automatically execute the commands from it. This will be a convenient place to put gdb commands to execute every time you start the debugger. Hint: wouldn't this be useful for creating breakpoints with commands that you want to be sure are always in place when running the SecureVault program? The .gdbinit file we give you in the starter repo has only one command to echo Successfully executing commands from .gdbinit in current directory . If you see this message when you start gdb, it confirms the .gdbinit file has been loaded. If you see an error message about auto-loading .gdbinit being declined when starting gdb, this means you haven't installed the CS107 GDB configuration file - see the top of this page for instructions.

  • Custom gdb commands . Use define to add your own gdb "macros" for often-repeated command sequences. You can add defines to your .gdbinit file so you have access to them in subsequent gdb sessions as well.
  • Fire up tui mode (maybe...). The command layout asm followed by layout reg will give you a split window showing disassembly and register values. This layout will display current values for all registers in the upper pane, the sequence of assembly instructions in the middle pane, and your gdb command line at the bottom. As you single-step with si , the register values will update automatically (those values that changed are highlighted) and the middle pane will follow instruction control flow. This is a super-convenient view of what is happening at the machine level, but sadly, you have to endure a number of quirks and bugs to use it. The tui mode can occasionally crash gdb itself, killing off gdb and possibly the SecureVault program while it's at it. Even when tui is seemingly working, the display has a habit of turning wonky, often fixable by the refresh command (use this early and often!) but not always. A garbled display could cause you to misunderstand the program state, misidentify where your SecureVault is currently executing, or accidentally execute a gdb command you didn't intend. Any alarm suppression mechanism that requires you, the fallible human, to take the right action at a critical time could easily be waylaid by interference, so don't attempt tui before you have invincible automatic protection against alarms. Selective use of auto-display expressions (introduced in lab6) is a great alternative with less disruption. You can exit tui using ctrl-x a and re-enter it again (this doesn't require leaving gdb and losing all your state).

Step 2: General Investigation and Preventing Alarms

Once you are familiar with the tools at your disposal, your next step is to gather general information about how the SecureVault program works to figure out how to reliably prevent alarms from triggering . There are simple manual blocks that give some measure of protection, but it is best to go further to develop an invincible guard. Feel free to use any technique at your disposal, such as leveraging gdb features, tweaking the global program state, modifying your setup, tricking the SecureVault program into running in a safe manner, etc. Avoiding the alarm entirely is one straightforward approach to ensure that we won't hear about it, but there are ways to selectively disable just the transmission portion to the central system (course staff) . Once you figure how to set up appropriate protection against alarms, you will then be free to experiment with the levels without worry. Note that the program can only trigger an alarm when it is "live", i.e., executing in shell or running with gdb .

Step 3: Disarming Levels

Your next task is to approach each level individually to figure out a password that disarms it. There may be more than one password for each level; your task is to enter your 4 passwords, one per line, starting with level 1, into your input.txt file. Here are key tips for how to approach your reverse engineering exploration:

  • Run the program live in GDB (with appropriate alarm protections!) and step through to better understand its behavior. Reading and diagramming the assembly by hand is useful to an extent, but quickly becomes infeasible with larger programs.
  • Break the assembly into chunks. For instance, if it calls any functions, that's a good stopping point to orient yourself and understand the assembly just up to that point.
  • Use gdb to verify your hypotheses. Verify key assumptions you make about the vault behavior to ensure you're on the right track. One helpful trick is you can change register contents while running gdb. E.g. if you think "I believe if %rdi stored this, it would do that", then try it! You can do p $rdi = val to change register contents mid-program. Or if you think something is a char * , cast and print it out, e.g. p (char *)$rdi .
  • Document your knowns and unknowns. If you run into a situation where you are stuck due to seemingly-conflicting assumptions, document them and re-verify them. If you have multiple conflicting assumptions, at least one must not be the case.
  • Use compiler explorer to see what code looks like in assembly. If you think you happened upon e.g. a loop, if statement, etc. try using compiler explorer to type in some code quickly and see what that code looks like in assembly. If it resembles the assembly you're seeing, perhaps that can help you better understand its structure.
  • Use library functions to your advantage. If you spot a call to what looks like a library function, it's the real deal. Use the man page for that function to learn about what parameters it takes in, what it does, and what it returns. This can give you key information about the types of data in different registers - e.g. if you see a call to strlen , then the value put into %rdi must be of type char * , and what's stored in %rax afterwards must be a size_t string length.
  • When tracing an unknown function, before dissecting its behavior first learn about the input/output of the function and what role it plays. Does it return anything? What parameters does it take in? If it has a return value, is it checked to be something in particular? Going into a function with an idea of what must be returned for you to continue with the vault can help you focus on understanding how to achieve that.

Sanity Check

The default sanitycheck test cases are ATM inputs and one test case that reports the line count of your input.txt file. This sanitycheck is configured to only allow test cases for ATM in your custom_tests file. The SecureVault executable is not run by sanitycheck.

Once you are finished working and have saved all your changes, check out the guide to working on assignments for how to submit your work. We recommend you do a trial submit in advance of the deadline to allow time to work through any snags. You may submit as many times as you would like; we will grade the latest submission. Submitting a stable but unpolished/unfinished version is like an insurance policy. If the unexpected happens and you miss the deadline to submit your final version, this previous submit will earn points. Without a submission, we cannot grade your work.

We would also appreciate if you filled out this homework survey to tell us what you think once you submit. We appreciate your feedback!

For this assignment, here is a tentative point breakdown (out of 119):

  • custom_tests (24 points) Each successful attack test case earns 8 points. We will test by running tools/sanitycheck custom_tests on your submission. Your custom_tests should contain 3 test cases, one for each ATM attack.
  • readme.txt (55 points) The written questions will be graded on the understanding of the issues demonstrated by your answers and the thoroughness and correctness of your conclusions.
  • Input.txt (40 points) Each SecureVault level you have solved earns 10 points. We will test by running ./vault input.txt on your submission. The input.txt file in your submission should contain one line for each level you have solved, starting from level 1. Malformed entries in your input.txt or wrong line-endings will cause grading failures. To avoid surprises, be sure that you have verified your input.txt in the same way we will in grading (i.e., ./vault input.txt ).
  • SecureVault alarms triggered (up to 6 points deducted) Each alarm notification (beyond the first one) that reaches the staff results in a 1 point deduction, capped at 6 points total.

Post-Assignment Check-in

How did the assignment go for you? We encourage you to take a moment to reflect on how far you've come and what new knowledge and skills you have to take forward. Once you finish this assignment, your assembly skills will be unstoppable, and you will have a better understanding of trust, privacy and security! You successfully found vulnerabilities in a program using its source and assembly, and reverse engineered a complex program without having access to its source at all. Rock on!

To help you gauge your progress, for each assignment/lab, we identify some of its takeaways and offer a few thought questions you can use as a self-check on your post-task understanding. If you find the responses don't come easily, it may be a sign a little extra review is warranted. These questions are not to be handed in or graded. You're encouraged to freely discuss these with your peers and course staff to solidify any gaps in you understanding before moving on from a task.

  • What are some of the gdb commands that allow re-routing control in an executing program?
  • What is the main indication that an assembly passage contains a loop?
  • What makes someone a trustworthy fiduciary or guardian of personal data? How and why should an institution like a bank protect the privacy of its customers?
  • Explain the difference between a function's return value and its return address.
  • Consider the mechanics of function pointer work at the assembly level. How is a call through a function pointer the same/different when compared to an ordinary function call?
  • For performance reasons, the compiler prefers storing local variables in registers whenever possible. What are some reasons that force the compiler to store a local variable on the stack instead?
  • For the instruction sequence below, what must be true about values of op1 and op2 for the branch to be taken? What changes if ja is substituted for jg ? cmp op1,op2 jg target

U.S. flag

An official website of the United States government

The .gov means it’s official. Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

The site is secure. The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

  • Publications
  • Account settings

Preview improvements coming to the PMC website in October 2024. Learn More or Try it out now .

  • Advanced Search
  • Journal List
  • J Clin Transl Endocrinol
  • v.36; 2024 Jun
  • PMC11087993

Impact of sex used for assignment of reference intervals in a population of patients taking gender-affirming hormones

Matthew d. krasowski.

a Department of Pathology, University of Iowa Hospitals and Clinics, Iowa City, IA, 52242, USA

Nicole G. Hines

b Carver College of Medicine, University of Iowa, Iowa City, IA, 52242, USA

Katherine L. Imborek

c Department of Family Medicine, University of Iowa, Iowa City, IA, 52242, USA

Dina N. Greene

d Department of Laboratory Medicine, University of Washington, Seattle, WA, 98195, USA

e LetsGetChecked Laboratories, Monrovia, CA, 91016, USA

Associated Data

Data associated with this study has been deposited in Mendeley Data, V1, doi: 10.17632/gy8v292647.1, https://data.mendeley.com/datasets/gy8v292647/1.

Graphical abstract

An external file that holds a picture, illustration, etc.
Object name is ga1.jpg

  • • For the population taking gender-affirming hormones, legal sex impacts normal/abnormal flagging of laboratory tests.
  • • Creatinine and liver enzymes are the most frequently ordered tests potentially impacted by gender-affirming hormones.
  • • Sexual orientation/gender identity (SOGI) fields can help identify those potentially taking gender-affirming hormones.
  • • Cardiac biomarkers and iron studies merit further investigation for the impact of gender-affirming hormones.

Gender-affirming hormone therapy with either estradiol or testosterone for transgender persons can significantly impact chemistry and hematology laboratory tests. The sex used for assignment of reference intervals (RIs) in the electronic health record (EHR) will influence normal/abnormal flagging of test results.

To analyze common non-hormonal laboratory tests with sex-specific RIs ordered in patients with sexual orientation/gender identify (SOGI) field differences (one or more differences between legal sex, sex assigned at birth, and gender identity) in the EHR at an academic medical center in midwestern United States.

We utilized a previously characterized data set of patients at our institution that included chart review information on gender identity and gender-affirming therapy. We focused on the subset of these patients that had orders for 18 common laboratory tests in calendar year 2021.

A total of 1336 patients with SOGI field differences (1218 or 91.2% identifying as gender-expansive; 892 or 66.8% receiving estradiol or testosterone as gender-affirming therapy) had a total of 9374 orders for 18 laboratory tests with sex-specific RIs. Hemoglobin, creatinine, alkaline phosphatase, alanine aminotransferase, aspartate aminotransferase, and high-density lipoprotein were the most frequently ordered tests. For patients taking estradiol, 128 of 970 (13.2%) creatinine and 39 of 193 (20.2%) hemoglobin measurements were within the RI for one sex but not the other. For those taking testosterone, 119 of 531 (22.4%) creatinine and 49 of 120 (40.8%) hemoglobin measurements were within the RI for one sex but not the other. Values above the cisgender female RI but within the cisgender male RI were common for hemoglobin, alkaline phosphatase, alanine aminotransferase, and aspartate aminotransferase in patients taking testosterone.

Conclusions

Clinicians should be aware of the potential impact of gender-affirming therapy on laboratory tests and what sex/gender is being used in the EHR to assign RIs.

Introduction

Gender-affirming hormone therapy is standard of care for transgender and nonbinary people who wish to medically transition [1] , [2] , [3] . Transgender and nonbinary people experience incongruence between their sex assigned at birth (SAAB; ‘birth sex') and gender identity (GI), the internal sense of being a woman, man or somewhere between [1] , [2] , [4] . Feminizing gender-affirming therapy typically includes estradiol (oral, transdermal, or intramuscular injection) with or without adjunct agents that may include progesterone and androgen blockers (e.g., cyproterone, finasteride, spironolactone) [5] . Masculinizing gender-affirming therapy utilizes testosterone, commonly either intramuscular or subcutaneous injection or a topical route such as testosterone gel or transdermal patch [6] .

A number of common laboratory tests have been shown to be impacted by gender-affirming feminizing or masculinizing therapy [7] , [8] , [9] , [10] . Some of these tests are recommended by expert opinion or clinical practice guidelines (including the Endocrine Society and the The World Professional Association for Transgender Health) in the monitoring of patients receiving gender-affirming hormones [1] , [2] . Examples of laboratory tests recommended in at least one guideline include creatinine (CRT), hemoglobin (HB)/hematocrit (HCT), estradiol, prolactin, and testosterone. There is consensus between guidelines in recommending monitoring of HB/HCT in those receiving testosterone as gender-affirming therapy. In addition to monitoring of gender-affirming therapy, transgender and nonbinary patients may have laboratory tests ordered for other clinical indications. Laboratory tests significantly impacted by gender-affirming hormones are predominantly tests that have sex-specific reference intervals (RIs) or target ranges based on SAAB [7] , [8] , [9] , [10] . Prospective studies in those stably taking gender-affirming hormones have determined that some analytes have RIs that are significantly different than those associated with SAAB [11] , [12] , [13] , [14] , [15] . For example, empirically determined RIs for HB/HCT in the transgender and nonbinary population taking gender-affirming hormones align with affirmed gender and not SAAB (e.g., transmen taking testosterone have essentially the same RI as cisgender men) [11] .

A major informatics challenge is how to utilize functionality within the electronic health record (EHR) to provide RIs or interpretive comments for laboratory tests ordered on transgender and nonbinary patients who may be receiving gender-affirming therapy [16] , [17] , [18] , [19] . In recent years, EHR packages in the United States (US) have incorporated demographic fields for sexual orientation and gender identity (SOGI) [20] , [21] . This integration allows patients or members or the healthcare team to list GI, SAAB, and sexual orientation within individual patient medical records, sometimes along with other items such as affirmed name, preferred pronouns, organ inventory, history of gender-affirming therapy, and presence of differences in sexual differentiation (otherwise known as intersex or variation of sex characteristics). Access to this information can help the clinical care team provide better service for gender and sexual minority groups [18] , [22] .

Studies at large medical centers in the US have shown rates of SOGI field use by adult patients in the 20–30 % range, with much higher use by those identifying within the lesbian, gay, bisexual, transgender, and queer/questioning (LGBTQ) umbrella [17] , [23] , [24] . Several factors influence rate of SOGI field adoption including collection of information during check-in for encounters, use of patient portals, and healthcare provider encouragement. There are some potential risks to patients providing SOGI information that will be accessible in the EHR [24] , [25] , [26] , [27] , [28] . Common patient concerns include discrimination, disapproving comments, bias from the healthcare team, and privacy of adolescent health information.

In the US, legal sex in the EHR will typically match the sex designation on health insurance cards and state identity documents [17] . The process to officially change the sex designation on identity documents varies substantially across US states and territories [29] . Legal sex is typically the sex marker used for assignment of sex-specific RIs for laboratory tests such as HB/HCT, CRT, reproductive hormones, and other laboratory tests. In the majority of patients, legal sex will match SAAB. However, when a patient goes through the process to change legal sex in the EHR, this will change the sex used to assign RI for tests with sex-specific intervals [17] .

With current EHR functionality, the clinical laboratory may not be able to easily identify patients who may be taking gender-affirming hormones [17] , [18] , [19] . The complexity of SOGI field options also presents practical challenges for designing specific rules based on patient SOGI responses [17] , [23] , [24] . As an alternative, a binary rule based on the presence or absence of any ‘SOGI field difference’ may be used to identify a subset of patients highly likely to identify as gender diverse and possible also be receiving gender-affirming hormones [17] . This is in fact an option for which the EHR vendor for our institution provided rules and guidance using the SOGI field options in our EHR ( Table 1 ). In a previous study, we performed detailed analysis of SOGI field responses for all patients with at least one completed in-person inpatient and/or outpatient encounter within our academic medical center system over an approximately 3-year period [17] .

Choices available for gender and sex in the sexual orientation/gender identity (SOGI) data fields.

1 Legal sex cannot be changed directly by patient; any changes in legal sex must be done by authorized users following hospital policy. Gender identity and sex assigned at birth can be left blank, whereas legal sex must be one of the three options. There is option to auto-fill sex gender identity and sex assigned at birth by selecting either cisgender female or cisgender male. This option will match sex assigned at birth and gender identity to the legal sex currently in the system for the patient.

In the present study, we determined which common non-hormonal laboratory tests with sex-specific RIs were ordered most often in the population of patients with SOGI field differences in the EHR. Using our prior dataset of patients well-characterized by chart review for GI and use of gender-affirming hormones [17] , we focused on the subset that in calendar year 2021 had orders for 18 frequently ordered non-hormonal laboratory tests that have sex-specific RIs for the general population for at least some ages. Of the laboratory tests analyzed, CRT, alkaline phosphatase (ALP), alanine aminotransferase (ALT), aspartate aminotransferase (AST), HB, and HDL have strong evidence across multiple published studies of being impacted by gender-affirming hormones (either estradiol, testosterone, or both; Table 2 ) [9] , [10] , [11] , [15] , [30] , [31] , [32] , [33] , [34] , [35] , [36] , [37] , [38] . Our secondary aims were to analyze how often test results for patients were in a range where the difference in legal sex results in discordance between cisgender female and male RIs in terms of normal/abnormal flagging and to assess the impact of changing legal sex on that flagging.

Impact of gender-affirming hormones on selected analytes from published studies.

1 Estradiol gender-affirming therapy shifts reference interval for hemoglobin and hematocrit to lower values, aligning with cisgender female reference intervals. For the other four tests, estradiol has minimal effect, either slight decrease or no change depending on published study.

2 In general for these five laboratory tests, testosterone gender-affirming therapy shifts reference interval to higher values, aligning with cisgender male reference intervals.

Materials and methods

Setting and electronic health record design.

The study was conducted at an 860 bed tertiary/quaternary care academic medical center that includes a 190 bed children's hospital. The medical center includes an emergency department, inpatient units, and outpatient clinics at a central campus location. Adult and pediatric clinics are also located throughout the state. The EHR for the medical center since 2009 has been Epic (Epic Systems, Inc., Madison, WI, USA), with Epic Beaker Anatomic Pathology and Clinical Pathology for the institutional laboratory information system [39] , [40] . The institution adopted SOGI field capability for all patients in December 2018 [17] , [18] . This included fields for GI, SAAB, sexual orientation, preferred name, and preferred pronoun as basic SOGI functionality for which patients could volunteer information during registration, pre-visit questionnaires, or via the patient portal (Epic MyChart). Fields for organ inventory, use of gender-affirming hormones, and history of gender-affirming gonadectomy are available but have not been utilized much to date at our institution [17] .

Study design and data retrieval

The data in this study was collected as part of a retrospective study approved by the Institutional Review Board (protocol # 202202388) covering the timeframe from December 1, 2018 to February 17, 2022. During the retrospective analysis timeframe, the EHR allowed for 3 options for Legal Sex (Male, Female, Unknown), 8 options for GI, and 7 options for SAAB ( Table 1 ). Legal Sex is a mandatory field, while GI and SAAB are voluntary and can be left blank. The total number of possible combinations for Legal Sex, GI, and SAAB (including GI and/or SAAB being left blank) is 168 [17] .

In a previous study [17] , out of a total of 123,441 unique patients, 2298 patients had SOGI field differences, defined as a non-blank response for GI and/or SAAB that differed from Legal Sex (e.g., Legal Sex of “Female” and GI of “Transgender Male” or Legal Sex of “Male” and SAAB as “Female”). Detailed chart review was performed for all of the 2298 patients, showing 91.3 % identified within the broad umbrella of gender-expansive (includes transgender, nonbinary, gender fluid, gender queer, transfeminine, and transmasculine), and 63.6 % were actively taking gender-affirming hormones.

The present study focuses on the subset that had frequently ordered, non-hormonal laboratory tests with sex-specific RIs. These encompassed the following 18 tests: CRT, ALP, ALT, AST, gamma-glutamyltransferase (GGT), lactate dehydrogenase (LDH), creatine kinase (CK), HB, ferritin, high-density lipoprotein (HDL), iron, iron percent saturation, N-terminal pro-B-type natriuretic peptide (NT-proBNP), high-sensitivity (generation 5) troponin T (hs-TnT), total calcium, phosphorus, erythrocyte sedimentation rate, and uric acid. Details on the laboratory assays (vendor, assay name, RIs at our institution) are summarized in Supplemental Tables 1 and 2 . The flow diagram for data retrieval and analysis is shown in Fig. 1 . Chart review for all patients is described in a previous publication [17] .

An external file that holds a picture, illustration, etc.
Object name is gr1.jpg

Flow diagram for the study. Using analysis from a previous study [17] , we utilized a data set of 2298 unique patients with SOGI field differences whose charts had been reviewed for gender identity and use of gender-affirming hormones. From these 2298 unique patients, 1336 patients had one or more orders in calendar year 2021 for 18 laboratory tests that have sex-specific reference intervals for the patient age at time of specimen collection. Of these 1336 unique patients, 892 patients (66.8%) were receiving gender-affirming hormones (either estradiol or testosterone) at the time of laboratory testing.

An Epic Reporting Workbench report retrieved all patients with orders within calendar year 2021 for the 18 laboratory tests listed above [41] . This report captures laboratory-only encounters as well as laboratory tests ordered in conjunction with an in-person inpatient, outpatient, or emergency department encounter. This dataset was used to cross-reference orders for these laboratory tests to the 2298 patients with SOGI field differences. We focused only on patient age/laboratory test combinations that have sex-specific RIs and thus excluded age/test combinations for which our institution has a single RI across both sexes ( Supplemental Table 2 ). This analysis included tests ordered individually and also within panels (e.g., HB within complete blood count; CRT within basic metabolic, comprehensive metabolic, or renal panels). Laboratory test RIs at our institution are applied based on legal sex.

Potential impact of change of legal sex in the EHR

To estimate the potential impact of changes in legal sex, we focused the analysis on ALP, ALT, AST, CRT, and HB (five of the most frequently ordered tests with sex-specific RIs in the population with SOGI field changes). The two scenarios were: (1) legal sex equaled SAAB for everyone and (2) legal sex was instead GI for the patient population taking gender-affirming hormones. This analysis used our institutional sex-specific RIs and not any RIs empirically derived from published studies describing specifics RIs for the transgender/nonbinary population receiving gender-affirming hormones. For data with CRT, we analyzed how the use of either female or male for the estimated glomerular filtration rate (eGFR) calculation impacts the assignment of eGFR categories for chronic kidney disease (CKD) stages from the Kidney Disease: Improving Global Outcomes (KDIGO) 2013 working group recommendations [42] for the cohorts taking estradiol or testosterone as gender-affirming therapy. The agreement between CKD stages was assessed using the weighted Cohen’s kappa (κ) statistic.

Characteristics of the population studied

Many laboratory tests have sex-specific RIs, either for all ages or specific age ranges. We focused on 18 commonly ordered non-hormonal chemistry and hematology tests with sex-specific RIs for at least some age ranges at our institution. Out of a previously published dataset of 2298 patients with SOGI field differences in our institutional EHR, we identified that 1336 of the 2298 patients had 9374 orders for these 18 laboratory tests within the calendar year 2021 at an age for which our institution has sex-specific RIs ( Supplemental Table 2 ). Of the 1336 patients with laboratory orders, 1218 (91.2 %) were classified as gender-expansive based on previous chart review [17] , with 892 (66.8 %) receiving gender-affirming hormones at the time of laboratory testing. The present study focuses mainly on these 892 patients. Of the 892 patients receiving gender-affirming hormones, 118 (13.2 %) also had history of gender-affirming bilateral gonadectomy (i.e., ovariectomy or orchiectomy).

Supplemental Table 3 provides a summary of demographics, estradiol or testosterone medication formulation at time of laboratory testing, change of legal sex in the EHR, and gender identity from chart review (transgender, nonbinary, or other). Supplemental Table 4 provides the number of orders, number of unique patients, and number of unique patients with one or more values outside at least one sex-specific RI for all the laboratory tests analyzed in the present study for the population taking gender-affirming estradiol or testosterone. A flow diagram of the study is in Fig. 1 .

Distribution of laboratory test ordering and results in the population with SOGI differences

Fig. 2 shows a breakdown of whether the results for a laboratory test performed on patients with SOGI field differences were within both cisgender male and female RIs, abnormal in one range but not the other, or outside both male and female RIs for the patient age at the time of specimen collection. With some minor differences, the profile for all 1336 unique patients with SOGI field differences ( Fig. 2 A) is very similar to the subset known to be receiving gender-affirming hormones (either feminizing therapy with estradiol with or without adjunct agents or masculinizing therapy with testosterone) as verified by chart review (5662 tests on 892 unique patients; Fig. 2 B). The top six most frequently ordered tests in descending order were CRT, ALT, AST, ALP, HDL, and HB. Within these six tests, CRT, HDL, ALT, and HB had the greatest number of results that were outside one or both age-matched sex-specific RIs for that test at our institution (yellow or red bars in Fig. 2 ). For the subset of patients known to be receiving gender-affirming hormones, the overall patterns for the estradiol cohort (2919 tests on 423 unique patients; Fig. 3 A) was very similar to the overall patterns seen in Fig. 2 . For the testosterone cohort (2743 tests on 469 unique patients; Fig. 3 B), the pattern was also similar except ALT was ordered slightly more often at ages with sex-specific RIs than CRT.

An external file that holds a picture, illustration, etc.
Object name is gr2.jpg

Laboratory tests with sex-specific reference intervals (RIs) ordered in calendar year 2021 on patients with sexual orientation/gender identity (SOGI) field differences for legal sex, sex assigned at birth, and gender identity. The bar graphs indicate how often laboratory tests were within sex-specific RIs for both sexes (light blue), abnormal in both intervals (red), or abnormal in only one sex-specific interval (yellow) using the patient age at time of laboratory testing. The sex-specific RIs were the ones used by the laboratory for all patients (see Supplemental Table 2), not any RIs empirically derived for the population on gender-affirming therapy. (A) Analysis for all patients (9374 tests on 1336 unique patients). (B) Analysis for the subset of patients documented to be receiving gender-affirming hormones (either estradiol or testosterone) at the time of laboratory testing (5662 tests on 892 unique patients). Abbreviations: ALP, alkaline phosphatase; ALT, alanine aminotransferase; CK, creatine kinase; CRT, creatinine; ESR, erythrocyte sedimentation rate; GGT, gamma-glutamyltransferase; HB, hemoglobin; HDL, high-density lipoprotein; hs-TnT, high-sensitivity troponin T; Iron Sat, iron saturation %; LDH, lactate dehydrogenase; NT-proBNP, NT-Pro B-type natriuretic peptide; Phos, inorganic phosphorus; SOGI, sexual orientation/gender identity. (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)

An external file that holds a picture, illustration, etc.
Object name is gr3.jpg

Laboratory tests with sex-specific RIs ordered in calendar year 2021 on patients documented to be on either estradiol or testosterone gender-affirming therapy at the time of laboratory testing. The bar graphs indicate how often these tests were within sex-specific RIs for both sexes (light blue), abnormal in both intervals (red), or abnormal in only one sex-specific interval (yellow) using the patient age at time of laboratory testing. (A) Analysis for patients receiving estradiol as gender-affirming therapy at the time of laboratory testing (2919 laboratory tests on 423 unique patients). (B) Analysis for patients receiving testosterone as gender-affirming therapy at the time of laboratory testing (2743 laboratory tests on 469 unique patients). Abbreviations and reference intervals are the same as described in Fig. 2 . (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)

Potential impact of change of legal sex in the population receiving gender-affirming hormones

For ALP, ALT, AST, CRT, and HB, we analyzed data involving the population documented to be taking gender-affirming hormones considering the following two scenarios: (1) legal sex was always the same as SAAB and (2) legal sex was instead affirmed gender. This analysis used our institutional sex-specific RIs and not any RIs empirically derived for the transgender/nonbinary population receiving gender-affirming hormones. We then assessed whether the flagging for normal/abnormal for the RI actually matches the known impacts of gender-affirming hormones on these five tests ( Table 2 ). This assumes estradiol as gender-affirming hormone does not significantly impact ALP, ALT, AST, and CRT, while testosterone therapy shifts ALP, ALT, AST, CRT, and HB values to essentially match cisgender male RIs. For HB, gender-affirming feminizing hormones also shift values to match cisgender female RIs.

Fig. 4 , Fig. 5 shows dot plots for where observed values for ALP, ALT, AST, CRT, and HB fall with regard to cisgender male and female RIs for the population taking gender-affirming hormones. In these two figures, values within the red boxes were below cisgender male RI but within the cisgender female RI, while blue boxes indicate values that were within the cisgender male RI but above the cisgender female RI. Fig. 6 summarizes the data for the population taking estradiol ( Fig. 6 A) or testosterone ( Fig. 6 B) in terms of how many values would have been flagged correctly for ALP, ALT, AST, CRT, and HB (given known effects of gender-affirming hormones) if using either SAAB (black boxes) or affirmed gender (red boxes) as the sex for the RI.

An external file that holds a picture, illustration, etc.
Object name is gr4.jpg

Dot plots of laboratory testing for alkaline phosphatase (ALP), alanine aminotransferase (ALT), and aspartate aminotransferase (AST) in patients receiving either estradiol (A, C, E) or testosterone (B, D, F) as gender-affirming hormone at the time of laboratory testing. The values are subdivided into those that are below the lower limits for both cisgender female and male reference intervals (RIs), lower than the male RI but within the female RI (highlighted by red boxes), within both RIs, higher than the female RI but within the male RI (highlighted by blue boxes), and above both the female and male RIs. ALT and AST have identical lower limits for both females and males. The RIs are indicated by green dashed lines for the adult male RI and solid purple lines for the adult female RI. The ALP data does include some teenage patients whose values would be within adult RIs but not within the specific sex-specific RI by age. The ALT and AST RIs just indicate the upper limit of the range (lower limit for female and male is 0 U/L for both tests). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)

An external file that holds a picture, illustration, etc.
Object name is gr5.jpg

Dot plots of laboratory testing for creatinine and hemoglobin in patients receiving either estradiol (A, C) or testosterone (B, D) as gender-affirming hormone at the time of laboratory testing. The values are subdivided into those that are below the lower limits for both cisgender female and male reference intervals (RIs), lower than the male RI but within the female RI (highlighted by red boxes), within both RIs, higher than the female RI but within the male RI (highlighted by blue boxes), and above both the female and male RIs. The number of laboratory tests in each category is provided in parentheses for creatinine. In the estradiol cohort for creatinine, there were two samples from two unique patients that exceeded 5.0 mg/dL for creatinine (5.4 and 7.2 mg/dL, respectively). In the testosterone cohort for creatinine, there was a single sample that exceeded 5.0 mg/dL for creatinine (8.4 mg/dL). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)

An external file that holds a picture, illustration, etc.
Object name is gr6.jpg

Estimate of correct normal/abnormal flagging using reference intervals (RIs) related to either sex assigned at birth (black boxes) or gender identity (red boxes) for patients either taking estradiol (A) or testosterone (B) as gender-affirming hormones. This analysis assumes that estradiol as gender-affirming therapy does not significantly alter RIs for alkaline phosphatase (ALP), alanine aminotransferase (ALT), aspartate aminotransferase (AST), and creatinine; estradiol does, however, lead to downward shift of hemoglobin RI to essentially match that for cisgender females. The analysis assumes that RIs for ALP, ALT, AST, creatinine, and hemoglobin align with cisgender male RIs for those taking testosterone as gender-affirming hormone. For example, a hemoglobin value of 16.0 g/dL in a transgender man taking testosterone would be above the cisgender female RI but within the cisgender male RI. Use of the sex assigned at birth (female) for RI would lead to incorrect interpretation (hemoglobin concentration too high) compared to using gender identity (male) for the RI (hemoglobin within RI). (For interpretation of the references to colour in this figure legend, the reader is referred to the web version of this article.)

For ALP, ALT, and AST, the main category that is discordant with respect to cisgender male and female RIs are those where the observed values are within the cisgender male RI but above the cisgender female RI ( Fig. 4 ). For those taking estradiol, these could be misclassified as abnormally high if using affirmed gender (female) for the RI, as estradiol does not significantly impact ALP, ALT, and AST ( Fig. 4 A, C, E). In contrast, testosterone has been shown to significantly increase ALP, ALT, and AST, so the affirmed gender (male) would be the appropriate RI in those taking masculinizing hormones ( Fig. 4 B, D, F).

CRT and HB were more complicated as there were similar number of patients for both tests that are in two categories: below cisgender male RI but within cisgender female RI, or within cisgender male RI but above the cisgender female RI ( Fig. 5 A, 6A). For the estradiol cohort, the biggest clinical impact of using affirmed gender (female) for the CRT RI would likely be the 10.6 % of patients that are within the cisgender male RI but above the cisgender female RI. In this range, values may be incorrectly interpreted as indicative of diminished renal function based on the cisgender female RI, because estradiol has minimal impact on CRT. However, the issue of eGFR is also complicated and needs futher investigation in the population taking gender-affirming hormones [43] .

Equations for eGFR commonly incorporate sex (female or male) into the calculation. Utilizing the Chronic Kidney Disease Epidemiology Collaboration (CKD-EPI) 2021 equation without race [44] , we calculated eGFR for the patients who were taking either estradiol or testosterone as gender-affirming therapy and who were also 18 years or older at the time CRT was measured (CKD-EPI equation is not recommended for those younger than 18 years old). This resulted in a data set of 992 CRT measurements on 406 unique patients taking estradiol and 477 CRT measurements on 214 unique patients taking testosterone. Table 3 shows how the use of either female or male for the eGFR calculation impacts the assignment of eGFR categories for CKD stages from the KDIGO 2013 working group recommendations [42] . For those taking estradiol, 403 of 992 (40.6 %) CRT measurements were in different eGFR categories for female compared to male (most commonly category 2 vs. 1). For those taking testosterone, 130 of 477 (27.3 %) CRT measurements were in different eGFR categories for female compared to male.

Impact of sex used for estimated glomerular filtration calculation in the population taking gender-affirming hormones.

1 The estradiol data consisted of 992 creatinine measurements on 406 unique patients 18 years and older taking estradiol as gender-affirming therapy. Observed agreement 0.59, weighted κ 0.40 (95 % CI 0.35–0.46).

2 Abbreviations: CKD, chronic kidney disease; eGFR, estimated glomerular filtration rate.

3 eGFR category for CKD: stage 1, normal or high (eGFR > 90 ml/min/173 m 2 ); stage 2, mildly decreased (eGFR 60–89); stage 3a, mildly to moderately decreased (eGFR 45–59); stage 3b, moderately to severely decreased (eGFR 30–44); stage 4, severely decreased (eGFR 15–29); stage 5, kidney failure (eGFR < 15). eGFR was calculated using the CKD-EPI (2021) eGFR equation without race refit.

4 The testosterone data consisted of 477 creatinine measurements on 214 unique patients 18 years and older taking testosterone as gender-affirming therapy. Observed agreement 0.74, weighted κ 0.46 (95 % CI 0.38–0.54).

The largest discordant population for HB (18.3 %) in the estradiol cohort are those that have values that are below the cisgender male RI but within the cisgender female RI; these could be incorrectly classified as anemia if using SAAB (male) for the RI when in fact gender-affirming therapy can explain the decrease in HB ( Fig. 5 C, 6A). It is also worth noting that HB values below both cisgender male and female ranges were common (80 of 193, 41.5 %) in the estradiol cohort. This likely reflects anemia regardless of SAAB.

For the subgroup taking testosterone as the gender-affirming hormone, use of affirmed gender (male) would result in correct categorization for CRT and HB ( Fig. 5 B, D; Fig. 6 B). For CRT, 8.1 % of the values are in a range that is above the cisgender female RI but within the cisgender male RI ( Fig. 5 B and 6B). These values may be interpreted as abnormally high if using SAAB (female) for the RI. For HB, over 40 % of the values are in categories that are discordant between the cisgender male and female RIs ( Fig. 5 D and 6B). Of these, 26.7 % of the HB values are above the cisgender female RI but within the cisgender male RI ( Fig. 5 D); these may be incorrectly labeled as erythrocytosis if using SAAB (female) as the RI. In contrast, 14.2 % of the HB values are within the cisgender female RI but below the cisgender male RI ( Fig. 5 D); these may be incorrectly labeled as normal if using SAAB for the RI but may in fact indicate anemia in the context of someone using testosterone as gender-affirming hormone.

Fig. 6 summarizes the overall impact of using affirmed gender or SAAB as the sex for the RI for ALP, ALT, AST, CRT, and HB in the population taking gender-affirming hormones. In our dataset, use of affirmed gender for the RI for these five tests will overall assign the correct normal/abnormal flagging more often based on current knowledge of gender-affirming tests. Use of affirmed gender for the RI has a particularly large impact on HB normal/abnormal flagging for both the estradiol and testosterone groups ( Fig. 6 ). Supplemental Tables 5 and 6 summarize the data for ALP, ALT, AST, CRT, and HB, breaking down the impact of using SAAB or affirmed gender for the RIs for these five tests.

Potential clinical impact of gender-affirming hormones on less commonly ordered laboratory tests

There were other less frequently ordered laboratory tests with sex-specific RIs ordered in patients documented to be taking gender-affirming hormones ( Fig. 2 , Fig. 3 ). Some of these tests were rarely ordered in our data set at ages that have sex-specific RIs, and differences between RIs seem unlikely to have significant clinical impact in the population taking gender-affirming hormones (CK, total calcium, serum phosphorus, erythrocyte sedimentation rate, and uric acid). GGT showed a pattern similar to ALT and AST, with the most common discordant pattern in terms of normal/abnormal flagging being values that were above the cisgender female RI but within the cisgender male RI (33 of 85 or 38.8 % of GGT results were in this category). LDH was only ordered 34 times in the patient population taking gender-affirming hormones, with only a single result (2.9 %) above the cisgender female RI but within the cisgender male RI. All other results for LDH were either within both cisgender RIs or abnormal in both RIs.

Ferritin and iron studies were ordered 68 and 69 times, respectively, in patients taking gender-affirming hormones. While serum iron and percent iron saturation have fairly narrow differences between cisgender female and male RIs at our institution, ferritin has wider gaps between the lower and upper limits of normal for female and male RIs ( Supplemental Table 2 ). As result, 13 of 28 (46.4 %) ferritin values for those taking estradiol and 24 of 40 (60.0 %) ferritin values for those taking testosterone were discordant between cisgender female and male RIs. To our knowledge, there is currently no published literature on the impact of gender-affirming hormones on ferritin and iron studies; thus, the clinical impact of this is not clear.

Lastly, the cardiac markers hs-TnT (35 orders on 25 unique patients) and NT-proBNP (8 orders on 6 unique patients) were ordered infrequently in the population taking gender-affirming hormones ( Fig. 2 , Fig. 3 ). For hs-TnT, only 3 values (2 unique patients) were outside cisgender female and/or male RIs and were explainable by myocardial infarction in both patients. For NT-proBNP, 3 values on 1 unique patient were outside both cisgender female and male RIs and were explainable by heart failure later managed by cardiac transplant.

In the present study, we used a previously well-characterized dataset of patients with respect to GI and use of gender-affirming therapy to focus on laboratory test ordering and the potential impact of gender-affirming hormones [17] . The most frequently ordered non-hormonal laboratory tests were ALP, ALT, AST, CRT, HB, and HDL. In patients taking testosterone as gender-affirming hormone, ALP, ALT, AST, CRT, and HB essentially align with cisgender male RIs based on current published data, while published data for HDL and other lipids have been more variable [9] , [10] , [11] , [15] , [31] , [33] , [34] , [35] , [36] , [37] , [38] . Thus, use of the cisgender female RI (corresponding to SAAB) can lead to discordant normal/abnormal flagging for ALP, ALT, AST, CRT, and HB compared to use of the cisgender male RI. In contrast, ALP, ALT, AST, and CRT are not significantly impacted by estradiol as gender-affirming therapy [9] , [10] , [15] , [31] , [33] , [45] , although there has been some variability across studies for some of these analytes [32] , [34] , [36] , [38] , [46] , particularly for CRT. Estradiol gender-affirming therapy does, however, result in HB values that essentially align with cisgender female RIs [10] , [11] , [47] . We observed that HB values below both cisgender female and male RIs were common in the estradiol cohort, comprising 41.5 % of total measurements. This finding warrants future investigation. Unfortunately, iron studies were not commonly co-ordered with HB in this cohort so we did not have laboratory evidence to help discern type of anemia.

For ALP, ALT, AST, CRT, and HB, the sex used for assignment of RIs has implications for whether values flag normal or abnormal and for clinical decision-making. Use of affirmed gender will provide the appropriate RI for these five tests in those taking testosterone and for HB in those taking estradiol, but can lead to misinterpretation for ALP, ALT, AST, and CRT in those taking estradiol. There is a possibility to offer “transgender-specific” test codes for some laboratory tests for the population taking gender-affirming hormones; however, this is logistically complicated (especially with these tests utilized in different testing panels) and depends on providers reliably using such order codes. For HB, use of SAAB for the RI could lead to inaccurate assignment of erythrocytosis in transmen taking testosterone or anemia in transwomen taking estradiol. For CRT, use of SAAB for the RI in transmen could lead to erroneous conclusion of declining renal function, even though increases in CRT are on average expected from testosterone gender-affirming therapy. The sex used in eGFR calculations can also impact clinical classifications in those taking gender-affirming hormones [48] , [49] , [50] ; along these lines, we found that approximately 40 % of CRT measurements in the estradiol and testosterone cohorts would be classified in different eGFR categories using the CKD-EPI 2021 equation.

In the US, legal sex is typically what is used for assignment of RIs in the EHR or laboratory information system. The process to change legal sex in the US varies considerably [29] . Some states/territories have a simple process, while others either do not allow change of sex designation or require history of gender-affirming treatment (some state laws reference language such as “gender reassignment surgery”) together with documentation from healthcare provider. Healthcare organizations also have varying processes for a patient to change legal sex within the EHR. Nonetheless, healthcare providers should be aware that some patients change their legal sex, which can impact a variety of processes that may have sex-specific nomenclature and logic, including laboratory test RIs, billing rules, and radiologic imaging codes [18] , [19] .

In the present study, we utilized logic within our institutional laboratory information system that identifies SOGI field differences as a binary rule. One major advantage of using SOGI field differences is to considerably narrow the patient population for which interpretive comments might be posted to select laboratory results. While SOGI field differences are not perfect for identifying those who may be taking gender-affirming hormones, alternative approaches to identify this sub-population are currently quite difficult. For example, information in medication/pharmacy records or diagnosis codes are often not accessible to the clinical laboratory for automated interpretation. In theory, individual SOGI field responses could identify those who are transgender or nonbinary. However, our previous study revealed that a wide diversity of SOGI field responses were used out of 168 possible combinations from the SOGI field options in our EHR build for legal sex, SAAB, and GI [17] . The large number of combinations creates substantial technical informatics challenges if attempting to build logic for RIs and interpretive comments based on specific SOGI field combinations.

Of the widely ordered laboratory tests analyzed in our study, ferritin and iron studies are both lacking any published literature on the impacts of gender-affirming hormones. This would certainly be of interest as a future study as our data showed that 46.4 % of those taking estradiol and 60.0 % of those taking testosterone were abnormal for ferritin in one cisgender RI but not the other. The impact of gender-affirming hormones on cardiac markers are also of interest given well-documented cardiovascular health disparities described in the gender-expansive population [51] . Our dataset had few orders for hs-TnT and NT-proBNP, likely reflecting a gender-expansive population on average younger than the overall patient population in our institution. There have been some publications on variation of hs-Tn and NT-proBNP in the transgender population [12] , [52] , and future investigations would be welcome.

Limitations of our study include analysis at a single academic medical center that serves as a regional center for LGBTQ health care. A small proportion of those receiving gender-affirming hormones also had a history of bilateral gonadectomy, a variable that may have impacted some laboratory tests. Our study did not analyze factors that may have influenced testing ordering and laboratory values including duration of hormone therapy, comorbidities, concomitant medications, and clinical indications for testing. This is a potential area of future investigation. There is also the possibility that some laboratory values were outside RIs by chance and not due to any abnormality or other factor. The efficacy of SOGI fields at our institution was influenced by institutional focus that include workflows that promote use of the SOGI fields in the LGBTQ clinics and other medical center sites [17] , [18] . Institutions with low rates of SOGI field promotion and adoption will likely find less benefit with use of SOGI fields. Lastly, the analysis of RIs in the present study focused on normal/abnormal flagging; however, more subtle clinical-decision-making would often take into account trends in values and clinical context, such as changes from baseline measurements obtained prior to starting gender-affirming therapy.

In our study at an academic medical center, ALP, ALT, AST, CRT, and HB were the most frequently ordered non-hormonal laboratory tests with sex-specific RIs in the patient population taking gender-affirming hormone therapy. Values within the RI for one sex but not the other were common in these tests, meaning that changing the legal sex for assignment of RIs impact normal/abnormal flagging. Clinicians should be aware of the potential impact of gender-affirming therapy on laboratory tests and what sex/gender is being used in the EHR to assign RIs. Future studies on renal function (including eGFR), ferritin, iron studies, and cardiovascular markers in the transgender and non-binary population taking gender-affirming hormones would be of interest.

There was no external funding for this study.

Ethical approval

This study was conducted with ethical approval from the University of Iowa Institutional Review Board as a retrospective study with waiver of informed consent with the approval number 202202388.

Disclosure statement

The authors have nothing to disclose

CRediT authorship contribution statement

Matthew D. Krasowski: Writing – review & editing, Writing – original draft, Project administration, Investigation, Formal analysis, Conceptualization. Nicole G. Hines: Writing – review & editing, Investigation, Conceptualization. Katherine L. Imborek: Writing – review & editing, Project administration, Formal analysis, Conceptualization. Dina N. Greene: Writing – review & editing, Conceptualization.

Declaration of competing interest

The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

Acknowledgements

The authors would particularly like to thanks Nick Dreyer and Linda Kleinmeyer from the University of Iowa Health Care Information Systems for assistance on retrieving sexual orientation/gender identity from electronic health record databases.

Appendix A Supplementary data to this article can be found online at https://doi.org/10.1016/j.jcte.2024.100350 .

Appendix A. Supplementary data

The following are the Supplementary data to this article:

Data availability

  • Share full article

Advertisement

Supported by

How MSNBC’s Leftward Tilt Delivers Ratings, and Complications

NBC’s leaders have been forced to grapple with how to square its cable news network’s embrace of progressive politics with the company’s straight-news operation.

In a collage of images, President Biden and Comcast’s headquarters are on the left and Ronna McDaniel and an NBC camera operator are on the right. The collage is torn through the middle.

By Jim Rutenberg and Michael M. Grynbaum

MSNBC placed a big bet on becoming comfort TV for liberals. Then it doubled down.

Time slots on the cable network once devoted to news programming are now occupied by Trump-bashing opinion hosts. The channel has become a landing spot for high-profile alumni of President Biden’s administration like Jen Psaki, who went from hosting White House press briefings to hosting her own show. On Super Tuesday, when producers aired a portion of a live speech by former President Donald J. Trump, Rachel Maddow chastised her bosses on the air.

The moves have been a hit with viewers. MSNBC has leapfrogged past its erstwhile rival CNN in the ratings and has seen viewership rise over the past year, securing second place in cable news behind the perennial leader, Fox News.

But MSNBC’s success has had unintended consequences for its parent company, NBC, an original Big Three broadcaster that still strives to appeal to a mass American audience.

NBC’s traditional political journalists have cycled between rancor and resignation that the cable network’s partisanship — a regular target of Mr. Trump — will color perceptions of their straight news reporting. Local NBC stations between the coasts have demanded, again and again, that executives in New York do more to preserve NBC’s nonpartisan brand, lest MSNBC’s blue-state bent alienate their red-state viewers.

Even Comcast, NBC’s corporate owner, which is loath to intervene in news coverage, took the rare step of conveying its concern to MSNBC’s leaders when some hosts and guests criticized Israel as the Hamas attack was unfolding on Oct. 7, according to three people with knowledge of the discussions. An abrupt course correction to that coverage followed.

This account of the tensions roiling NBC and its corporate overseers is based on interviews with more than two dozen people with knowledge of the company’s inner workings, almost all of whom insisted on anonymity to share details of internal discussions.

NBC declined to make its top executives available for interviews. The chairman of the NBCUniversal News Group, Cesar Conde, has said he wants his division — which encompasses MSNBC, CNBC, a digital streaming service, Telemundo and journalistic stalwarts like “Nightly News,” “Meet the Press” and “Today” — to be a big tent.

Yet his recent efforts to include more conservative voices on the airwaves generated newsroom suspicion and ultimately led to an embarrassing rebellion over the hiring of Ronna McDaniel, a former Republican Party chair who aided Mr. Trump’s attempt to overturn his 2020 election loss.

MSNBC hosts, for their part, view their role in the political debate as more important than ever. They dismiss the accusation that MSNBC is a “Fox News for Democrats” and say their message — that Mr. Trump’s candidacy represents a unique and clear threat to democracy — is an urgent one for the electorate to hear.

And executives inside NBC’s corporate suites at Rockefeller Center say they are confident that viewers know the differences between the company’s various news brands. Any related challenges, they argue, are of a high-class sort — because their cable channels give NBC an advantage in relevance and revenue over its original Big Three competitors, ABC and CBS, which have no cable presence.

“Our strategy is built on our distinct, complementary brands including NBC News, CNBC, NBC News Now, MSNBC and Telemundo,” the NBCUniversal News Group said in a statement. “That has driven our performance as the nation’s leading news organization with the largest reach.” (Comcast does not disclose the news division’s earnings in its reports to Wall Street.)

The tensions inside NBC are, in some ways, a microcosm of the challenges facing many traditional news organizations as the country hurtles toward a tense presidential election: how to maintain trust and present neutral, fact-based reporting in a fractionalized era when partisanship carries vast financial and cultural rewards.

But the company’s challenge is also unique. It must juggle a broadcast news operation bound by traditional standards of impartiality and a cable channel increasingly bound by the partisan preferences of an intensely loyal viewership. How NBC navigates these dueling imperatives will have important implications for Comcast, a Philadelphia-based conglomerate known for its aversion to the political spotlight.

It will also have consequences for coverage of the presidential campaign. Where MSNBC’s cable news opinion-makers sustain and galvanize the Democratic faithful, the NBC broadcast network reaches millions of the potentially persuadable voters critical to both parties, which have sought to turn NBC’s internal tensions to their own advantage.

Left, Right, Left

MSNBC has caused corporate headaches since its inception.

NBC formed the channel as a joint venture with Microsoft in 1996 with the hope that it would thrust “all the value of NBC News into the cable world,” as Tom Rogers, a former NBC executive who helped found the cable network, described it in an interview.

But critics mocked the new 24-hour channel for its informal approach to news, mixing NBC’s biggest stars with younger personalities on a set reminiscent of Central Perk on “Friends.” It was almost immediately outflanked by Fox News, which followed MSNBC to market that same year and rose to the top of the cable news ratings as the first 24-hour TV channel with an overt political appeal.

MSNBC struggled with its identity. It moved to the left ahead of the Iraq war — and later moved right by hiring new hosts like the former Republican congressman Joe Scarborough. Soon it shifted leftward again, as the host Keith Olbermann hit a nerve with his strident anti-Bush — and often anti-Fox — commentary.

But when Andrew Lack, a veteran producer, took over NBC’s news division in 2015, he decided the channel needed to tone down its partisan image. Under Mr. Lack — who oversaw MSNBC’s creation in an earlier NBC stint — the cable network bumped the Rev. Al Sharpton from the weekday schedule, hired the former Fox anchor Greta Van Susteren and added more straightforward news programs, including a daily version of “Meet the Press,” NBC’s flagship political show, with Chuck Todd.

Mr. Todd was game — but would come to believe that his MSNBC duties ultimately hurt the “Meet the Press” franchise, several people at NBC said in interviews. The daily version of the show fell increasingly out of step with MSNBC’s partisan slant even as Republicans used its association with the liberal cable network to deny interview requests from the flagship Sunday edition of “Meet the Press.”

Then, Mr. Trump’s ascent shocked the Democratic base and spiked viewership of Ms. Maddow and other left-leaning hosts, whose programs became a kind of televised safe space. MSNBC’s ratings surged .

Conde Faces the Messiness

Mr. Conde succeeded Mr. Lack in spring 2020. A Wharton-trained business executive who sits on the boards of Walmart and PepsiCo, he came up through the corporate side of news, having led a turnaround at Telemundo after serving as the president of Univision Networks. Accordingly, Mr. Conde was expected to impose a more disciplined and neater corporate sensibility to the division.

He was almost immediately confronted by the messiness he had inherited.

Within a few weeks of Mr. Conde’s ascension, Mr. Trump attacked NBC when it announced the hiring of a new contributor: Lisa Page, a former F.B.I. lawyer who became a lightning rod on the right for her role in the investigation into his campaign ties to Russia. After an initial MSNBC appearance she did not show up again.

A few months later, NBC faced criticism from the other direction when it booked Mr. Trump for a prime-time interview on the night of a presidential debate that he had boycotted. (Mr. Biden was appearing at the same time on ABC.) Ms. Maddow chastised her bosses about it on the air.

That sort of partisan tumult has often riled another important constituency for Mr. Conde: NBC’s affiliated regional stations, which the company relies on to carry its major news programs to markets throughout the country.

The stations tend to be deeply embedded — and deeply trusted — in their communities. Many of them operate in red states or counties and chafed whenever MSNBC, which Mr. Trump regularly calls “MSDNC,” drew conservative ire.

Over the years the affiliates, many of which would have been thrilled to see MSNBC’s leftward tilt abandoned entirely, increasingly urged NBC executives to better distinguish its content from the NBC journalism like “Today” and “Nightly News” that they carried on their stations.

At one point after Mr. Conde took over, executives talked about the possibility of doubling down on partisanship and stripping MSNBC of news altogether, defining it as a pure opinion channel. The company would use the new NBC News Now streaming service, started under Noah Oppenheim when he was NBC News president, for 24-hour news, according to two people with knowledge of the conversations.

That idea fizzled. Mr. Conde was not prepared to entirely abandon news, but he began to better distinguish the various parts of his news division — which effectively moved MSNBC and NBC News further apart.

In the Lack era, Mr. Oppenheim of NBC News and Phil Griffin, the longtime chief of MSNBC, often worked closely as they managed a collection of stars who worked for both networks, like Mr. Todd, Craig Melvin and Hallie Jackson.

Creating more distance between the cable and broadcast outlets, Mr. Conde and Mr. Griffin’s successor, Rashida Jones, moved Mr. Todd, Ms. Jackson and Mr. Melvin off MSNBC to work exclusively at NBC News and NBC News Now. MSNBC’s daytime block of hard news shrank to six hours from eight, as the cable network extended by an hour each two opinion shows with loyal followings: “Morning Joe” featuring Mr. Scarborough and his wife Mika Brzezinski, and “Deadline: White House” with Nicolle Wallace as host.

Nothing did more to signal that MSNBC was more tightly embracing its partisan direction than Ms. Jones’s decision to hire Ms. Psaki and another Biden aide, Symone D. Sanders, straight from the White House.

It was the kind of revolving-door hiring that liberal pundits used to criticize when it happened with Fox News and the Trump administration.

It also created an awkward situation for the NBC News White House team, which was caught off guard when word that Ms. Psaki was in talks for the job leaked while she was still serving as White House press secretary.

A tense, televised confrontation followed in the White House briefing room when Kristen Welker, then NBC News’s co-chief White House correspondent, asked her future colleague: “How is it ethical to have these conversations with media outlets while you continue to have a job standing behind that podium?”

Chasing a Broad Appeal

At the same time, NBC News was going through its own changes.

Early last year, Mr. Oppenheim left his post running NBC News, and Mr. Conde split his job in three. In a jigsaw-like structure, one executive now oversaw “Today,” another “Nightly News” and NBC News Now, and a third “Meet the Press,” “Dateline” and news coverage across numerous shows and platforms.

Mr. Conde said the new setup would provide “growth opportunities,” with each show acting like its own megafranchise. “Today,” for instance, includes an e-commerce business and online sites dedicated to cooking, wellness and books.

He gave his deputies another brief: making additional efforts to ensure that news coverage reflected a wider range of political viewpoints.

Mr. Conde wanted to get Republicans back onto shows.

That was in line with an industrywide recalibration. After four years of combat between the press and Mr. Trump, media companies have sought better ways to reach Trump supporters who feel alienated from mainstream news. Television executives were also concerned that Republican elected officials were shunning their shows in favor of the congenial confines of right-wing media.

It was especially thorny for NBC, as Mr. Trump continued to yoke NBC News to MSNBC while accusing them, along with Comcast, of committing “Country Threatening Treason.”

A chance for a fresh start seemed to come last September when Ms. Welker succeeded Mr. Todd as the moderator of “Meet the Press.”

According to several people with knowledge of the internal discussions, Mr. Conde and Ms. Welker agreed that she should make booking both Mr. Trump and Mr. Biden for interviews a priority. Mr. Biden declined; Mr. Trump accepted.

But when Mr. Conde said she should schedule the Trump interview for her debut episode, Ms. Welker disagreed. Questioning the mendacious former president can be a high-wire act for even the most experienced TV interviewers, and Ms. Welker did not think it was a wise way to introduce herself to viewers. She acquiesced only after coaxing from Mr. Conde and several of his deputies.

Ms. Welker worked to fact-check Mr. Trump in real time while also eliciting an admission that he ignored his own campaign lawyers when they told him there was no evidence the 2020 presidential election results were rigged. Mr. Trump steamrolled ahead with a litany of lies nonetheless. The interview was panned on social media — complete with a “#boycottmeetthepress” campaign — but was deemed a success by Mr. Conde.

Mr. Conde and Rebecca Blumenstein, a former editor at The New York Times whom Mr. Conde hired as one of his top deputies, also worked aggressively to secure a Republican primary debate in fall 2023, pitching Ms. McDaniel and other Republican officials in person.

They succeeded, but only after accepting terms that unsettled some journalists within the company. NBC agreed to include a moderator from a right-wing media company, Salem Radio, and stream the debate live on Rumble, a video site that frequently hosts pro-Nazi and other extremist content. (NBC executives have defended the decision, noting that Rumble was already the party’s official streamer and had no editorial input.)

The debate received good marks in the press. And in general, red-state affiliates felt that Mr. Conde was doing a better job of bringing balance to NBC News, according to an executive at one company that owns affiliates.

Reverberations Continue

Each network was now set on its own distinct course: MSNBC toward more partisan and progressive opinion, and NBC News toward Mr. Conde’s commitment to “presenting our audiences with a widely diverse set of viewpoints and experiences,” as he put it.

But each tripped over the limits of its approach in an election landscape already littered with ideological tripwires.

When Hamas staged its terror attack against Israel on Oct. 7, MSNBC mixed breaking news of the attacks with discussions about the historical backdrop of Israel’s treatment of Palestinians. The coverage reflected views on the left — and presaged the pro-Palestinian demonstrations that would soon grow in number — but it struck many others as discordant, or even offensive, given that the violence was still coming into view.

“I love this network, but I’ve got to ask: Who’s writing your scripts? Hamas?” Jonathan Greenblatt, the Anti-Defamation League chief executive, asked two days later on “Morning Joe.”

Some of the blowback came from within.

In a call with Mr. Conde, Michael Cavanagh, the president of Comcast, who oversees NBC, shared concerns about that initial coverage, according to three people with knowledge of the discussions. Mr. Conde harbored the same concerns, according to a person briefed on their conversation, and he directed MSNBC to be more circumspect and to focus on facts, not opinions, in those initial days.

Five months later, Mr. Conde thought he had achieved a milestone at NBC News in his efforts to integrate right-wing perspectives into its programming. At the recommendation of Ms. Blumenstein and Carrie Budoff Brown, who oversees political coverage, Mr. Conde hired Ms. McDaniel, the former Republican Party chair, as a contributor who could offer on-air commentary.

If the hiring was in service of Mr. Conde’s goal of adding balance, it came as an unwelcome surprise to NBC’s ranks of correspondents, hosts and anchors. Ms. Welker had booked Ms. McDaniel for her next episode of “Meet the Press” — as a guest, not as a colleague. In the interview, she grilled Ms. McDaniel about her role in Mr. Trump’s effort to overturn the 2020 election result, actions that many at NBC and MSNBC viewed as disqualifying for a job there.

Mr. Todd, appearing as a guest on that day’s episode, unleashed a live, on-air denunciation of his bosses after the interview that left the control room in stunned silence. His rebellion carried over the next day on MSNBC, from “Morning Joe” up through “The Rachel Maddow Show.” Under pressure, Mr. Conde broke the deal with Ms. McDaniel, a move that only served to upset the Republicans he was trying to attract.

In the aftermath, NBC’s public stumble turned into a point of contention on the presidential campaign trail. The Republican Party said it was weighing an attempt to restrict NBC News at this summer’s convention, while Mr. Trump yet again bashed “Fake News NBC.”

Aides to Mr. Biden were also perturbed about the McDaniel hire, viewing it as part of a broader attempt by NBC News to overcompensate for MSNBC’s decidedly pro-Biden stance. In private conversations with NBC correspondents, Biden aides have argued that “Nightly News,” whose huge audience is of critical political importance to the campaign, was taking it easy on Mr. Trump and treating Mr. Biden too harshly.

Executives at NBC dismissed these complaints, saying the partisan brickbats simply come with the territory. They believe that each campaign will use anything at its disposal to pressure news organizations for more favorable coverage.

The company pointed to comments made by Mr. Conde after the McDaniel imbroglio: “We will redouble our efforts to seek voices that represent different parts of the political spectrum.” It also shared data intended to show strong performance across its cable, broadcast and online operations.

The message was clear. Regardless of any turbulence, NBC has no plans to change course.

Jim Rutenberg is a writer at large for The Times and The New York Times Magazine and writes most often about media and politics. More about Jim Rutenberg

Michael M. Grynbaum writes about the intersection of media, politics and culture. He has been a media correspondent at The Times since 2016. More about Michael M. Grynbaum

COMMENTS

  1. Assignment of Accounts Receivable: Meaning, Considerations

    Assignment of accounts receivable is a lending agreement, often long term , between a borrowing company and a lending institution whereby the borrower assigns specific customer accounts that owe ...

  2. Assignment of accounts receivable

    Under an assignment of arrangement, a pays a in exchange for the borrower assigning certain of its receivable accounts to the lender. If the borrower does not repay the , the lender has the right to collect the assigned receivables. The receivables are not actually sold to the lender, which means that the borrower retains the of not collecting ...

  3. The Difference Between Assignment of Receivables & Factoring of

    Assigning your accounts receivables means that you use them as collateral for a secured loan. The financial institution, such as a bank or loan company, analyzes the accounts receivable aging report.

  4. Assignment of Accounts Receivable: The Essential Guide

    Assigning accounts receivable is a fairly straightforward business financing option where a company receives a loan using its outstanding invoices as collateral. It is a form of asset-based financing. In general assignment, the company uses all accounts receivable as collateral. In specific assignment, the borrower only puts up select invoices ...

  5. Assignment of Accounts Receivable: Definition, Benefits ...

    Assignment of accounts receivable is a financial arrangement in which a borrower transfers their accounts receivable, the amounts owed by customers for goods or services provided, to a lending institution as collateral for a loan. This method allows businesses to access immediate cash flow by leveraging their outstanding invoices.

  6. Assignment of Accounts Receivable Journal Entries

    The assignment of accounts receivable journal entries are based on the following information: Accounts receivable 50,000 on 45 days terms. Assignment fee of 1% (500) Initial advance of 80% (40,000) Cash received from customers 6,000. Interest on advances at 9%, outstanding on average for 40 days (40,000 x 9% x 40 / 365 = 395)

  7. What is the purpose of assigning accounts receivable?

    Assigning a specific account receivable usually results in recording the receivable in a separate general ledger account such as Accounts Receivable Assigned. Some lenders require that the corporation's customer be notified of the assignment and that the customer must remit the receivable amount directly to the bank.

  8. Notice of Assignment Explained

    A Notice of Assignment (NOA) for accounts receivables is an essential legal document in the financial world. It serves as a formal notification that a business's rights to certain accounts receivable have been transferred or assigned to another party. This third party, often a lending institution or a factoring company, then has the right to ...

  9. What is the Assignment of Accounts Receivable?

    Assignment of accounts receivable is a financing arrangement in which a company uses its accounts receivable as collateral to obtain a loan or financing from a financial institution or a lender. In this arrangement, the company "assigns" or transfers the rights to collect payments from the outstanding accounts receivable to the lender. ...

  10. Understanding an assignment and assumption agreement

    An assignment and assumption agreement is used after a contract is signed, in order to transfer one of the contracting party's rights and obligations to a third party who was not originally a party to the contract. The party making the assignment is called the assignor, while the third party accepting the assignment is known as the assignee.

  11. Debt Assignment: How They Work, Considerations and Benefits

    Debt Assignment: A transfer of debt, and all the rights and obligations associated with it, from a creditor to a third party . Debt assignment may occur with both individual debts and business ...

  12. Account Assignment

    Use. You can assign one or more account assignments to an item. Multiple account assignment allows you to apportion the costs covered by a purchase order partly to your own cost center and partly to others, for example. You specify which account assignment object is to be charged via the account assignment category. Account Assignment Category.

  13. What is a Notice of Assignment? (Invoice Factoring)

    A Notice of Assignment (NOA) is a document that factoring companies send to the end-customers of their clients. This document informs end-customers of the factoring financing relationship. Clients usually have some concerns when they learn that a factor will notify their customers. This article addresses these concerns and explains how the NOA ...

  14. SAP CO Account Assignment Tutorial

    Welcome to the tutorial about SAP CO Account Assignment. This tutorial is part of our free SAP CO training. You will learn how account assignment works in SAP ERP and what are different sources of information about account assignment that the SAP system uses. Normally, when a financial document is entered in SAP FI module, user has the option ...

  15. What is Account assignment in SAP FICO

    Account assignment is a critical aspect of financial accounting and management in any organization. It refers to the process of allocating financial transactions to specific cost or profit centers, projects, or business processes.

  16. Account Assignment

    The account assignment category determines: The nature of the account assignment (cost center, sales order, and so on) Which accounts are to be charged when the incoming invoice or goods receipt is posted. Which account assignment data you must provide. Account Assignment Categories. Description. Required account assignment data.

  17. PDF GOVERNMENT OF PAKISTAN nizionam

    Assignment account shall be opened only in the jurisdiction of AGPR/sub-office of the AGPIVAG and DAD concerned. The location of assignment account and profit center must be same. The cheque book of Assignment Account for the Public Account shall be got printed by AGPR Islamabad in a color different from other assignment accounts. 5.

  18. CS107 Assignment 5: Banking on Security

    A few reminders: The working on assignments page contains info about the assignment process.; The collaboration policy page outlines permitted assignment collaboration, emphasizing that you are to do your own independent thinking, design, writing, and debugging. Even without any code being submitted, you should not be doing any joint debugging/development, sharing or copying written answers ...

  19. PDF Asaan Account Local Currency 2020

    Asaan Account Local Currency 2020. Title. Asaan_Account_Local_Currency_2020. Created Date. 10/27/2020 11:13:05 AM.

  20. Account Assignment

    Automatic Account Assignment. The system attempts to suggest a specific G/L account for a given preliminary account assignment. The number of the G/L account to be charged can be automatically suggested by the system provided that automatic account determination has been defined for the chart of accounts of the relevant company code.

  21. How do I create and track Assignments?

    2.9K. The Assignments feature allows Premium members to assign specific worksheets, games or exercises to their students.The student can complete the assignment digitally and submit it for you to review. The Assignments manager can be found under your Premium user ID in the top right-hand corner.

  22. Iowa Code § 554.9209

    This section does not apply to an assignment constituting the sale of an account, chattel paper, or payment intangible. Iowa Code § 554.9209. Amended by 2024 Iowa SF 2389,s 51, eff. 7/1/2024. 2000 Acts, ch 1149, §19, 187. Referred to in §554.9625. This section is set out more than once due to postponed, multiple, or conflicting amendments.

  23. Account Assignment

    This site uses cookies and related technologies, as described in our privacy statement, for purposes that may include site operation, analytics, enhanced user experience, or advertising.You may choose to manage your own preferences.

  24. Impact of sex used for assignment of reference intervals in a

    1 Legal sex cannot be changed directly by patient; any changes in legal sex must be done by authorized users following hospital policy. Gender identity and sex assigned at birth can be left blank, whereas legal sex must be one of the three options. There is option to auto-fill sex gender identity and sex assigned at birth by selecting either cisgender female or cisgender male.

  25. How MSNBC's Leftward Tilt Delivers Ratings, and Complications

    This account of the tensions roiling NBC and its corporate overseers is based on interviews with more than two dozen people with knowledge of the company's inner workings, almost all of whom ...