Sachverhalt:
A.
A.a. Die 1962 geborene A._ meldete sich am 2. August 2010 bei der Invalidenversicherung zum Leistungsbezug an. Nach Abklärungen sprach die IV-Stelle des Kantons Aargau der Versicherten mit Verfügungen vom 16. Mai 2014 ab 1. Mai 2011 eine ganze Rente, ab 1. April 2013 eine Dreiviertelsrente und ab 1. Mai 2013 eine Viertelsrente zu.
A.b. Die Versicherte arbeitete schon seit dem 3. Juli 2013 zu rund 20 % bei der B._ AG und seit 1. September 2013 zu 60 % beim Alters- und Pflegeheim C._ (nachfolgend: C._). Am 5. Dezember 2017 hatte sie zusätzlich im Pensum von rund 20 % bei der D._ AG zu arbeiten begonnen. Diese Stelle wurde ihr per Ende Oktober 2018 aus organisatorischen Gründen gekündigt.
A.c. Im April 2018 hatte die neu zuständige IV-Stelle Solothurn eine Rentenrevision eingeleitet. Nach Abklärungen hob sie die bisherige Viertelsrente mit Verfügung vom 21. Januar 2019 rückwirkend ab 1. Januar 2017 auf. Am 15. Februar 2019 verfügte sie die Rückforderung der bis Ende Oktober 2018 zu Unrecht bezogenen Leistungen.
B.
Die gegen die Verwaltungsverfügungen erhobenen Beschwerden hiess das Versicherungsgericht des Kantons Solothurn (nach Vereinigung der beiden Verfahren) mit Entscheid vom 12. Februar 2020 teilweise gut. Es hob die Viertelsrente rückwirkend ab 1. April 2018 auf und ordnete die zu Unrecht bezogenen Leistungen im Umfang von Fr. 4592.- an.
C.
A._ lässt mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragen, der Entscheid vom 12. Februar 2020 sowie die Verfügungen vom 21. Januar und 15. Februar 2019 seien aufzuheben; zudem sei ihr weiterhin mindestens eine Viertelsrente auszurichten und von einer Rückforderung der Invalidenleistungen vollumfänglich abzusehen.
D.
Die IV-Stelle Solothurn lässt ihrerseits mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragen, der angefochtene Entscheid sei aufzuheben und es sei festzustellen, dass per 1. Januar 2017 kein Rentenanspruch mehr bestehe.

Erwägungen:
1.
Da den beiden Beschwerden der gleiche Sachverhalt zugrunde liegt und die Rechtsmittel sich gegen den nämlichen Entscheid des Versicherungsgerichts des Kantons Solothurn vom 12. Februar 2020 richten, rechtfertigt es sich, die beiden Verfahren 9C_199/2020 und 9C_207/2020 zu vereinigen und in einem Urteil zu erledigen (<ref-law> [SR 273] i.V.m. <ref-law>).
2.
2.1. Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann eine Rechtsverletzung nach Art. 95 f. BGG gerügt werden. Das Bundesgericht wendet das Recht von Amtes wegen an (<ref-law>). Dennoch prüft es - offensichtliche Fehler vorbehalten - nur die in seinem Verfahren gerügten Rechtsmängel (Art. 42 Abs. 1 f. BGG; <ref-ruling> E. 2.2.1 S. 389). Es legt seinem Urteil den Sachverhalt zugrunde, den die Vorinstanz festgestellt hat (<ref-law>). Es kann ihre Sachverhaltsfeststellung von Amtes wegen berichtigen oder ergänzen, wenn sie offensichtlich unrichtig ist oder auf einer Rechtsverletzung im Sinne von <ref-law> beruht und wenn die Behebung des Mangels für den Verfahrensausgang entscheidend sein kann (Art. 97 Abs. 1 und Art. 105 Abs. 2 BGG).
2.2. Eine Sachverhaltsfeststellung ist nicht schon dann offensichtlich unrichtig, wenn sich Zweifel anmelden, sondern erst, wenn sie eindeutig und augenfällig unzutreffend ist. Eine offensichtlich unrichtige Sachverhaltsfeststellung weist damit die Tragweite von Willkür auf. Es liegt noch keine offensichtliche Unrichtigkeit vor, nur weil eine andere Lösung ebenfalls in Betracht fällt, selbst wenn diese als die plausiblere erscheint. Eine Sachverhaltsfeststellung ist etwa dann offensichtlich unrichtig, wenn das kantonale Gericht den Sinn und die Tragweite eines Beweismittels offensichtlich falsch eingeschätzt, ohne sachlichen Grund ein wichtiges und für den Ausgang des Verfahrens entscheidendes Beweismittel nicht beachtet oder aus den abgenommenen Beweisen unhaltbare Schlüsse gezogen hat (<ref-ruling> E. 4.2 S. 53 mit Hinweisen; Urteil 9C_752/2018 vom 12. April 2019 E. 1.2).
3.
3.1. Die Vorinstanz hat gestützt auf den Stellenantritt der Versicherten vom 5. Dezember 2017 bei der D._ AG einen Revisionsgrund im Sinne von <ref-law> angenommen, den Invaliditätsgrad neu ermittelt und den Rentenanspruch ab 1. April 2018 verneint. Den Stellenverlust bei der D._ AG per 31. Oktober 2018 hat sie dagegen nicht als Revisionsgrund qualifiziert. Sie hat eine Meldepflichtverletzung durch die Versicherte festgestellt und Rentenbeträge im Umfang von Fr. 4592.- zurückgefordert.
3.2. Strittig und damit zu prüfen ist, ob das kantonale Gericht zu Recht auf einen Revisionsgrund geschlossen und die bisherige Viertelsrente rückwirkend ab 1. April 2018 aufgehoben hat. Trifft dies zu, ist die Rückforderung im Betrag von Fr. 4592.- infolge Verletzung der Meldepflicht zu Recht erfolgt, was unbestritten und nicht weiter in Frage zu stellen ist.
4.
Das kantonale Gericht hat die massgebenden Rechtsgrundlagen korrekt dargelegt. Darauf wird verwiesen.
5.
5.1. Die Frage, ob eine Veränderung geeignet ist, einen Revisionsgrund nach <ref-law> darzustellen, ist eine vom Bundesgericht frei überprüfbare Rechtsfrage (vgl. E. 2).
5.1.1. Die Versicherte war seit Juli 2013 bei der B._ AG und seit September 2013 beim C._ angestellt, wobei ihr Pensum insgesamt rund 80 % betrug. Am 5. Dezember 2017 nahm sie zusätzlich dazu bei der D._ AG eine Stelle im Pensum von rund 20 % an. Entgegen ihrer Ansicht ist dieser Stellenantritt sehr wohl geeignet, ihren bisherigen Anspruch auf eine Viertelsrente zu beeinflussen. Die Versicherte übte die Tätigkeit fast ein Jahr lang aus. Aus dem Umstand, dass ihr bei der Aufhebung der Rente mit Verfügung vom 21. Januar 2019 längst gekündigt worden war, kann sie nichts zu ihren Gunsten ableiten. Konkrete Anhaltspunkte, dass diese Arbeit ihr nicht zumutbar gewesen wäre, lagen zu keinem Zeitpunkt vor. Der unsubstanziierte Verweis auf die in Anspruch genommene Dritthilfe vermag daran nichts zu ändern. Insbesondere nach Ablauf von drei Monaten (vgl. <ref-law>) durfte davon ausgegangen werden, dass die Veränderung voraussichtlich weiterhin andauern würde. Die Vorinstanz hat somit kein Bundesrecht verletzt, indem sie den Stellenantritt bei der D._ AG als Revisionsgrund qualifiziert und den Rentenanspruch überprüft hat. Auf weitere Abklärungen durfte sie in zulässiger antizipierter Beweiswürdigung (<ref-ruling> E. 5.3 S. 236; <ref-ruling> E. 4b S. 94) und damit ohne Verletzung des Untersuchungsgrundsatzes verzichten.
5.1.2. Unter Anrechnung des Einkommens bei der D._ AG resultiert unbestritten kein rentenbegründender Invaliditätsgrad mehr. Bei ebenfalls unstrittiger Meldepflichtverletzung, jedoch mit Blick auf die bis zum Stellenantritt aus medizinischer Sicht attestierte zumutbare Arbeitsfähigkeit von 80 % in leidensangepasster Tätigkeit, hat die Vorinstanz die Rentenaufhebung zu Recht unter Berücksichtigung von <ref-law> ab 1. April 2018 (vgl. zum Ablauf der drei Monate statt vieler das Urteil 8C_220/2018 vom 14. November 2018 E. 5.3) vorgenommen. Eine Aufhebung vor diesem Zeitpunkt, insbesondere vor Antritt der Stelle bei der D._ AG, kommt in der vorliegenden Konstellation nicht in Frage (vgl. zum Verhältnis von Art. 88a und Art. 88bis IVV das Urteil 8C_232/2016 vom 30. September 2016 E. 4, insb. 4.3, mit Hinweisen).
5.2. Wie die Versicherte korrekt vorbringt, kann auch der Wegfall einer Stelle grundsätzlich geeignet sein, den Invaliditätsgrad und damit den Rentenanspruch zu beeinflussen, und bildet damit einen Revisionsgrund nach <ref-law>. So erfordert die Annahme eines Revisionsgrundes nicht zwingend eine Veränderung des Gesundheitszustandes (vgl. <ref-ruling> E. 2.3 S. 10 f.). Ob sich der Invaliditätsgrad durch den Wegfall der Stelle bei der D._ AG in einer für den Anspruch erheblichen Weise verändert hat, ist nachfolgend zu prüfen.
6.
6.1.
6.1.1. Bei der Ermittlung des Invalideneinkommens setzt die Berücksichtigung des tatsächlich erzielten Verdienstes unter anderem voraus, dass die versicherte Person ihre verbliebene Arbeitsfähigkeit in zumutbarer Weise voll ausschöpft. Dies ist dann nicht der Fall, wenn sie auf dem hypothetischen ausgeglichenen Arbeitsmarkt (<ref-law>) einen höheren als den tatsächlich erhaltenen Lohn erzielen könnte (<ref-ruling> E. 5.2 S. 301; Urteil 8C_631/2019 vom 18. Dezember 2019 E. 6). Hat die versicherte Person nach Eintritt des Gesundheitsschadens keine oder jedenfalls keine ihr an sich zumutbare neue Erwerbstätigkeit aufgenommen, so können nach der Rechtsprechung die Tabellenlöhne gemäss den vom Bundesamt für Statistik (BFS) periodisch herausgegebenen Lohnstrukturerhebungen (LSE) herangezogen werden (<ref-ruling> E. 2.2 S. 296 f.).
6.1.2. Soweit die Versicherte aus dem Verlust der Stelle bei der D._ AG den Schluss zieht, dass das Invalideneinkommen ab diesem Zeitpunkt wieder gestützt auf ein zumutbares Pensum von 80 % zu ermitteln sei, kann ihr nicht gefolgt werden: Ab der Stellenaufnahme bei der D._ AG im Dezember 2017 ist die Vorinstanz von einer Arbeitsfähigkeit von 100 % in leidensangepasster (wenn nicht sogar in angestammter) Tätigkeit ausgegangen (vgl. vorinstanzliche Erwägungen II. 10.3 f. S. 12 f.). Diese Feststellung ist weder offensichtlich unrichtig noch beruht sie auf einer Rechtsverletzung (vgl. E. 2). Die Versicherte hat ihre Erwerbsfähigkeit von 100 % während rund 11 Monaten unter Beweis gestellt und es bestehen - wie bereits dargelegt (E. 5.2.1) - keine Hinweise auf eine Unzumutbarkeit aus gesundheitlichen Gründen. Insbesondere erfolgte auch der Stellenverlust nicht krankheitsbedingt. Damit ist der Versicherten auch nach dem Verlust der Stelle bei der D._ AG weiterhin ein vollzeitliches Pensum in leidensangepasster Tätigkeit anzurechnen. Da sie dieses mit den Tätigkeiten in der B._ AG und im C._ (total rund 80 %) nicht mehr ausschöpfe, ist das Invalideneinkommen gestützt auf LSE-Tabellenlöhne zu ermitteln. Offen gelassen werden kann damit die Frage nach dem Einkommen beim C._.
Im Jahr 2018 verdienten Frauen im Kompetenzniveau 1 durchschnittlich Fr. 4371.- (Tabelle TA1_tirage_skill_level, Frauen, Total, 2018). Dies entspricht einem Jahreseinkommen von Fr. 52'452.-. Angepasst an die betriebsübliche Arbeitszeit von 41.7 Wochenstunden (BFS, Betriebsübliche Arbeitszeit nach Wirtschaftsabteilungen, in Stunden pro Woche, Total, 2018) resultiert ein Invalideneinkommen von Fr. 54'681.20 (52'452.- x 41.7/40).
6.2. Bei einer Gegenüberstellung des Invalideneinkommens von Fr. 54'681.20 mit dem vom kantonalen Gericht für das Jahr 2018 ermittelten Valideneinkommen von Fr. 79'469.- (vorinstanzliche Erwägung II. 8.3 S. 9) resultiert eine Einkommenseinbusse von Fr. 24'787.80 (79'469.- - 54'681.20), was einem Invaliditätsgrad von 31 % (24'787.80/79'469.-, zur Rundung <ref-ruling>) entspricht. Eine für den Anspruch erhebliche Veränderung resultiert demnach auch mit dem Verlust der Stelle bei der D._ AG nicht. Es hat damit im Ergebnis beim angefochtenen Entscheid sein Bewenden. Offen bleiben kann die seitens der IV-Stelle gerügte Höhe des Valideneinkommens bei der E._ AG.
7.
Sind nach dem Gesagten die gegen den Entscheid des Versicherungsgerichts des Kantons Solothurn vom 12. Februar 2020 gerichteten Beschwerden abzuweisen, sind die Gerichtskosten von den Parteien zu gleichen Teilen zu tragen (<ref-law>). Bei diesem Verfahrensausgang besteht kein Anspruch auf Parteientschädigung.

Demnach erkennt das Bundesgericht:
1.
Die Verfahren 9C_199/2020 und 9C_207/2020 werden vereinigt.
2.
Die Beschwerden werden abgewiesen.
3.
Die Gerichtskosten von Fr. 1600.- werden den Parteien je hälftig auferlegt.
4.
Dieses Urteil wird den Parteien, dem Versicherungsgericht des Kantons Solothurn und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 10. Juli 2020
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Das präsidierende Mitglied: Meyer
Die Gerichtsschreiberin: Nünlist